❄️ 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}