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
148 # Standalone home-manager configurations
149 # Available through 'home-manager --flake .#hostname'
150 homeConfigurations = {
151 "tacyon" = home-manager.lib.homeManagerConfiguration {
152 pkgs = nixpkgs.legacyPackages.aarch64-linux;
153 extraSpecialArgs = {
154 inherit inputs outputs;
155 nixpkgs-unstable = nixpkgs-unstable;
156 };
157 modules = [
158 ./machines/tacyon
159 unstable-overlays
160 ];
161 };
162
163 "nest" = home-manager.lib.homeManagerConfiguration {
164 pkgs = nixpkgs.legacyPackages.x86_64-linux;
165 extraSpecialArgs = {
166 inherit inputs outputs;
167 nixpkgs-unstable = nixpkgs-unstable;
168 system = "x86_64-linux";
169 };
170 modules = [
171 ./machines/nest
172 unstable-overlays
173 ];
174 };
175
176 "ember" = home-manager.lib.homeManagerConfiguration {
177 pkgs = nixpkgs.legacyPackages.x86_64-linux;
178 extraSpecialArgs = {
179 inherit inputs outputs;
180 nixpkgs-unstable = nixpkgs-unstable;
181 };
182 modules = [
183 ./machines/ember
184 unstable-overlays
185 ];
186
187 };
188 "john" = home-manager.lib.homeManagerConfiguration {
189 pkgs = nixpkgs.legacyPackages.x86_64-linux;
190 extraSpecialArgs = {
191 inherit inputs outputs;
192 nixpkgs-unstable = nixpkgs-unstable;
193 system = "x86_64-linux";
194 };
195 modules = [
196 ./machines/john
197 unstable-overlays
198 ];
199 };
200 };
201
202 # Darwin configurations
203 # Available through 'darwin-rebuild switch --flake .#hostname'
204 darwinConfigurations = {
205 atalanta = nix-darwin.lib.darwinSystem {
206 system = "aarch64-darwin";
207 specialArgs = { inherit inputs outputs; };
208 modules = [
209 home-manager.darwinModules.home-manager
210 agenix.darwinModules.default
211 unstable-overlays
212 ./machines/atalanta
213 ];
214 };
215 };
216
217 formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree;
218 formatter.aarch64-darwin = nixpkgs.legacyPackages.aarch64-darwin.nixfmt-tree;
219 };
220}