❄️ Dotfiles for our NixOS system configuration.
1{ 2 description = "NixOS configuration for the Sapphic Angels system."; 3 4 inputs = { 5 # Packages 6 nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; 7 8 # Flakes 9 flake-parts.url = "github:hercules-ci/flake-parts"; 10 easy-hosts.url = "github:tgirlcloud/easy-hosts"; 11 12 # Systems 13 nix-darwin = { 14 url = "github:nix-darwin/nix-darwin"; 15 inputs.nixpkgs.follows = "nixpkgs"; 16 }; 17 18 nixos-wsl = { 19 url = "github:nix-community/NixOS-WSL"; 20 inputs.nixpkgs.follows = "nixpkgs"; 21 }; 22 23 # Userspace 24 home-manager = { 25 url = "github:nix-community/home-manager"; 26 inputs.nixpkgs.follows = "nixpkgs"; 27 }; 28 29 # Misc 30 ## Catppuccin theme 31 catppuccin = { 32 url = "github:catppuccin/nix"; 33 inputs.nixpkgs.follows = "nixpkgs"; 34 }; 35 36 ## Nix Language Server 37 nil = { 38 url = "github:oxalica/nil"; 39 inputs.nixpkgs.follows = "nixpkgs"; 40 }; 41 42 ## Secrets management 43 ragenix = { 44 url = "github:yaxitech/ragenix"; 45 inputs.nixpkgs.follows = "nixpkgs"; 46 }; 47 48 ## Logitech config tool 49 solaar = { 50 url = "github:Svenum/Solaar-Flake/main"; 51 inputs.nixpkgs.follows = "nixpkgs"; 52 }; 53 54 tangled = { 55 url = "git+https://tangled.org/@tangled.org/core"; 56 inputs.nixpkgs.follows = "nixpkgs"; 57 }; 58 }; 59 60 outputs = 61 inputs@{ 62 flake-parts, 63 nixos-wsl, 64 ... 65 }: 66 flake-parts.lib.mkFlake { inherit inputs; } { 67 imports = [ 68 inputs.easy-hosts.flakeModule 69 ]; 70 71 systems = [ 72 "x86_64-linux" 73 "aarch64-darwin" 74 ]; 75 76 perSystem = 77 { pkgs, ... }: 78 { 79 formatter = pkgs.nixfmt; 80 }; 81 82 easy-hosts = { 83 path = ./hosts; 84 85 additionalClasses = { 86 wsl = "nixos"; 87 }; 88 89 shared = { 90 modules = [ ./modules/base ]; 91 specialArgs = { inherit inputs; }; 92 }; 93 94 perClass = class: { 95 modules = [ ./modules/${class}/default.nix ]; 96 }; 97 98 hosts = { 99 caulfield = { 100 arch = "x86_64"; 101 class = "nixos"; 102 tags = [ "laptop" ]; 103 }; 104 105 dullscythe = { 106 arch = "x86_64"; 107 class = "nixos"; 108 tags = [ "server" ]; 109 }; 110 111 juniper = { 112 arch = "aarch64"; 113 class = "darwin"; 114 tags = [ "laptop" ]; 115 }; 116 117 solstice = { 118 arch = "x86_64"; 119 class = "wsl"; 120 tags = [ "wsl" ]; 121 }; 122 }; 123 }; 124 }; 125}