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
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
89 outputs =
90 {
91 self,
92 nixpkgs,
93 nixpkgs-unstable,
94 agenix,
95 home-manager,
96 nur,
97 nix-darwin,
98 ...
99 }@inputs:
100 let
101 outputs = inputs.self.outputs;
102 unstable-overlays = {
103 nixpkgs.overlays = [
104 (final: prev: {
105 unstable = import nixpkgs-unstable {
106 system = final.system;
107 config.allowUnfree = true;
108 };
109
110 bambu-studio = prev.bambu-studio.overrideAttrs (oldAttrs: {
111 version = "01.00.01.50";
112 src = prev.fetchFromGitHub {
113 owner = "bambulab";
114 repo = "BambuStudio";
115 rev = "v01.00.01.50";
116 hash = "sha256-7mkrPl2CQSfc1lRjl1ilwxdYcK5iRU//QGKmdCicK30=";
117 };
118 });
119 })
120 ];
121 };
122 in
123 {
124 # NixOS configuration entrypoint
125 # Available through 'nixos-rebuild --flake .#hostname'
126 nixosConfigurations = {
127 moonlark = nixpkgs.lib.nixosSystem {
128 specialArgs = { inherit inputs outputs; };
129 modules = [
130 inputs.disko.nixosModules.disko
131 { disko.devices.disk.disk1.device = "/dev/vda"; }
132 agenix.nixosModules.default
133 unstable-overlays
134 { system = "x86_64-linux"; }
135 ./machines/moonlark
136 nur.modules.nixos.default
137 ];
138 };
139 };
140
141 # Standalone home-manager configurations
142 # Available through 'home-manager --flake .#hostname'
143 homeConfigurations = {
144 "tacyon" = home-manager.lib.homeManagerConfiguration {
145 pkgs = nixpkgs.legacyPackages.aarch64-linux;
146 extraSpecialArgs = {
147 inherit inputs outputs;
148 nixpkgs-unstable = nixpkgs-unstable;
149 };
150 modules = [
151 ./machines/tacyon
152 unstable-overlays
153 { system = "aarch64-linux"; }
154 ];
155 };
156
157 "nest" = home-manager.lib.homeManagerConfiguration {
158 pkgs = nixpkgs.legacyPackages.x86_64-linux;
159 extraSpecialArgs = {
160 inherit inputs outputs;
161 nixpkgs-unstable = nixpkgs-unstable;
162 };
163 modules = [
164 ./machines/nest
165 unstable-overlays
166 { system = "x86_64-linux"; }
167 ];
168 };
169
170 "ember" = home-manager.lib.homeManagerConfiguration {
171 pkgs = nixpkgs.legacyPackages.x86_64-linux;
172 extraSpecialArgs = {
173 inherit inputs outputs;
174 nixpkgs-unstable = nixpkgs-unstable;
175 };
176 modules = [
177 ./machines/ember
178 unstable-overlays
179 { system = "x86_64-linux"; }
180 ];
181 };
182 };
183
184 formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree;
185
186 # Darwin configurations
187 # Available through 'darwin-rebuild switch --flake .#hostname'
188 darwinConfigurations = {
189 atalanta = nix-darwin.lib.darwinSystem {
190 system = "aarch64-darwin";
191 specialArgs = { inherit inputs outputs; };
192 modules = [
193 home-manager.darwinModules.home-manager
194 agenix.darwinModules.default
195 unstable-overlays
196 ./machines/atalanta
197 ];
198 };
199 };
200 };
201}