❄️ 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 darwin-login-items.url = "github:uncenter/nix-darwin-login-items";
60 };
61
62 outputs =
63 inputs@{ flake-parts, ... }:
64 flake-parts.lib.mkFlake { inherit inputs; } {
65 imports = [
66 inputs.easy-hosts.flakeModule
67 ];
68
69 systems = [
70 "x86_64-linux"
71 "aarch64-darwin"
72 ];
73
74 perSystem =
75 { pkgs, ... }:
76 {
77 formatter = pkgs.nixfmt;
78 };
79
80 easy-hosts = {
81 path = ./hosts;
82
83 additionalClasses = {
84 wsl = "nixos";
85 };
86
87 shared = {
88 modules = [ ./modules/base ];
89 specialArgs = { inherit inputs; };
90 };
91
92 perClass = class: {
93 modules = [ ./modules/${class}/default.nix ];
94 };
95
96 hosts = {
97 caulfield = {
98 arch = "x86_64";
99 class = "nixos";
100 tags = [ "laptop" ];
101 };
102
103 dullscythe = {
104 arch = "x86_64";
105 class = "nixos";
106 tags = [ "server" ];
107 };
108
109 juniper = {
110 arch = "aarch64";
111 class = "darwin";
112 tags = [ "laptop" ];
113 };
114
115 solstice = {
116 arch = "x86_64";
117 class = "wsl";
118 tags = [ "wsl" ];
119 };
120 };
121 };
122 };
123}