From df0df6048a611ffcf4a7693a65ec6cfd420a135a Mon Sep 17 00:00:00 2001 From: MDietermann Date: Sun, 28 Jun 2026 21:02:48 +0200 Subject: [PATCH] Split configuration.nix and home.nix into per-domain modules Break the two monolithic files into focused modules under system/ and home/ so each concern (boot, networking, xserver, picom, zsh, git, rofi, etc.) lives in its own file. Clean up duplicates: drop rofi from home.packages since programs.rofi.enable already installs it, and move user-only apps (alacritty, obsidian, claude-code) from environment.systemPackages to home.packages. Remove commented-out boilerplate carried over from the install template. --- configuration.nix | 132 +++++-------------------------------- home.nix | 85 ++++-------------------- home/fonts.nix | 5 ++ home/git.nix | 11 ++++ home/packages.nix | 21 ++++++ home/rofi.nix | 19 ++++++ home/symlinks.nix | 10 +++ home/yazi.nix | 5 ++ home/zsh.nix | 25 +++++++ system/boot.nix | 6 ++ system/display-manager.nix | 5 ++ system/fonts.nix | 7 ++ system/locale.nix | 5 ++ system/networking.nix | 6 ++ system/nix.nix | 6 ++ system/packages.nix | 10 +++ system/picom.nix | 9 +++ system/programs.nix | 7 ++ system/ssh.nix | 5 ++ system/users.nix | 12 ++++ system/xserver.nix | 28 ++++++++ 21 files changed, 231 insertions(+), 188 deletions(-) create mode 100644 home/fonts.nix create mode 100644 home/git.nix create mode 100644 home/packages.nix create mode 100644 home/rofi.nix create mode 100644 home/symlinks.nix create mode 100644 home/yazi.nix create mode 100644 home/zsh.nix create mode 100644 system/boot.nix create mode 100644 system/display-manager.nix create mode 100644 system/fonts.nix create mode 100644 system/locale.nix create mode 100644 system/networking.nix create mode 100644 system/nix.nix create mode 100644 system/packages.nix create mode 100644 system/picom.nix create mode 100644 system/programs.nix create mode 100644 system/ssh.nix create mode 100644 system/users.nix create mode 100644 system/xserver.nix diff --git a/configuration.nix b/configuration.nix index 895d692..82b3dc3 100644 --- a/configuration.nix +++ b/configuration.nix @@ -1,121 +1,21 @@ -{ config, lib, pkgs, ... }: +{ ... }: { - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ]; - - # Use the systemd-boot EFI boot loader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - networking.hostName = "hivebrain"; # Define your hostname. - - # Configure network connections interactively with nmcli or nmtui. - networking.networkmanager.enable = true; - - # Set your time zone. - time.timeZone = "Europe/Berlin"; - - # Select internationalisation properties. - # i18n.defaultLocale = "en_US.UTF-8"; - # console = { - # font = "Lat2-Terminus16"; - # keyMap = "de"; - # useXkbConfig = true; # use xkb.options in tty. - # }; - - # Enable the X11 windowing system. - # services.xserver.enable = true; - - services.xserver = { - enable = true; - autoRepeatDelay = 200; - autoRepeatInterval = 35; - windowManager.qtile.enable = true; - displayManager.sessionCommands = '' - xwallpaper --zoom ~/nixos-dotfiles/Pictures/NixOsWallpaper.png - ''; - xrandrHeads = [ - { - output = "HDMI-1"; - monitorConfig = '' - Option "Position" "0 0" - ''; - } - { - output = "DP-1"; - primary = true; - monitorConfig = '' - Option "Position" "1920 0" - ''; - } - ]; - }; - - services.displayManager.ly.enable = true; - - services.picom = { - enable = true; - backend = "xrender"; - fade = true; - }; - - fonts.packages = with pkgs; [ - jetbrains-mono + imports = [ + ./hardware-configuration.nix + ./system/boot.nix + ./system/networking.nix + ./system/locale.nix + ./system/xserver.nix + ./system/picom.nix + ./system/display-manager.nix + ./system/fonts.nix + ./system/users.nix + ./system/programs.nix + ./system/packages.nix + ./system/ssh.nix + ./system/nix.nix ]; - # Enable sound. - # services.pulseaudio.enable = true; - # OR - # services.pipewire = { - # enable = true; - # pulse.enable = true; - # }; - - nixpkgs.config.allowUnfree = true; - - # Define a user account. Don't forget to set a password with ‘passwd’. - users.users.marvin = { - isNormalUser = true; - extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. - shell = pkgs.zsh; - packages = with pkgs; [ - tree - ]; - }; - - programs.firefox.enable = true; - programs.zsh.enable = true; - - # List packages installed in system profile. - # You can use https://search.nixos.org/ to find more packages (and options). - environment.systemPackages = with pkgs; [ - vim - wget - alacritty - btop - obsidian - claude-code - jq # used by the Claude vault bootstrap.sh to parse settings.json - ]; - - nix.settings.experimental-features = ["nix-command" "flakes"]; - - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - # programs.mtr.enable = true; - # programs.gnupg.agent = { - # enable = true; - # enableSSHSupport = true; - # }; - - # List services that you want to enable: - - # Enable the OpenSSH daemon. - services.openssh.enable = true; - - system.stateVersion = "26.05"; + system.stateVersion = "26.05"; } - diff --git a/home.nix b/home.nix index 8a785fa..2e3c9b7 100644 --- a/home.nix +++ b/home.nix @@ -1,76 +1,17 @@ -{ config, pkgs, lib, ... }: +{ ... }: { - home.username = "marvin"; - home.homeDirectory = "/home/marvin"; - home.stateVersion = "26.05"; - programs = { - yazi.enable = true; + imports = [ + ./home/zsh.nix + ./home/git.nix + ./home/rofi.nix + ./home/yazi.nix + ./home/packages.nix + ./home/symlinks.nix + ./home/fonts.nix + ]; - git = { - enable = true; - settings.user = { - name = "MDietermann"; - email = "marvin.dietermann@hive-brain.de"; - }; - }; - - rofi = { - enable = true; - theme = "arthur"; - font = "sans-serif"; - package = pkgs.rofi; - modes = [ - "drun" - "run" - "window" - "ssh" - ]; - extraConfig = { - show-icons = true; - }; - }; - - zsh = { - enable = true; - enableCompletion = true; - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - - history.size = 10000; - history.ignoreAllDups = true; - history.path = "$HOME/.zsh_history"; - - oh-my-zsh = { - enable = true; - plugins = [ "git" "sudo" ]; - theme = "aussiegeek"; - }; - - shellAliases = { - btw = "echo I use NixOS"; - reload-nixos = "sudo nixos-rebuild switch --flake ~/nixos-dotfiles#hivebrain"; - }; - }; - }; - - home.file = lib.mapAttrs' - (name: _: lib.nameValuePair ".config/${name}" { - source = config.lib.file.mkOutOfStoreSymlink - "${config.home.homeDirectory}/nixos-dotfiles/config/${name}"; - }) - (lib.filterAttrs (_: type: type == "directory") (builtins.readDir ./config)); - - home.packages = with pkgs; [ - neovim - ripgrep - nil - nixpkgs-fmt - nodejs - gcc - rofi - xwallpaper - steam - unzip - ]; + home.username = "marvin"; + home.homeDirectory = "/home/marvin"; + home.stateVersion = "26.05"; } diff --git a/home/fonts.nix b/home/fonts.nix new file mode 100644 index 0000000..e6b1827 --- /dev/null +++ b/home/fonts.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + fonts.fontconfig.enable = true; +} diff --git a/home/git.nix b/home/git.nix new file mode 100644 index 0000000..2b8436f --- /dev/null +++ b/home/git.nix @@ -0,0 +1,11 @@ +{ ... }: + +{ + programs.git = { + enable = true; + settings.user = { + name = "MDietermann"; + email = "marvin.dietermann@hive-brain.de"; + }; + }; +} diff --git a/home/packages.nix b/home/packages.nix new file mode 100644 index 0000000..c725e40 --- /dev/null +++ b/home/packages.nix @@ -0,0 +1,21 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs; [ + alacritty + claude-code + gcc + lua-language-server + neovim + nerd-fonts.jetbrains-mono + nil + nixpkgs-fmt + nodejs + obsidian + ripgrep + rustup + steam + unzip + xwallpaper + ]; +} diff --git a/home/rofi.nix b/home/rofi.nix new file mode 100644 index 0000000..2187c9e --- /dev/null +++ b/home/rofi.nix @@ -0,0 +1,19 @@ +{ pkgs, ... }: + +{ + programs.rofi = { + enable = true; + theme = "arthur"; + font = "sans-serif"; + package = pkgs.rofi; + modes = [ + "drun" + "run" + "window" + "ssh" + ]; + extraConfig = { + show-icons = true; + }; + }; +} diff --git a/home/symlinks.nix b/home/symlinks.nix new file mode 100644 index 0000000..077dd3d --- /dev/null +++ b/home/symlinks.nix @@ -0,0 +1,10 @@ +{ config, lib, ... }: + +{ + home.file = lib.mapAttrs' + (name: _: lib.nameValuePair ".config/${name}" { + source = config.lib.file.mkOutOfStoreSymlink + "${config.home.homeDirectory}/nixos-dotfiles/config/${name}"; + }) + (lib.filterAttrs (_: type: type == "directory") (builtins.readDir ../config)); +} diff --git a/home/yazi.nix b/home/yazi.nix new file mode 100644 index 0000000..a77bd30 --- /dev/null +++ b/home/yazi.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + programs.yazi.enable = true; +} diff --git a/home/zsh.nix b/home/zsh.nix new file mode 100644 index 0000000..3f16f48 --- /dev/null +++ b/home/zsh.nix @@ -0,0 +1,25 @@ +{ ... }: + +{ + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + history.size = 10000; + history.ignoreAllDups = true; + history.path = "$HOME/.zsh_history"; + + oh-my-zsh = { + enable = true; + plugins = [ "git" "sudo" ]; + theme = "aussiegeek"; + }; + + shellAliases = { + btw = "echo I use NixOS"; + reload-nixos = "sudo nixos-rebuild switch --flake ~/nixos-dotfiles#hivebrain"; + }; + }; +} diff --git a/system/boot.nix b/system/boot.nix new file mode 100644 index 0000000..cba18ae --- /dev/null +++ b/system/boot.nix @@ -0,0 +1,6 @@ +{ ... }: + +{ + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; +} diff --git a/system/display-manager.nix b/system/display-manager.nix new file mode 100644 index 0000000..b4159fb --- /dev/null +++ b/system/display-manager.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + services.displayManager.ly.enable = true; +} diff --git a/system/fonts.nix b/system/fonts.nix new file mode 100644 index 0000000..177484c --- /dev/null +++ b/system/fonts.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + fonts.packages = with pkgs; [ + jetbrains-mono + ]; +} diff --git a/system/locale.nix b/system/locale.nix new file mode 100644 index 0000000..f1d5712 --- /dev/null +++ b/system/locale.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + time.timeZone = "Europe/Berlin"; +} diff --git a/system/networking.nix b/system/networking.nix new file mode 100644 index 0000000..85fe14c --- /dev/null +++ b/system/networking.nix @@ -0,0 +1,6 @@ +{ ... }: + +{ + networking.hostName = "hivebrain"; + networking.networkmanager.enable = true; +} diff --git a/system/nix.nix b/system/nix.nix new file mode 100644 index 0000000..88d2b4a --- /dev/null +++ b/system/nix.nix @@ -0,0 +1,6 @@ +{ ... }: + +{ + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + nixpkgs.config.allowUnfree = true; +} diff --git a/system/packages.nix b/system/packages.nix new file mode 100644 index 0000000..9ce5ef1 --- /dev/null +++ b/system/packages.nix @@ -0,0 +1,10 @@ +{ pkgs, ... }: + +{ + environment.systemPackages = with pkgs; [ + vim + wget + btop + jq + ]; +} diff --git a/system/picom.nix b/system/picom.nix new file mode 100644 index 0000000..769b960 --- /dev/null +++ b/system/picom.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + services.picom = { + enable = true; + backend = "xrender"; + fade = true; + }; +} diff --git a/system/programs.nix b/system/programs.nix new file mode 100644 index 0000000..c823d1c --- /dev/null +++ b/system/programs.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + programs.firefox.enable = true; + programs.zsh.enable = true; + programs.nix-ld.enable = true; +} diff --git a/system/ssh.nix b/system/ssh.nix new file mode 100644 index 0000000..f29c3fe --- /dev/null +++ b/system/ssh.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + services.openssh.enable = true; +} diff --git a/system/users.nix b/system/users.nix new file mode 100644 index 0000000..e891491 --- /dev/null +++ b/system/users.nix @@ -0,0 +1,12 @@ +{ pkgs, ... }: + +{ + users.users.marvin = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + shell = pkgs.zsh; + packages = with pkgs; [ + tree + ]; + }; +} diff --git a/system/xserver.nix b/system/xserver.nix new file mode 100644 index 0000000..833d82e --- /dev/null +++ b/system/xserver.nix @@ -0,0 +1,28 @@ +{ ... }: + +{ + services.xserver = { + enable = true; + autoRepeatDelay = 200; + autoRepeatInterval = 35; + windowManager.qtile.enable = true; + displayManager.sessionCommands = '' + xwallpaper --zoom ~/nixos-dotfiles/Pictures/NixOsWallpaper.png + ''; + xrandrHeads = [ + { + output = "HDMI-1"; + monitorConfig = '' + Option "Position" "0 0" + ''; + } + { + output = "DP-1"; + primary = true; + monitorConfig = '' + Option "Position" "1920 0" + ''; + } + ]; + }; +}