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/did:plc:c6qso2k5s2quybbinxtkbskq";
12 flake = false;
13 };
14
15 yemou-scripts = {
16 url = "git+https://tangled.org/did:plc:jqjbwsvh6dn6qinef67niuze";
17 inputs.nixpkgs.follows = "nixpkgs";
18 };
19
20 home-manager = {
21 url = "github:nix-community/home-manager";
22 inputs.nixpkgs.follows = "nixpkgs";
23 };
24
25 nix-minecraft.url = "github:Infinidoge/nix-minecraft";
26 roc-lang.url = "github:roc-lang/roc";
27 tangled.url = "git+https://tangled.org/did:plc:j5hmlfdrwkvtxm7cjmu7j2is?ref=refs/tags/v1.14.1-alpha";
28 };
29
30 outputs =
31 {
32 self,
33 nixpkgs,
34 impermanence,
35 sops-nix,
36 home-manager,
37 ...
38 }@inputs:
39 let
40 genSystemConfigs = nixpkgs.lib.genAttrs [
41 "lily"
42 "lutea"
43 ];
44 systems = [ "x86_64-linux" ];
45 forSystems = func: nixpkgs.lib.genAttrs systems (system: func (import nixpkgs { inherit system; }));
46 in
47 {
48 formatter = forSystems (p: p.nixfmt-tree.override { settings.formatter.nixfmt.options = [ "-w 120" ]; });
49 nixosConfigurations = genSystemConfigs (
50 hostname:
51 nixpkgs.lib.nixosSystem {
52 specialArgs = inputs;
53 modules = [
54 impermanence.nixosModules.impermanence
55 ./${hostname}/config.nix
56 sops-nix.nixosModules.sops
57 home-manager.nixosModules.home-manager
58 {
59 home-manager = {
60 extraSpecialArgs = inputs;
61 useGlobalPkgs = true;
62 useUserPackages = true;
63 users.mou = import ./${hostname}/home.nix;
64 };
65 }
66 ];
67 }
68 );
69 };
70}