From 8207ccbdff0706940a5e101194d22c9c9a65eeec Mon Sep 17 00:00:00 2001 From: Ryan Yin Date: Mon, 23 Mar 2026 12:32:17 +0800 Subject: [PATCH] refactor(home): consolidate host home modules under home/hosts --- home/README.md | 8 +++++++ home/darwin/hosts/default.nix | 4 ---- home/hosts/README.md | 17 +++++++++++++++ .../hosts => hosts/darwin}/darwin-fern.nix | 2 ++ .../hosts => hosts/darwin}/darwin-frieren.nix | 2 ++ .../linux}/12kingdoms-shoukei.nix | 4 ++++ .../{linux/hosts => hosts/linux}/idols-ai.nix | 4 ++++ .../linux}/idols-aquamarine.nix | 0 .../hosts => hosts/linux}/idols-kana.nix | 0 .../hosts => hosts/linux}/idols-ruby.nix | 0 home/hosts/linux/k3s-prod-1-master-1.nix | 3 +++ home/hosts/linux/k3s-test-1-master-1.nix | 3 +++ hosts/README.md | 2 +- outputs/aarch64-darwin/src/fern.nix | 3 +-- outputs/aarch64-darwin/src/frieren.nix | 3 +-- .../aarch64-linux/src/12kingdoms-shoukei.nix | 21 ++++--------------- outputs/x86_64-linux/src/idols-ai.nix | 20 ++++-------------- outputs/x86_64-linux/src/idols-aquamarine.nix | 2 +- outputs/x86_64-linux/src/idols-kana.nix | 2 +- outputs/x86_64-linux/src/idols-ruby.nix | 2 +- .../x86_64-linux/src/k3s-prod-1-master-1.nix | 2 +- .../x86_64-linux/src/k3s-test-1-master-1.nix | 2 +- 22 files changed, 59 insertions(+), 47 deletions(-) delete mode 100644 home/darwin/hosts/default.nix create mode 100644 home/hosts/README.md rename home/{darwin/hosts => hosts/darwin}/darwin-fern.nix (83%) rename home/{darwin/hosts => hosts/darwin}/darwin-frieren.nix (83%) rename home/{linux/hosts => hosts/linux}/12kingdoms-shoukei.nix (78%) rename home/{linux/hosts => hosts/linux}/idols-ai.nix (75%) rename home/{linux/hosts => hosts/linux}/idols-aquamarine.nix (100%) rename home/{linux/hosts => hosts/linux}/idols-kana.nix (100%) rename home/{linux/hosts => hosts/linux}/idols-ruby.nix (100%) create mode 100644 home/hosts/linux/k3s-prod-1-master-1.nix create mode 100644 home/hosts/linux/k3s-test-1-master-1.nix diff --git a/home/README.md b/home/README.md index a7245ba3..f9ab3cea 100644 --- a/home/README.md +++ b/home/README.md @@ -26,6 +26,9 @@ home/ │ │ └── ... │ ├── editors/ # Linux-specific editors │ └── ... +├── hosts/ # Host-specific home manager entry modules +│ ├── linux/ # Linux host home modules (ai, shoukei, k3s-*, etc.) +│ └── darwin/ # macOS host home modules (fern, frieren) └── darwin/ # macOS-specific home manager configurations ├── aerospace/ # macOS window manager ├── proxy/ # Proxy configurations @@ -46,3 +49,8 @@ home/ 3. **darwin**: macOS-specific configuration - macOS applications and services - Platform-specific integrations (Aerospace, Squirrel, etc.) + +4. **hosts**: Host entry modules for Home Manager + - Each output should reference only one host home module file + - Host modules are responsible for importing shared stacks (`home/linux/*` or `home/darwin`) and + applying host overrides diff --git a/home/darwin/hosts/default.nix b/home/darwin/hosts/default.nix deleted file mode 100644 index 049dda93..00000000 --- a/home/darwin/hosts/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ mylib, ... }: -{ - imports = mylib.scanPaths ./.; -} diff --git a/home/hosts/README.md b/home/hosts/README.md new file mode 100644 index 00000000..a526ef72 --- /dev/null +++ b/home/hosts/README.md @@ -0,0 +1,17 @@ +# Host Home Modules + +This directory contains host-specific Home Manager entry modules. + +## Layout + +- `home/hosts/linux/*.nix`: Linux host home modules +- `home/hosts/darwin/*.nix`: macOS host home modules + +## Conventions + +1. Each host output should reference only one file under `home/hosts/...`. +2. Shared home module imports should be handled in the host file itself. + - Linux hosts usually import `../../linux/core.nix` or `../../linux/gui.nix`. + - Darwin hosts import `../../darwin`. +3. Host-specific overrides (SSH keys, desktop toggles, host-local config links) live in the same + host file. diff --git a/home/darwin/hosts/darwin-fern.nix b/home/hosts/darwin/darwin-fern.nix similarity index 83% rename from home/darwin/hosts/darwin-fern.nix rename to home/hosts/darwin/darwin-fern.nix index 89af1a0a..b9ca1a31 100644 --- a/home/darwin/hosts/darwin-fern.nix +++ b/home/hosts/darwin/darwin-fern.nix @@ -3,6 +3,8 @@ let hostName = "fern"; in { + imports = [ ../../darwin ]; + programs.ssh.matchBlocks."github.com".identityFile = "${config.home.homeDirectory}/.ssh/${hostName}"; } diff --git a/home/darwin/hosts/darwin-frieren.nix b/home/hosts/darwin/darwin-frieren.nix similarity index 83% rename from home/darwin/hosts/darwin-frieren.nix rename to home/hosts/darwin/darwin-frieren.nix index cd60e9ca..498fa8a0 100644 --- a/home/darwin/hosts/darwin-frieren.nix +++ b/home/hosts/darwin/darwin-frieren.nix @@ -3,6 +3,8 @@ let hostName = "frieren"; in { + imports = [ ../../darwin ]; + programs.ssh.matchBlocks."github.com".identityFile = "${config.home.homeDirectory}/.ssh/${hostName}"; } diff --git a/home/linux/hosts/12kingdoms-shoukei.nix b/home/hosts/linux/12kingdoms-shoukei.nix similarity index 78% rename from home/linux/hosts/12kingdoms-shoukei.nix rename to home/hosts/linux/12kingdoms-shoukei.nix index 280daafa..1d2bf77e 100644 --- a/home/linux/hosts/12kingdoms-shoukei.nix +++ b/home/hosts/linux/12kingdoms-shoukei.nix @@ -4,9 +4,13 @@ let mkSymlink = config.lib.file.mkOutOfStoreSymlink; in { + imports = [ ../../linux/gui.nix ]; + programs.ssh.matchBlocks."github.com".identityFile = "${config.home.homeDirectory}/.ssh/${hostName}"; + modules.desktop.gaming.enable = false; + modules.desktop.niri.enable = true; modules.desktop.nvidia.enable = false; xdg.configFile."niri/niri-hardware.kdl".source = diff --git a/home/linux/hosts/idols-ai.nix b/home/hosts/linux/idols-ai.nix similarity index 75% rename from home/linux/hosts/idols-ai.nix rename to home/hosts/linux/idols-ai.nix index 503533cf..215d42e3 100644 --- a/home/linux/hosts/idols-ai.nix +++ b/home/hosts/linux/idols-ai.nix @@ -3,8 +3,12 @@ let mkSymlink = config.lib.file.mkOutOfStoreSymlink; in { + imports = [ ../../linux/gui.nix ]; + programs.ssh.matchBlocks."github.com".identityFile = "${config.home.homeDirectory}/.ssh/idols-ai"; + modules.desktop.gaming.enable = true; + modules.desktop.niri.enable = true; modules.desktop.nvidia.enable = true; xdg.configFile."niri/niri-hardware.kdl".source = diff --git a/home/linux/hosts/idols-aquamarine.nix b/home/hosts/linux/idols-aquamarine.nix similarity index 100% rename from home/linux/hosts/idols-aquamarine.nix rename to home/hosts/linux/idols-aquamarine.nix diff --git a/home/linux/hosts/idols-kana.nix b/home/hosts/linux/idols-kana.nix similarity index 100% rename from home/linux/hosts/idols-kana.nix rename to home/hosts/linux/idols-kana.nix diff --git a/home/linux/hosts/idols-ruby.nix b/home/hosts/linux/idols-ruby.nix similarity index 100% rename from home/linux/hosts/idols-ruby.nix rename to home/hosts/linux/idols-ruby.nix diff --git a/home/hosts/linux/k3s-prod-1-master-1.nix b/home/hosts/linux/k3s-prod-1-master-1.nix new file mode 100644 index 00000000..a67103bf --- /dev/null +++ b/home/hosts/linux/k3s-prod-1-master-1.nix @@ -0,0 +1,3 @@ +{ + imports = [ ../../linux/core.nix ]; +} diff --git a/home/hosts/linux/k3s-test-1-master-1.nix b/home/hosts/linux/k3s-test-1-master-1.nix new file mode 100644 index 00000000..a67103bf --- /dev/null +++ b/home/hosts/linux/k3s-test-1-master-1.nix @@ -0,0 +1,3 @@ +{ + imports = [ ../../linux/core.nix ]; +} diff --git a/hosts/README.md b/hosts/README.md index aa6ddfcb..75b0a108 100644 --- a/hosts/README.md +++ b/hosts/README.md @@ -80,7 +80,7 @@ configurations follow similar patterns but are customized for specific hardware 2. Create & add the new host's `hardware-configuration.nix` to the new folder, and add the new host's `configuration.nix` to `hosts//default.nix`. 3. If the new host need to use home-manager, add its custom config into - `home/linux/hosts/.nix` or `home/darwin/hosts/.nix`. + `home/hosts/linux/.nix` or `home/hosts/darwin/.nix`. 1. Under `outputs/` 1. Add a new nix file named `outputs//src/.nix`. 2. Copy the content from one of the existing similar host, and modify it to fit the new host. diff --git a/outputs/aarch64-darwin/src/fern.nix b/outputs/aarch64-darwin/src/fern.nix index 8d2fcf33..2ed5677b 100644 --- a/outputs/aarch64-darwin/src/fern.nix +++ b/outputs/aarch64-darwin/src/fern.nix @@ -29,8 +29,7 @@ let ]; home-modules = map mylib.relativeToRoot [ - "home/darwin/hosts/darwin-${name}.nix" - "home/darwin" + "home/hosts/darwin/darwin-${name}.nix" ]; }; diff --git a/outputs/aarch64-darwin/src/frieren.nix b/outputs/aarch64-darwin/src/frieren.nix index c280df7b..b95aea8e 100644 --- a/outputs/aarch64-darwin/src/frieren.nix +++ b/outputs/aarch64-darwin/src/frieren.nix @@ -28,8 +28,7 @@ let } ]; home-modules = map mylib.relativeToRoot [ - "home/darwin/hosts/darwin-${name}.nix" - "home/darwin" + "home/hosts/darwin/darwin-${name}.nix" ]; }; diff --git a/outputs/aarch64-linux/src/12kingdoms-shoukei.nix b/outputs/aarch64-linux/src/12kingdoms-shoukei.nix index c0fe14be..e70c14e7 100644 --- a/outputs/aarch64-linux/src/12kingdoms-shoukei.nix +++ b/outputs/aarch64-linux/src/12kingdoms-shoukei.nix @@ -36,19 +36,9 @@ let modules.desktop.gaming.enable = false; } ]; - home-modules = - (map mylib.relativeToRoot [ - # common - "home/linux/gui.nix" - # host specific - "home/linux/hosts/12kingdoms-${name}.nix" - ]) - ++ [ - { - # not supported yet - modules.desktop.gaming.enable = false; - } - ]; + home-modules = map mylib.relativeToRoot [ + "home/hosts/linux/12kingdoms-${name}.nix" + ]; }; modules-niri = { @@ -56,10 +46,7 @@ let { programs.niri.enable = true; } ] ++ base-modules.nixos-modules; - home-modules = [ - { modules.desktop.niri.enable = true; } - ] - ++ base-modules.home-modules; + home-modules = base-modules.home-modules; }; in { diff --git a/outputs/x86_64-linux/src/idols-ai.nix b/outputs/x86_64-linux/src/idols-ai.nix index 486dfc4a..350cb4cc 100644 --- a/outputs/x86_64-linux/src/idols-ai.nix +++ b/outputs/x86_64-linux/src/idols-ai.nix @@ -36,18 +36,9 @@ let modules.desktop.gaming.enable = true; } ]; - home-modules = - (map mylib.relativeToRoot [ - # common - "home/linux/gui.nix" - # host specific - "home/linux/hosts/idols-${name}.nix" - ]) - ++ [ - { - modules.desktop.gaming.enable = true; - } - ]; + home-modules = map mylib.relativeToRoot [ + "home/hosts/linux/idols-${name}.nix" + ]; }; modules-niri = { @@ -55,10 +46,7 @@ let { programs.niri.enable = true; } ] ++ base-modules.nixos-modules; - home-modules = [ - { modules.desktop.niri.enable = true; } - ] - ++ base-modules.home-modules; + home-modules = base-modules.home-modules; }; in { diff --git a/outputs/x86_64-linux/src/idols-aquamarine.nix b/outputs/x86_64-linux/src/idols-aquamarine.nix index 03801a52..8ef92b22 100644 --- a/outputs/x86_64-linux/src/idols-aquamarine.nix +++ b/outputs/x86_64-linux/src/idols-aquamarine.nix @@ -36,7 +36,7 @@ let { modules.secrets.server.storage.enable = true; } ]; home-modules = map mylib.relativeToRoot [ - "home/linux/hosts/idols-${name}.nix" + "home/hosts/linux/idols-${name}.nix" ]; }; diff --git a/outputs/x86_64-linux/src/idols-kana.nix b/outputs/x86_64-linux/src/idols-kana.nix index 002860e7..68f9f326 100644 --- a/outputs/x86_64-linux/src/idols-kana.nix +++ b/outputs/x86_64-linux/src/idols-kana.nix @@ -33,7 +33,7 @@ let ]; home-modules = map mylib.relativeToRoot [ # host specific - "home/linux/hosts/idols-${name}.nix" + "home/hosts/linux/idols-${name}.nix" ]; }; diff --git a/outputs/x86_64-linux/src/idols-ruby.nix b/outputs/x86_64-linux/src/idols-ruby.nix index 3df5b2a4..d055dafc 100644 --- a/outputs/x86_64-linux/src/idols-ruby.nix +++ b/outputs/x86_64-linux/src/idols-ruby.nix @@ -33,7 +33,7 @@ let ]; home-modules = map mylib.relativeToRoot [ # host specific - "home/linux/hosts/idols-${name}.nix" + "home/hosts/linux/idols-${name}.nix" ]; }; diff --git a/outputs/x86_64-linux/src/k3s-prod-1-master-1.nix b/outputs/x86_64-linux/src/k3s-prod-1-master-1.nix index a42bcb13..644d4719 100644 --- a/outputs/x86_64-linux/src/k3s-prod-1-master-1.nix +++ b/outputs/x86_64-linux/src/k3s-prod-1-master-1.nix @@ -29,7 +29,7 @@ let { modules.secrets.server.kubernetes.enable = true; } ]; home-modules = map mylib.relativeToRoot [ - "home/linux/core.nix" + "home/hosts/linux/${name}.nix" ]; }; diff --git a/outputs/x86_64-linux/src/k3s-test-1-master-1.nix b/outputs/x86_64-linux/src/k3s-test-1-master-1.nix index b916ebb8..330a3c75 100644 --- a/outputs/x86_64-linux/src/k3s-test-1-master-1.nix +++ b/outputs/x86_64-linux/src/k3s-test-1-master-1.nix @@ -29,7 +29,7 @@ let { modules.secrets.server.kubernetes.enable = true; } ]; home-modules = map mylib.relativeToRoot [ - "home/linux/core.nix" + "home/hosts/linux/${name}.nix" ]; };