From 35623910b0507eee054c4014632cffdf2ae8c385 Mon Sep 17 00:00:00 2001 From: Hare Date: Sat, 28 Feb 2026 19:42:36 +0900 Subject: [PATCH] feat: multiple user --- hosts/arcadia/default.nix | 8 ++- .../{home-manager.nix => hare/default.nix} | 26 +++---- hosts/default.nix | 2 +- hosts/fungus/default.nix | 8 ++- .../{home-manager.nix => hare/default.nix} | 15 ++-- hosts/mkHost.nix | 69 +++++++++++-------- hosts/x1carbon/default.nix | 8 ++- .../{home-manager.nix => hare/default.nix} | 16 ++--- 8 files changed, 86 insertions(+), 66 deletions(-) rename hosts/arcadia/{home-manager.nix => hare/default.nix} (77%) rename hosts/fungus/{home-manager.nix => hare/default.nix} (54%) rename hosts/x1carbon/{home-manager.nix => hare/default.nix} (77%) diff --git a/hosts/arcadia/default.nix b/hosts/arcadia/default.nix index cf858d5..3a96f57 100644 --- a/hosts/arcadia/default.nix +++ b/hosts/arcadia/default.nix @@ -5,7 +5,11 @@ in mkHost { system = "x86_64-linux"; hostname = "Arcadia"; - username = "hare"; + users = [ + { + username = "hare"; + homeModule = [ ./hare ]; + } + ]; systemModules = [ ./nixos.nix ]; - homeModule = [ ./home-manager.nix ]; } diff --git a/hosts/arcadia/home-manager.nix b/hosts/arcadia/hare/default.nix similarity index 77% rename from hosts/arcadia/home-manager.nix rename to hosts/arcadia/hare/default.nix index 654936b..b906d1e 100644 --- a/hosts/arcadia/home-manager.nix +++ b/hosts/arcadia/hare/default.nix @@ -8,19 +8,19 @@ home.stateVersion = "25.05"; imports = [ inputs.nix-index-database.homeModules.nix-index - ./display.nix - ../../home-manager/tofi.nix - ../../home-manager/hyprland - ../../home-manager/fnott.nix - ../../home-manager/wezterm - ../../home-manager/fish - ../../home-manager/vscode.nix - ../../home-manager/direnv.nix - ../../home-manager/firefox.nix - ../../home-manager/obs-studio.nix - ../../home-manager/zeditor.nix - ../../home-manager/blender.nix - ../../home-manager/voicevox.nix + ../display.nix + ../../../home-manager/tofi.nix + ../../../home-manager/hyprland + ../../../home-manager/fnott.nix + ../../../home-manager/wezterm + ../../../home-manager/fish + ../../../home-manager/vscode.nix + ../../../home-manager/direnv.nix + ../../../home-manager/firefox.nix + ../../../home-manager/obs-studio.nix + ../../../home-manager/zeditor.nix + ../../../home-manager/blender.nix + ../../../home-manager/voicevox.nix ]; hare.hyprland = { input.sensitivity = -1.0; diff --git a/hosts/default.nix b/hosts/default.nix index 03b5daf..09a9938 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -6,5 +6,5 @@ rec { fungus = import ./fungus inputs; }; nixos = builtins.mapAttrs (_: host: host.nixos) hosts; - home-manager = builtins.mapAttrs (_: host: host.home-manager) hosts; + home-manager = builtins.foldl' (a: b: a // b) { } (map (h: h.home-manager) (builtins.attrValues hosts)); } diff --git a/hosts/fungus/default.nix b/hosts/fungus/default.nix index d2909a4..8457138 100644 --- a/hosts/fungus/default.nix +++ b/hosts/fungus/default.nix @@ -5,7 +5,11 @@ in mkHost { system = "x86_64-linux"; hostname = "Fungus"; - username = "hare"; + users = [ + { + username = "hare"; + homeModule = [ ./hare ]; + } + ]; systemModules = [ ./nixos.nix ]; - homeModule = [ ./home-manager.nix ]; } diff --git a/hosts/fungus/home-manager.nix b/hosts/fungus/hare/default.nix similarity index 54% rename from hosts/fungus/home-manager.nix rename to hosts/fungus/hare/default.nix index 909492b..ed6d331 100644 --- a/hosts/fungus/home-manager.nix +++ b/hosts/fungus/hare/default.nix @@ -1,17 +1,16 @@ -{ conifg, pkgs, ... }: +{ pkgs, ... }: { home.stateVersion = "25.05"; imports = [ - ../../home-manager/direnv.nix - ../../home-manager/wezterm - ../../home-manager/fish - ]; - home.packages = with pkgs; [ + ../../../home-manager/direnv.nix + ../../../home-manager/wezterm + ../../../home-manager/fish ]; + home.packages = with pkgs; [ ]; programs.git = { enable = true; - userName = "Hare"; - userEmail = "kei.hiracchi.0928@gmail.com"; + settings.user.name = "Hare"; + settings.user.email = "kei.hiracchi.0928@gmail.com"; }; fonts = { diff --git a/hosts/mkHost.nix b/hosts/mkHost.nix index c5929c4..5a7a314 100644 --- a/hosts/mkHost.nix +++ b/hosts/mkHost.nix @@ -2,47 +2,56 @@ inputs: { system, hostname, - username, + users, systemModules, - homeModule, }: +let + pkgs = import inputs.nixpkgs { + inherit system; + config.allowUnfree = true; + }; +in { nixos = inputs.nixpkgs.lib.nixosSystem { modules = systemModules ++ [ { - users.users.${username} = { - isNormalUser = true; - description = ""; - extraGroups = [ - "networkmanager" - "wheel" - ]; - }; + users.users = builtins.listToAttrs (map (u: { + name = u.username; + value = { + isNormalUser = true; + description = ""; + extraGroups = [ + "networkmanager" + "wheel" + ]; + }; + }) users); } ]; inherit system; specialArgs = { - inherit inputs hostname username; + inherit inputs hostname; + username = (builtins.head users).username; }; }; - home-manager = inputs.home-manager.lib.homeManagerConfiguration { - pkgs = import inputs.nixpkgs { - inherit system; - config.allowUnfree = true; + home-manager = builtins.listToAttrs (map (u: { + name = "${u.username}@${hostname}"; + value = inputs.home-manager.lib.homeManagerConfiguration { + inherit pkgs; + extraSpecialArgs = { + inherit inputs hostname; + username = u.username; + }; + modules = [ + { + home = { + username = u.username; + homeDirectory = "/home/${u.username}"; + }; + programs.home-manager.enable = true; + } + (import ../system/home-manager) + ] ++ u.homeModule; }; - extraSpecialArgs = { - inherit inputs hostname username; - }; - modules = [ - { - home = { - inherit username; - homeDirectory = "/home/${username}"; - }; - programs.home-manager.enable = true; - } - (import ../system/home-manager) - ] - ++ homeModule; - }; + }) users); } diff --git a/hosts/x1carbon/default.nix b/hosts/x1carbon/default.nix index b184f44..5f3249f 100644 --- a/hosts/x1carbon/default.nix +++ b/hosts/x1carbon/default.nix @@ -5,7 +5,11 @@ in mkHost { system = "x86_64-linux"; hostname = "x1carbon"; - username = "hare"; + users = [ + { + username = "hare"; + homeModule = [ ./hare ]; + } + ]; systemModules = [ ./nixos.nix ]; - homeModule = [ ./home-manager.nix ]; } diff --git a/hosts/x1carbon/home-manager.nix b/hosts/x1carbon/hare/default.nix similarity index 77% rename from hosts/x1carbon/home-manager.nix rename to hosts/x1carbon/hare/default.nix index 6305a26..9df1921 100644 --- a/hosts/x1carbon/home-manager.nix +++ b/hosts/x1carbon/hare/default.nix @@ -7,16 +7,16 @@ { home.stateVersion = "25.05"; imports = [ - ../../home-manager/hyprland - ../../home-manager/tofi.nix - ../../home-manager/fnott.nix - ../../home-manager/direnv.nix - ../../home-manager/obs-studio.nix - ../../home-manager/wezterm - ../../home-manager/fish + ../../../home-manager/hyprland + ../../../home-manager/tofi.nix + ../../../home-manager/fnott.nix + ../../../home-manager/direnv.nix + ../../../home-manager/obs-studio.nix + ../../../home-manager/wezterm + ../../../home-manager/fish ]; hare.hyprland = { - style = import ../../home-manager/hyprland/styles/thin.nix { inherit lib; }; + style = import ../../../home-manager/hyprland/styles/thin.nix { inherit lib; }; input.sensitivity = -0.6; wallpaperCommand = "swww img /usr/share/wallpaper/"; };