diff --git a/flake.nix b/flake.nix index 78f3fe1..5572101 100644 --- a/flake.nix +++ b/flake.nix @@ -6,6 +6,10 @@ nixpkgs-unstable.url = "github:/NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:/NixOS/nixpkgs/nixos-unstable"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; impermanence.url = "github:nix-community/impermanence"; flake-utils.url = "github:numtide/flake-utils"; mailserver.url = "gitlab:/simple-nixos-mailserver/nixos-mailserver"; diff --git a/services/home.nix b/services/home.nix new file mode 100644 index 0000000..48e3f0e --- /dev/null +++ b/services/home.nix @@ -0,0 +1,45 @@ +{ + lib, + fn, + pkgs, + config, + home-manager, + ... +}: +with lib; +{ + imports = [ + home-manager.nixosModules.home-manager + ]; +} +// mkIf (elem "home" config.machine.services) { + home-manager = { + users = + let + homeFiles = fn.lsfRec (toString ./home) true; + in + listToAttrs ( + map (user: { + name = user.name; + value = + { pkgs, ... }: + { + home.stateVersion = "25.05"; + imports = homeFiles; + }; + }) config.machine.users + ); + extraSpecialArgs = { + inherit (config.machine) pkgsets; + # config.machine.users as set (user name as key) + users = ( + listToAttrs ( + map (user: { + name = user.name; + value = user; + }) config.machine.users + ) + ); + }; + }; +} diff --git a/services/home/kdeconnect.nix b/services/home/kdeconnect.nix new file mode 100644 index 0000000..661dab0 --- /dev/null +++ b/services/home/kdeconnect.nix @@ -0,0 +1,10 @@ +{ + config, + lib, + users, + ... +}: + +lib.mkIf (lib.elem "kdeconnect" users."${config.home.username}".services) { + services.kdeconnect.enable = true; +} diff --git a/services/home/userPackages.nix b/services/home/userPackages.nix new file mode 100644 index 0000000..9b72228 --- /dev/null +++ b/services/home/userPackages.nix @@ -0,0 +1,16 @@ +{ + lib, + config, + users, + pkgsets, + ... +}: + +let + user = users."${config.home.username}"; +in +lib.mkIf (user ? pkgs) { + home.packages = lib.flatten ( + map (setName: lib.optionals (pkgsets ? "${setName}") pkgsets."${setName}".pkgwrap) user.pkgs + ); +}