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 ./machines/moonlark 135 nur.modules.nixos.default 136 ]; 137 }; 138 }; 139 140 # Standalone home-manager configurations 141 # Available through 'home-manager --flake .#hostname' 142 homeConfigurations = { 143 "tacyon" = home-manager.lib.homeManagerConfiguration { 144 pkgs = nixpkgs.legacyPackages.aarch64-linux; 145 extraSpecialArgs = { 146 inherit inputs outputs; 147 nixpkgs-unstable = nixpkgs-unstable; 148 }; 149 modules = [ 150 ./machines/tacyon 151 unstable-overlays 152 ]; 153 }; 154 155 "nest" = home-manager.lib.homeManagerConfiguration { 156 pkgs = nixpkgs.legacyPackages.x86_64-linux; 157 extraSpecialArgs = { 158 inherit inputs outputs; 159 nixpkgs-unstable = nixpkgs-unstable; 160 }; 161 modules = [ 162 ./machines/nest 163 unstable-overlays 164 ]; 165 }; 166 167 "ember" = home-manager.lib.homeManagerConfiguration { 168 pkgs = nixpkgs.legacyPackages.x86_64-linux; 169 extraSpecialArgs = { 170 inherit inputs outputs; 171 nixpkgs-unstable = nixpkgs-unstable; 172 }; 173 modules = [ 174 ./machines/ember 175 unstable-overlays 176 ]; 177 }; 178 }; 179 180 formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-tree; 181 182 # Darwin configurations 183 # Available through 'darwin-rebuild switch --flake .#hostname' 184 darwinConfigurations = { 185 atalanta = nix-darwin.lib.darwinSystem { 186 system = "aarch64-darwin"; 187 specialArgs = { inherit inputs outputs; }; 188 modules = [ 189 home-manager.darwinModules.home-manager 190 agenix.darwinModules.default 191 unstable-overlays 192 ./machines/atalanta 193 ]; 194 }; 195 }; 196 }; 197}