Nix configurations for my homelab
1{
2 inputs = {
3 nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable-small";
4 nixpkgs-stable.url = "github:NixOS/nixpkgs?ref=nixos-25.05-small";
5 nixpkgs-unstable.url = "github:NixOS/nixpkgs?ref=nixos-unstable";
6
7 impermanence.url = "github:nix-community/impermanence";
8 sops-nix.url = "github:Mic92/sops-nix";
9
10 yemou-dotfiles = {
11 url = "git+https://tangled.org/yemou.pink/dotfiles";
12 flake = false;
13 };
14 yemou-scripts = {
15 url = "git+https://tangled.org/yemou.pink/scripts";
16 inputs.nixpkgs.follows = "nixpkgs";
17 };
18 home-manager = {
19 url = "github:nix-community/home-manager";
20 inputs.nixpkgs.follows = "nixpkgs";
21 };
22
23 roc-lang.url = "github:roc-lang/roc";
24 tangled.url = "git+https://tangled.org/tangled.org/core?ref=refs/tags/v1.11.0-alpha";
25 };
26
27 outputs =
28 {
29 self,
30 nixpkgs,
31 impermanence,
32 sops-nix,
33 home-manager,
34 ...
35 }@inputs:
36 let
37 genSystemConfigs = nixpkgs.lib.genAttrs [
38 "lily"
39 "lutea"
40 ];
41 systems = [ "x86_64-linux" ];
42 forSystems = func: nixpkgs.lib.genAttrs systems (system: func (import nixpkgs { inherit system; }));
43 in
44 {
45 formatter = forSystems (p: p.nixfmt-tree.override { settings.formatter.nixfmt.options = [ "-w 120" ]; });
46 nixosConfigurations = genSystemConfigs (
47 hostname:
48 nixpkgs.lib.nixosSystem {
49 specialArgs = inputs;
50 modules = [
51 impermanence.nixosModules.impermanence
52 ./${hostname}/config.nix
53 sops-nix.nixosModules.sops
54 home-manager.nixosModules.home-manager
55 {
56 home-manager = {
57 extraSpecialArgs = inputs;
58 useGlobalPkgs = true;
59 useUserPackages = true;
60 users.mou = import ./${hostname}/home.nix;
61 };
62 }
63 ];
64 }
65 );
66 };
67}