Kieran's opinionated (and probably slightly dumb) nix config
1{
2 description = "Kieran's opinionated (and probably slightly dumb) nix config";
3
4 inputs = {
5 # Nixpkgs
6 nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
7 nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
8
9 # NixOS hardware configuration
10 hardware.url = "github:NixOS/nixos-hardware/master";
11
12 # Home manager
13 home-manager.url = "github:nix-community/home-manager/release-25.05";
14 home-manager.inputs.nixpkgs.follows = "nixpkgs";
15
16 # Nix-Darwin
17 nix-darwin.url = "github:nix-darwin/nix-darwin/nix-darwin-25.05";
18 nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
19
20 disko.url = "github:nix-community/disko";
21 disko.inputs.nixpkgs.follows = "nixpkgs";
22
23 nixos-facter-modules.url = "github:numtide/nixos-facter-modules";
24
25 # agenix
26 agenix.url = "github:ryantm/agenix";
27
28 spicetify-nix = {
29 url = "github:Gerg-L/spicetify-nix";
30 inputs.nixpkgs.follows = "nixpkgs";
31 };
32
33 catppuccin = {
34 url = "github:catppuccin/nix?rev=f518f96a60aceda4cd487437b25eaa48d0f1b97d";
35 inputs.nixpkgs.follows = "nixpkgs";
36 };
37
38 catppuccin-vsc = {
39 url = "github:catppuccin/vscode";
40 };
41
42 nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions";
43
44 frc-nix = {
45 url = "github:frc4451/frc-nix";
46 inputs.nixpkgs.follows = "nixpkgs";
47 };
48
49 claude-desktop = {
50 url = "github:k3d3/claude-desktop-linux-flake";
51 inputs.nixpkgs.follows = "nixpkgs";
52 };
53
54 hyprland-contrib = {
55 url = "github:hyprwm/contrib";
56 inputs.nixpkgs.follows = "nixpkgs";
57 };
58
59 nixvim.url = "github:taciturnaxolotl/nixvim";
60
61 terminal-wakatime = {
62 url = "github:taciturnaxolotl/terminal-wakatime";
63 inputs.nixpkgs.follows = "nixpkgs";
64 };
65
66 ctfd-alerts = {
67 url = "github:taciturnaxolotl/ctfd-alerts";
68 inputs.nixpkgs.follows = "nixpkgs";
69 };
70
71 flare = {
72 url = "github:ByteAtATime/flare/feat/nix";
73 inputs.nixpkgs.follows = "nixpkgs";
74 };
75
76 import-tree.url = "github:vic/import-tree";
77
78 nur = {
79 url = "github:nix-community/NUR";
80 inputs.nixpkgs.follows = "nixpkgs";
81 };
82
83 cedarlogic = {
84 url = "github:taciturnaxolotl/CedarLogic";
85 inputs.nixpkgs.follows = "nixpkgs";
86 };
87
88 soapdump = {
89 url = "github:taciturnaxolotl/soapdump";
90 inputs.nixpkgs.follows = "nixpkgs";
91 };
92
93 wakatime-ls = {
94 url = "github:mrnossiom/wakatime-ls";
95 inputs.nixpkgs.follows = "nixpkgs";
96 };
97 };
98
99 outputs =
100 {
101 self,
102 nixpkgs,
103 nixpkgs-unstable,
104 agenix,
105 home-manager,
106 nur,
107 nix-darwin,
108 ...
109 }@inputs:
110 let
111 outputs = inputs.self.outputs;
112 unstable-overlays = {
113 nixpkgs.overlays = [
114 (final: prev: {
115 unstable = import nixpkgs-unstable {
116 system = final.system;
117 config.allowUnfree = true;
118 };
119
120 bambu-studio = prev.bambu-studio.overrideAttrs (oldAttrs: {
121 version = "01.00.01.50";
122 src = prev.fetchFromGitHub {
123 owner = "bambulab";
124 repo = "BambuStudio";
125 rev = "v01.00.01.50";
126 hash = "sha256-7mkrPl2CQSfc1lRjl1ilwxdYcK5iRU//QGKmdCicK30=";
127 };
128 });
129 })
130 ];
131 };
132 in
133 {
134 # NixOS configuration entrypoint
135 # Available through 'nixos-rebuild --flake .#hostname'
136 nixosConfigurations = {
137 moonlark = nixpkgs.lib.nixosSystem {
138 specialArgs = { inherit inputs outputs; };
139 modules = [
140 inputs.disko.nixosModules.disko
141 { disko.devices.disk.disk1.device = "/dev/vda"; }
142 agenix.nixosModules.default
143 unstable-overlays
144 ./machines/moonlark
145 nur.modules.nixos.default
146 ];
147 };
148
149 prattle = nixpkgs.lib.nixosSystem {
150 specialArgs = { inherit inputs outputs; };
151 modules = [
152 inputs.disko.nixosModules.disko
153 agenix.nixosModules.default
154 inputs.nixos-facter-modules.nixosModules.facter
155 { config.facter.reportPath = ./machines/prattle/facter.json; }
156 unstable-overlays
157 ./machines/prattle
158 nur.modules.nixos.default
159 ];
160 };
161
162 terebithia = nixpkgs.lib.nixosSystem {
163 specialArgs = { inherit inputs outputs; };
164 modules = [
165 inputs.disko.nixosModules.disko
166 agenix.nixosModules.default
167 inputs.nixos-facter-modules.nixosModules.facter
168 { config.facter.reportPath = ./machines/terebithia/facter.json; }
169 unstable-overlays
170 ./machines/terebithia
171 nur.modules.nixos.default
172 ];
173 };
174 };
175
176 # Standalone home-manager configurations
177 # Available through 'home-manager --flake .#hostname'
178 homeConfigurations = {
179 "tacyon" = home-manager.lib.homeManagerConfiguration {
180 pkgs = nixpkgs.legacyPackages.aarch64-linux;
181 extraSpecialArgs = {
182 inherit inputs outputs;
183 nixpkgs-unstable = nixpkgs-unstable;
184 };
185 modules = [
186 ./machines/tacyon
187 unstable-overlays
188 ];
189 };
190
191 "nest" = home-manager.lib.homeManagerConfiguration {
192 pkgs = nixpkgs.legacyPackages.x86_64-linux;
193 extraSpecialArgs = {
194 inherit inputs outputs;
195 nixpkgs-unstable = nixpkgs-unstable;
196 system = "x86_64-linux";
197 };
198 modules = [
199 ./machines/nest
200 unstable-overlays
201 ];
202 };
203
204 "ember" = home-manager.lib.homeManagerConfiguration {
205 pkgs = nixpkgs.legacyPackages.x86_64-linux;
206 extraSpecialArgs = {
207 inherit inputs outputs;
208 nixpkgs-unstable = nixpkgs-unstable;
209 };
210 modules = [
211 ./machines/ember
212 unstable-overlays
213 ];
214
215 };
216 "john" = home-manager.lib.homeManagerConfiguration {
217 pkgs = nixpkgs.legacyPackages.x86_64-linux;
218 extraSpecialArgs = {
219 inherit inputs outputs;
220 nixpkgs-unstable = nixpkgs-unstable;
221 system = "x86_64-linux";
222 };
223 modules = [
224 ./machines/john
225 unstable-overlays
226 ];
227 };
228 };
229
230 # Darwin configurations
231 # Available through 'darwin-rebuild switch --flake .#hostname'
232 darwinConfigurations = {
233 atalanta = nix-darwin.lib.darwinSystem {
234 system = "aarch64-darwin";
235 specialArgs = { inherit inputs outputs; };
236 modules = [
237 home-manager.darwinModules.home-manager
238 agenix.darwinModules.default
239 unstable-overlays
240 ./machines/atalanta
241 ];
242 };
243 };
244
245 formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree;
246 formatter.aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.nixfmt-tree;
247 };
248}