main
1{
2 self,
3 inputs,
4 outputs,
5 stateVersion,
6 ...
7}:
8{
9 libx = import ./functions.nix { inherit (inputs.nixpkgs) lib; };
10 monitoring = import ./monitoring.nix { inherit (inputs.nixpkgs) lib; };
11 # Function for generating home-manage configs
12 mkHome =
13 {
14 hostname,
15 username,
16 desktop ? null,
17 system ? "x86_64-linux",
18 }:
19 let
20 globals = import ../globals.nix {
21 inherit (inputs.nixpkgs) lib;
22 inherit hostname;
23 };
24 in
25 inputs.home-manager.lib.homeManagerConfiguration {
26 pkgs = import inputs.nixpkgs {
27 inherit system;
28 config.allowUnfree = true;
29 overlays = [
30 # Our own flake exports (from overlays and pkgs dir)
31 outputs.overlays.additions
32 outputs.overlays.modifications
33 outputs.overlays.unstable-packages
34
35 # And from other flakes
36 inputs.emacs-overlay.overlay
37 outputs.overlays.emacs-31
38 inputs.chapeau-rouge.overlays.openshift
39 inputs.chick-group.overlays.default
40 inputs.go-org-readwise.overlays.default
41 inputs.radian.overlays.default
42 inputs.llm-agents.overlays.shared-nixpkgs
43
44 # Inline overlays (same as systems/default.nix)
45 (_: _prev: {
46 inherit (inputs.buildkit-tekton.packages.${system}) tkn-local;
47 inherit (inputs.pass-run.packages.${system}) pass-run;
48 })
49 ];
50 };
51 extraSpecialArgs = {
52 inherit
53 self
54 inputs
55 outputs
56 stateVersion
57 hostname
58 desktop
59 globals
60 username
61 system
62 ;
63 libx = import ./functions.nix { inherit (inputs.nixpkgs) lib; };
64 };
65 modules = [
66 ../home
67 ];
68 };
69
70 # Function for generating host configs
71 mkHost =
72 {
73 hostname,
74 desktop ? null,
75 hardwareType ? "",
76 system ? "x86_64-linux",
77 pkgsInput ? inputs.nixpkgs,
78 homeInput ? inputs.home-manager,
79 agenixInput ? inputs.agenix,
80 }:
81 let
82 globals = import ../globals.nix {
83 inherit (pkgsInput) lib;
84 inherit hostname;
85 };
86 specialArgs = {
87 inherit
88 self
89 inputs
90 outputs
91 stateVersion
92 hostname
93 desktop
94 hardwareType
95 system
96 globals
97 ;
98 libx = import ./functions.nix { inherit (pkgsInput) lib; };
99 monitoring = import ./monitoring.nix { inherit (pkgsInput) lib; };
100 };
101 in
102 pkgsInput.lib.nixosSystem {
103 inherit specialArgs;
104 inherit system;
105 modules = [
106 self.nixosModules.wireguard-client
107 self.nixosModules.wireguard-server
108 self.nixosModules.govanityurl
109 self.nixosModules.gosmee
110 self.nixosModules.rsync-replica
111 self.nixosModules.praetorian
112 agenixInput.nixosModules.default
113 inputs.disko.nixosModules.disko
114 inputs.lanzaboote.nixosModules.lanzaboote
115 homeInput.nixosModules.home-manager
116 {
117 home-manager.extraSpecialArgs = specialArgs;
118 home-manager.useGlobalPkgs = true;
119 home-manager.useUserPackages = true;
120 }
121 ../systems
122 ];
123 };
124
125 # Function to create a system manager
126 mkSystemManager =
127 {
128 system ? "x86_64-linux",
129 hostname,
130 desktop ? null,
131 pkgsInput ? inputs.nixpkgs,
132 homeInput ? inputs.home-manager,
133 }:
134 let
135 globals = import ../globals.nix {
136 inherit (pkgsInput) lib;
137 inherit hostname;
138 };
139 extraSpecialArgs = {
140 inherit
141 self
142 inputs
143 outputs
144 stateVersion
145 hostname
146 desktop
147 globals
148 ;
149 libx = import ./functions.nix { inherit (pkgsInput) lib; };
150 monitoring = import ./monitoring.nix { inherit (pkgsInput) lib; };
151 };
152 in
153 inputs.system-manager.lib.makeSystemConfig {
154 inherit extraSpecialArgs;
155 modules = [
156 # self.nixosModules.wireguard-client
157 # inputs.agenix.nixosModules.default
158 homeInput.nixosModules.home-manager
159 {
160 config = {
161 nixpkgs.hostPlatform = system;
162 system-manager.allowAnyDistro = true;
163 };
164 }
165 ../systems/system-manager.nix
166 ];
167 };
168}