diff --git a/hosts/default.nix b/hosts/default.nix index 7d824a3..fb18e47 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -21,7 +21,7 @@ let { host, system, - profile ? null, + profiles ? [ ], extraModules ? [ ], }: assert lib.assertMsg (lib.elem system config.systems) @@ -32,9 +32,9 @@ let { nixpkgs.config.allowUnfree = true; } - ../profiles/${profile}.nix ./${host}/default.nix ] + ++ map (p: ../profiles/${p}.nix) profiles ++ extraModules; specialArgs = { inherit inputs username unstable; }; }; @@ -44,8 +44,11 @@ in nix-example = mkSystem { host = "nix-example"; system = "x86_64-linux"; - profile = "base"; - extraModules = [ ]; + profiles = [ + "interfaces/cli-interactive" + "platforms/vm" + "workloads/dev" + ]; }; }; } diff --git a/profiles/base.nix b/profiles/base.nix deleted file mode 100644 index de6a54b..0000000 --- a/profiles/base.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - pkgs, - username, - ... -}: -{ - imports = [ - ../modules/system/boot - ../modules/system/caches.nix - ../modules/system/gc.nix - ../modules/system/hardware - ../modules/system/network - ]; - - programs = { - zsh.enable = true; - gnupg.agent = { - enable = true; - enableSSHSupport = false; - }; - }; - - environment.systemPackages = with pkgs; [ - htop - btop # Simple Terminal Based System Monitor - unrar # Tool For Handling .rar Files - unzip # Tool For Handling .zip Files - wget # Tool For Fetching Files With Links - curl # Tool For Fetching Files With Links - git # Version Control System - unstable.msedit # Microsoft Editor - ]; - - home-manager.users.${username}.imports = [ - ]; -} diff --git a/profiles/cli-minimal.nix b/profiles/cli-minimal.nix deleted file mode 100644 index 40eacc6..0000000 --- a/profiles/cli-minimal.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ - pkgs, - username, - ... -}: -{ - imports = [ - ./base.nix - ]; - programs = { - java = { - enable = true; - package = pkgs.jdk25; - }; - }; - - environment.systemPackages = with pkgs; [ - nil # Nix Language Server - python312 # Python 3.12 - uv # Universal Virtual Environment Manager For Python - bun # A Fast JavaScript Runtime Like Node.js And Deno - unstable.claude-code # Anthropic's AI Assistant - unstable.codex # OpenAI's Code Generation Model - unstable.opencode # Coding AI Assistant - ]; - - home-manager.users.${username}.imports = [ ]; -} diff --git a/profiles/cli-vm.nix b/profiles/cli-vm.nix deleted file mode 100644 index db2bd7e..0000000 --- a/profiles/cli-vm.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ username, ... }: -{ - imports = [ - ./cli-minimal.nix - ]; - home-manager.users.${username}.imports = [ ]; -} diff --git a/profiles/desktop.nix b/profiles/desktop.nix deleted file mode 100644 index d105aab..0000000 --- a/profiles/desktop.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ username, ... }: -{ - imports = [ - ./gui.nix - ]; - home-manager.users.${username}.imports = [ ]; -} diff --git a/profiles/gui.nix b/profiles/gui.nix deleted file mode 100644 index 2c2a556..0000000 --- a/profiles/gui.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - pkgs, - username, - ... -}: -{ - imports = [ - ./cli-minimal.nix - ../modules/system/hardware/gui.nix - ../modules/system/camera.nix - ../modules/system/fonts.nix - ../modules/applications/greetd.nix - ../modules/applications/fcitx5.nix - ../modules/applications/kde.nix - ]; - - my.applications = { - niri.enable = true; - noctalia.enable = true; - wayland.enable = true; - }; - - programs = { - dconf.enable = true; - seahorse.enable = true; - }; - - environment.systemPackages = with pkgs; [ - tuigreet # The Login Manager (Sometimes Referred To As Display Manager) - fuzzel # A Simple And Lightweight Application Launcher - ]; - - home-manager.users.${username}.imports = [ ]; -} diff --git a/profiles/interfaces/cli-interactive.nix b/profiles/interfaces/cli-interactive.nix index e69de29..6703a38 100644 --- a/profiles/interfaces/cli-interactive.nix +++ b/profiles/interfaces/cli-interactive.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./cli-minimal.nix + ]; + + my.features.cli.interactive.enable = true; +} diff --git a/profiles/interfaces/cli-minimal.nix b/profiles/interfaces/cli-minimal.nix index e69de29..e3f2f38 100644 --- a/profiles/interfaces/cli-minimal.nix +++ b/profiles/interfaces/cli-minimal.nix @@ -0,0 +1,9 @@ +{ + my.features = { + cli = { + base.enable = true; + shell.enable = true; + }; + identity.sshDefaultKey.enable = true; + }; +} diff --git a/profiles/interfaces/gui.nix b/profiles/interfaces/gui.nix index e69de29..25f3e5f 100644 --- a/profiles/interfaces/gui.nix +++ b/profiles/interfaces/gui.nix @@ -0,0 +1,18 @@ +{ + imports = [ + ./cli-interactive.nix + ]; + + my.features = { + gui = { + desktop.enable = true; + terminal.enable = true; + audio.enable = true; + jpInput.enable = true; + graphic.enable = true; + capture.enable = true; + fileManager.enable = true; + }; + services.kde.enable = true; + }; +} diff --git a/profiles/laptop.nix b/profiles/laptop.nix deleted file mode 100644 index 3dde5db..0000000 --- a/profiles/laptop.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - pkgs, - username, - ... -}: -{ - imports = [ - ./gui.nix - ../modules/system/hardware/bluetooth.nix - ../modules/system/fingerprint.nix - ../modules/system/network/wifi.nix - ../modules/system/power.nix - ]; - - environment.systemPackages = with pkgs; [ - tailscale # Zero-Config VPN - sbctl # Secure Boot Key Management Tool - ]; - - home-manager.users.${username}.imports = [ ]; -} diff --git a/profiles/platforms/desktop.nix b/profiles/platforms/desktop.nix index e69de29..395d7d0 100644 --- a/profiles/platforms/desktop.nix +++ b/profiles/platforms/desktop.nix @@ -0,0 +1,3 @@ +{ + my.features.boot.uefi.enable = true; +} diff --git a/profiles/platforms/laptop.nix b/profiles/platforms/laptop.nix index e69de29..20f357a 100644 --- a/profiles/platforms/laptop.nix +++ b/profiles/platforms/laptop.nix @@ -0,0 +1,12 @@ +{ + my.features = { + boot.power.enable = true; + connect = { + wifi.enable = true; + bluetooth.enable = true; + }; + gui.camera.enable = true; + identity.fingerprint.enable = true; + network.tailscale.enable = true; + }; +} diff --git a/profiles/platforms/thinkpad.nix b/profiles/platforms/thinkpad.nix index e69de29..a33c6dd 100644 --- a/profiles/platforms/thinkpad.nix +++ b/profiles/platforms/thinkpad.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./laptop.nix + ]; + + my.features.boot.secureBoot.enable = true; +} diff --git a/profiles/platforms/vm.nix b/profiles/platforms/vm.nix index e69de29..f95077f 100644 --- a/profiles/platforms/vm.nix +++ b/profiles/platforms/vm.nix @@ -0,0 +1,6 @@ +{ + my.features = { + boot.uefi.enable = true; + storage.nfsClient.enable = true; + }; +} diff --git a/profiles/workloads/dev.nix b/profiles/workloads/dev.nix index e69de29..72376c7 100644 --- a/profiles/workloads/dev.nix +++ b/profiles/workloads/dev.nix @@ -0,0 +1,13 @@ +{ + my.features = { + dev = { + agent.enable = true; + nix.enable = true; + python.enable = true; + bun.enable = true; + java.enable = true; + }; + gui.editor.enable = true; + services.container.enable = true; + }; +} diff --git a/profiles/workloads/ops.nix b/profiles/workloads/ops.nix deleted file mode 100644 index e69de29..0000000 diff --git a/profiles/workloads/personal.nix b/profiles/workloads/personal.nix new file mode 100644 index 0000000..1b9da2a --- /dev/null +++ b/profiles/workloads/personal.nix @@ -0,0 +1,6 @@ +{ + my.features.application = { + browser.enable = true; + communication.enable = true; + }; +} diff --git a/profiles/workloads/srv.nix b/profiles/workloads/srv.nix index e69de29..f0c433c 100644 --- a/profiles/workloads/srv.nix +++ b/profiles/workloads/srv.nix @@ -0,0 +1,7 @@ +{ + my.features = { + cli.base.sshServer = true; + network.tailscale.enable = true; + services.container.enable = true; + }; +}