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