diff options
| author | Tim Keller <tjk@tjkeller.xyz> | 2026-05-11 17:20:52 -0500 |
|---|---|---|
| committer | Tim Keller <tjk@tjkeller.xyz> | 2026-05-11 17:20:52 -0500 |
| commit | 4e4ec16117af9dbf1043e8b9e82e908e0efbfa75 (patch) | |
| tree | 235e7a77f52e380720ebc6f7d7491ea87f421530 | |
| parent | 9c851cb90d57ec2d2f4041cba3b684974d462231 (diff) | |
| download | nixos-standalone-home.tar.xz nixos-standalone-home.zip | |
new standalone home-manager config in flakestandalone-home
| -rw-r--r-- | flake.nix | 43 | ||||
| -rw-r--r-- | hosts/libreX60/home-timmy/configuration.nix | 8 | ||||
| -rw-r--r-- | lib/home-manager/default.nix | 3 | ||||
| -rw-r--r-- | lib/home-manager/mkprofile.nix | 9 | ||||
| -rw-r--r-- | lib/mkprofile.nix | 10 | ||||
| -rw-r--r-- | users/default-home.nix | 5 |
6 files changed, 66 insertions, 12 deletions
@@ -23,8 +23,14 @@ rec { }; }; - outputs = { nixpkgs, ... }@inputs: let + outputs = { nixpkgs, home-manager, ... }@inputs: let extLib = nixpkgs.lib.extend (final: prev: import ./lib); + extLibHomeManagerStandalone = nixpkgs.lib.extend (final: prev: import ./lib/home-manager); + homeManagerModules = [ + inputs.arkenfox.hmModules.arkenfox + inputs.reposync.hmModules.reposync + ./home-manager + ]; mkNixosConfiguration = system: hostname: nixpkgs.lib.nixosSystem { inherit system; specialArgs = { @@ -40,16 +46,12 @@ rec { ./pkgs ./users inputs.sops-nix.nixosModules.sops - inputs.home-manager.nixosModules.home-manager { + home-manager.nixosModules.home-manager { home-manager = { backupFileExtension = "backup"; # In case file is overwritten useGlobalPkgs = true; useUserPackages = true; - sharedModules = [ - inputs.arkenfox.hmModules.arkenfox - inputs.reposync.hmModules.reposync - ./home-manager - ]; + sharedModules = homeManagerModules; }; } ]; @@ -62,6 +64,28 @@ rec { }) hostsBySystem.${system} ) (builtins.attrNames hostsBySystem) ); + mkHomeConfiguration = user: system: hostname: home-manager.lib.homeManagerConfiguration { + pkgs = nixpkgs.legacyPackages.${system}; + extraSpecialArgs = { + inherit inputs; + inherit hostname; + lib = extLibHomeManagerStandalone; + }; + modules = homeManagerModules ++ [ + ./hosts/${hostname}/home-${user}/configuration.nix + ./archetypes/profiles + ./pkgs + ./users/default-home.nix + ]; + }; + mkHomeConfigurations = hostsBySystem: builtins.listToAttrs ( + builtins.concatMap (system: + map (host: { + name = host; + value = mkHomeConfiguration "timmy" system host; # TODO + }) hostsBySystem.${system} + ) (builtins.attrNames hostsBySystem) + ); in { # Configured system hostnames go here under their respective system architecture nixosConfigurations = mkNixosConfigurations { @@ -78,5 +102,10 @@ rec { "piframe" ]; }; + homeConfigurations = mkHomeConfigurations { + x86_64-linux = [ + "libreX60" + ]; + }; }; } diff --git a/hosts/libreX60/home-timmy/configuration.nix b/hosts/libreX60/home-timmy/configuration.nix new file mode 100644 index 0000000..a5f064c --- /dev/null +++ b/hosts/libreX60/home-timmy/configuration.nix @@ -0,0 +1,8 @@ +{ + imports = [ ../home.nix ]; + + targets.genericLinux.enable = true; + + _archetypes.profiles.desktop.enable = true; + _users.timmy.home.enable = true; +} diff --git a/lib/home-manager/default.nix b/lib/home-manager/default.nix new file mode 100644 index 0000000..01801a2 --- /dev/null +++ b/lib/home-manager/default.nix @@ -0,0 +1,3 @@ +{ + _mkProfileArchetype = import ./mkprofile.nix; +} diff --git a/lib/home-manager/mkprofile.nix b/lib/home-manager/mkprofile.nix new file mode 100644 index 0000000..dae4d60 --- /dev/null +++ b/lib/home-manager/mkprofile.nix @@ -0,0 +1,9 @@ +profileName: nixosConfig: homeConfig: { config, lib, ... }: let + cfg = config._archetypes.profiles.${profileName}; +in { + options._archetypes.profiles.${profileName} = { + enable = lib.mkEnableOption "enable (standalone) home-manager profile ${profileName} for the configured user"; + }; + + config = lib.mkIf cfg.enable (lib.mkMerge [ homeConfig ]); +} diff --git a/lib/mkprofile.nix b/lib/mkprofile.nix index ec851de..c8cfe12 100644 --- a/lib/mkprofile.nix +++ b/lib/mkprofile.nix @@ -8,11 +8,11 @@ in { options._archetypes.profiles.${profileName} = { enable = lib.mkEnableOption "enable nixos profile ${profileName}"; home.users = lib.mkOption { - type = lib.types.attrsOf (lib.types.submodule { - options = { - enable = lib.mkEnableOption "home-manager profile ${profileName} for user"; - }; - }); + type = lib.types.attrsOf (lib.types.submodule { + options = { + enable = lib.mkEnableOption "home-manager profile ${profileName} for user"; + }; + }); default = {}; description = "enable home-manager profile ${profileName} for user the specified user"; }; diff --git a/users/default-home.nix b/users/default-home.nix new file mode 100644 index 0000000..d0cc18b --- /dev/null +++ b/users/default-home.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./timmy/home.nix + ] +} |
