From f1de2014dcd426e015a2638222160d9d349ea4e5 Mon Sep 17 00:00:00 2001 From: beeb5k Date: Fri, 6 Mar 2026 18:33:36 +0530 Subject: Init --- lib/mkFlakeOutputs.nix | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) create mode 100644 lib/mkFlakeOutputs.nix (limited to 'lib/mkFlakeOutputs.nix') diff --git a/lib/mkFlakeOutputs.nix b/lib/mkFlakeOutputs.nix new file mode 100644 index 0000000..20952d3 --- /dev/null +++ b/lib/mkFlakeOutputs.nix @@ -0,0 +1,84 @@ +# lib/mkFlakeOutputs.nix +# +# Single file exposing all system/home builder functions. +# Partially apply once in flake.nix with flake-level deps, +# then call whichever helper you need. +{ + nixpkgs, + home-manager, + inputs, +}: +let + importer = import ./importer.nix nixpkgs.lib; + + # Shared: build a NixOS system derivation + buildSystem = + { system, hostname, user, systemState }: + let + hostConfig = import ../hosts/${hostname} { inherit user systemState hostname; }; + in + nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = { inherit inputs user hostname systemState importer; }; + modules = [ hostConfig ]; + }; + + # Shared: build a standalone Home Manager derivation + buildHome = + { system, user, systemState }: + let + homeConfig = import ../users/${user} { inherit user systemState; }; + pkgs = import nixpkgs { + inherit system; + config.allowUnfree = true; + }; + in + home-manager.lib.homeManagerConfiguration { + inherit pkgs; + extraSpecialArgs = { inherit inputs importer; }; + modules = [ + homeConfig + # inputs.beeb5kvim.homeModules.default + ]; + }; +in +{ + # NixOS + standalone Home Manager (two separate outputs) + mkSystemWithHM = + { system, hostname, user, systemState }: + { + nixosConfigurations.${hostname} = buildSystem { inherit system hostname user systemState; }; + homeConfigurations.${user} = buildHome { inherit system user systemState; }; + }; + + # NixOS with Home Manager as a NixOS module (single output, HM is baked in) + mkSystemWithHMasModule = + { system, hostname, user, systemState }: + let + hostConfig = import ../hosts/${hostname} { inherit user systemState hostname; }; + homeConfig = import ../users/${user} { inherit user systemState; }; + in + { + nixosConfigurations.${hostname} = nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = { inherit inputs user hostname systemState importer; }; + modules = [ + hostConfig + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = { inherit inputs importer; }; + home-manager.users.${user} = homeConfig; + } + ]; + }; + }; + + # NixOS only, no Home Manager at all + mkSystem = + { system, hostname, user, systemState }: + { + nixosConfigurations.${hostname} = buildSystem { inherit system hostname user systemState; }; + }; +} -- cgit v1.3.1