Files
nixos-dogma/flake.nix
T
Jordan Ashurst ecba7b1480 flake: add nixos-wsl input and mkHost helper for 3 hosts
- add nixos-wsl input (follows nixpkgs) for dogma-wsl
- refactor nixosConfigurations to mkHost helper with hostname/extraModules/homeFile
- keep alejandra, sops-nix, home-manager wiring
2026-09-18 04:23:01 -07:00

82 lines
2.0 KiB
Nix

{
description = "Nixos config flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-wsl = {
url = "github:nix-community/NixOS-WSL/main";
inputs.nixpkgs.follows = "nixpkgs";
};
alejandra.url = "github:kamadorueda/alejandra/4.0.0";
alejandra.inputs.nixpkgs.follows = "nixpkgs";
lazyvim.url = "github:pfassina/lazyvim-nix";
};
outputs = inputs @ {
self,
nixpkgs,
sops-nix,
lazyvim,
alejandra,
...
}: let
mkHost = {
hostname,
system ? "x86_64-linux",
extraModules ? [],
homeFile ? ./home/${hostname}.nix,
}:
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {inherit inputs;};
modules =
[
./hosts/${hostname}/default.nix
inputs.home-manager.nixosModules.default
{
environment.systemPackages = [alejandra.defaultPackage.${system}];
}
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = {inherit inputs;};
home-manager.sharedModules = [
inputs.sops-nix.homeManagerModules.sops
];
home-manager.users.mask = homeFile;
}
inputs.sops-nix.nixosModules.sops
]
++ extraModules;
};
in {
nixosConfigurations = {
dogma-nixos = mkHost {
hostname = "dogma-nixos";
extraModules = [./modules/nvidia-gtx1060.nix];
};
dogma-nixos-rtx = mkHost {
hostname = "dogma-nixos-rtx";
extraModules = [./modules/nvidia-rtx3070.nix];
};
dogma-wsl = mkHost {
hostname = "dogma-wsl";
extraModules = [inputs.nixos-wsl.nixosModules.default];
};
};
};
}