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 # Lix
10 lix-module = {
11 url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.0.tar.gz";
12 inputs.nixpkgs.follows = "nixpkgs";
13 };
14
15 # NixOS hardware configuration
16 hardware.url = "github:NixOS/nixos-hardware/master";
17
18 # Home manager
19 home-manager.url = "github:nix-community/home-manager/release-25.05";
20 home-manager.inputs.nixpkgs.follows = "nixpkgs";
21
22 disko.url = "github:nix-community/disko";
23 disko.inputs.nixpkgs.follows = "nixpkgs";
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 = "https://flakehub.com/f/catppuccin/vscode/*.tar.gz";
40 };
41
42 nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions";
43
44 ghostty = {
45 url = "github:ghostty-org/ghostty";
46 };
47
48 frc-nix = {
49 url = "github:frc4451/frc-nix";
50 inputs.nixpkgs.follows = "nixpkgs";
51 };
52
53 claude-desktop = {
54 url = "github:k3d3/claude-desktop-linux-flake";
55 inputs.nixpkgs.follows = "nixpkgs";
56 };
57
58 hyprland-contrib = {
59 url = "github:hyprwm/contrib";
60 inputs.nixpkgs.follows = "nixpkgs";
61 };
62
63 nixvim.url = "github:taciturnaxolotl/nixvim";
64
65 zed = {
66 url = "github:oscilococcinum/zen-browser-nix";
67 inputs.nixpkgs.follows = "nixpkgs";
68 };
69
70 terminal-wakatime = {
71 url = "github:taciturnaxolotl/terminal-wakatime";
72 inputs.nixpkgs.follows = "nixpkgs";
73 };
74
75 ctfd-alerts = {
76 url = "github:taciturnaxolotl/ctfd-alerts";
77 inputs.nixpkgs.follows = "nixpkgs";
78 };
79
80 crush = {
81 url = "git+ssh://git@github.com/charmbracelet/crush?ref=taciturnaxoltol/flake";
82 inputs.nixpkgs.follows = "nixpkgs";
83 };
84
85 flare = {
86 url = "github:ByteAtATime/flare/feat/nix";
87 inputs.nixpkgs.follows = "nixpkgs";
88 };
89 };
90
91 outputs =
92 {
93 self,
94 nixpkgs,
95 nixpkgs-unstable,
96 lix-module,
97 agenix,
98 home-manager,
99 ...
100 }@inputs:
101 let
102 inherit (self) outputs;
103 system = "x86_64-linux";
104 unstable-overlays = {
105 nixpkgs.overlays = [
106 (final: prev: {
107 unstable = import nixpkgs-unstable {
108 inherit system;
109 config.allowUnfree = true;
110 };
111
112 bambu-studio = prev.bambu-studio.overrideAttrs (oldAttrs: {
113 version = "01.00.01.50";
114 src = prev.fetchFromGitHub {
115 owner = "bambulab";
116 repo = "BambuStudio";
117 rev = "v01.00.01.50";
118 hash = "sha256-7mkrPl2CQSfc1lRjl1ilwxdYcK5iRU//QGKmdCicK30=";
119 };
120 });
121
122 })
123 ];
124 };
125 in
126 {
127 # NixOS configuration entrypoint
128 # Available through 'nixos-rebuild --flake .#your-hostname'
129 nixosConfigurations = {
130 moonlark = nixpkgs.lib.nixosSystem {
131 system = "x86_64-linux";
132
133 specialArgs = { inherit inputs outputs; };
134
135 # > Our main nixos configuration file <
136 modules = [
137 lix-module.nixosModules.default
138 inputs.disko.nixosModules.disko
139 { disko.devices.disk.disk1.device = "/dev/vda"; }
140 agenix.nixosModules.default
141 ./nixos/machines/moonlark/configuration.nix
142 unstable-overlays
143 ];
144 };
145 };
146
147 # Standalone home-manager configurations
148 # Available through 'home-manager --flake .#username@hostname'
149 homeConfigurations = {
150 "tacyon" = home-manager.lib.homeManagerConfiguration {
151 pkgs = import nixpkgs {
152 system = "aarch64-linux";
153 config.allowUnfree = true;
154 };
155 extraSpecialArgs = {
156 inherit inputs outputs;
157 nixpkgs-unstable = nixpkgs-unstable;
158 system = "aarch64-linux";
159 };
160 modules = [
161 ./home-manager/machines/tacyon
162 unstable-overlays
163 ];
164 };
165
166 "nest" = home-manager.lib.homeManagerConfiguration {
167 pkgs = import nixpkgs {
168 system = "x86_64-linux";
169 config.allowUnfree = true;
170 };
171 extraSpecialArgs = {
172 inherit inputs outputs;
173 nixpkgs-unstable = nixpkgs-unstable;
174 system = "x86_64-linux";
175 };
176 modules = [
177 ./home-manager/machines/nest
178 unstable-overlays
179 ];
180 };
181
182 "ember" = home-manager.lib.homeManagerConfiguration {
183 pkgs = import nixpkgs {
184 system = "x86_64-linux";
185 config.allowUnfree = true;
186 };
187 extraSpecialArgs = {
188 inherit inputs outputs;
189 nixpkgs-unstable = nixpkgs-unstable;
190 system = "x86_64-linux";
191 };
192 modules = [
193 ./home-manager/machines/ember
194 unstable-overlays
195 ];
196 };
197 };
198 formatter.x86_64-linux = nixpkgs.legacyPackages.${system}.nixfmt-tree;
199 };
200}