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