dotfiles/flake.nix
2025-01-11 18:52:18 +00:00

66 lines
1.8 KiB
Nix

{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
nixos-wsl = {
url = "github:nix-community/NixOS-WSL/main";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager/release-24.11";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{ self, nixpkgs, nixos-wsl, home-manager, ... }:
let
rootPath = self;
additionalArgs = { inherit inputs rootPath; };
importArg = inputs // { pkgs = nixpkgs; lib = nixpkgs.lib; } // additionalArgs;
hostNameMod = name: { networking.hostName = "kp2pml30-${name}"; };
makeNamedSys = nameArg: arg: {
"${nameArg}" =
nixpkgs.lib.nixosSystem
((builtins.removeAttrs arg ["modules"]) // { specialArgs = additionalArgs; modules = arg.modules ++ [(hostNameMod nameArg)]; });
};
makeSys = { sys }: [
(makeNamedSys "server-${sys}" {
system = sys;
modules = [
./nix/common.nix
./nix/server.nix
];
})
(makeNamedSys "personal-${sys}" {
system = sys;
modules = [
./nix/common.nix
./nix/personal.nix
];
})
(makeNamedSys "personal-${sys}-wsl" {
system = sys;
modules = [
./nix/wsl.nix
./nix/common.nix
./nix/personal.nix
];
})
] ;
in
{
nixosConfigurations =
builtins.foldl'
(x: y: x // y)
{}
(builtins.concatMap makeSys [ { sys = "x86_64-linux"; } ])
;
};
}
# example
# + nix --extra-experimental-features 'nix-command flakes' build --out-link /tmp/nixos-rebuild.ydOEVb/nixos-rebuild '.#nixosConfigurations."wsl-amd64".config.system.build.nixos-rebuild' --show-trace
# ++ readlink -e /tmp/nixos-rebuild.ydOEVb/nixos-rebuild
# + p=/nix/store/rd18dwsifrcyghim695q18nhvyfykxxg-nixos-rebuild
# exec /nix/store/rd18dwsifrcyghim695q18nhvyfykxxg-nixos-rebuild/bin/nixos-rebuild switch --flake .#wsl-amd64