From ae3fa667bda75f11881c9209dc67226f98bcfd95 Mon Sep 17 00:00:00 2001 From: Tom van der Lee Date: Thu, 17 Sep 2026 11:05:45 +0200 Subject: Add cross-platform Nix flake bootstrap Adds a flake providing shared modules for NixOS and standalone home-manager, a copyable NixOS host template, and the OpenSpec tooling/change scaffolding used to plan this work. --- lib/default.nix | 5 +++++ lib/mkHome.nix | 6 ++++++ lib/mkNixos.nix | 21 +++++++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 lib/default.nix create mode 100644 lib/mkHome.nix create mode 100644 lib/mkNixos.nix (limited to 'lib') diff --git a/lib/default.nix b/lib/default.nix new file mode 100644 index 0000000..806e6a7 --- /dev/null +++ b/lib/default.nix @@ -0,0 +1,5 @@ +{ inputs }: +{ + mkNixos = import ./mkNixos.nix { inherit inputs; }; + mkHome = import ./mkHome.nix { inherit inputs; }; +} diff --git a/lib/mkHome.nix b/lib/mkHome.nix new file mode 100644 index 0000000..db85b86 --- /dev/null +++ b/lib/mkHome.nix @@ -0,0 +1,6 @@ +{ inputs }: +{ username, system, extraModules ? [ ] }: +inputs.home-manager.lib.homeManagerConfiguration { + pkgs = inputs.nixpkgs.legacyPackages.${system}; + modules = [ ../users/${username}.nix ] ++ extraModules; +} diff --git a/lib/mkNixos.nix b/lib/mkNixos.nix new file mode 100644 index 0000000..00f19a0 --- /dev/null +++ b/lib/mkNixos.nix @@ -0,0 +1,21 @@ +{ inputs }: +{ hostname, system ? "x86_64-linux", users ? [ "tom" ], extraModules ? [ ] }: +inputs.nixpkgs.lib.nixosSystem { + inherit system; + specialArgs = { inherit inputs; }; + modules = [ + ../modules/nixos/common.nix + ../hosts/${hostname}/configuration.nix + inputs.home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserHomeDirectory = true; + home-manager.users = builtins.listToAttrs (map + (u: { + name = u; + value = import ../users/${u}.nix; + }) + users); + } + ] ++ extraModules; +} -- cgit v1.3