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}