nixos/flake.nix
2024-06-07 15:39:33 +02:00

72 lines
1.7 KiB
Nix

{
description = "Main Flake: LuminiferousLilith";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
nixpkgs-stable.url = "github:NixOS/nixpkgs/release-24.05";
flake-utils.url = "github:numtide/flake-utils";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
sops-nix = {
url = "github:Mic92/sops-nix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.nixpkgs-stable.follows = "nixpkgs-stable";
};
impermanence.url = "github:nix-community/impermanence";
stylix.url = "github:danth/stylix";
helix.url = "github:pascalkuthe/helix/inline-diagnostics";
};
outputs = {
self,
nixpkgs,
impermanence,
home-manager,
sops-nix,
stylix,
...
} @ inputs: let
inherit (self) outputs;
hosts = builtins.filter (host: builtins.pathExists ./hosts/${host}/configuration.nix) (builtins.attrNames (builtins.readDir ./hosts));
mkHostConfig = host: let
defaultConf = rec {
hostname = host;
uid = 1000;
user = "lilith";
home = /home/${user};
};
in
nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs outputs;
conf = defaultConf;
};
modules = [
./hosts/${host}/configuration.nix
./hosts/${host}/hardware-configuration.nix
impermanence.nixosModule
home-manager.nixosModule
sops-nix.nixosModules.sops
stylix.nixosModules.stylix
];
};
in {
nixosConfigurations = builtins.listToAttrs (
map (host: {
name = host;
value = mkHostConfig host;
})
hosts
);
};
}