All my system configs and packages in one repo
1{
2 description = "Leah's NixOS configurations + more";
3
4 nixConfig = {
5 extra-substituters = [
6 "https://pluiedev.cachix.org"
7 ];
8 extra-trusted-public-keys = [
9 "pluiedev.cachix.org-1:tW7LdIlB2UV3DM/DOVlgxg0ON+8YJRIW1aKxPKFOwzI="
10 ];
11 };
12
13 inputs = {
14 nixpkgs.url = "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz";
15
16 # NOTE: please keep this in alphabetical order.
17
18 deploy-rs = {
19 url = "github:serokell/deploy-rs";
20 inputs.nixpkgs.follows = "nixpkgs";
21 };
22
23 flake-parts = {
24 url = "github:hercules-ci/flake-parts";
25 inputs.nixpkgs-lib.follows = "nixpkgs";
26 };
27
28 ghostty = {
29 url = "github:pluiedev/ghostty/edge";
30 inputs.nixpkgs.follows = "nixpkgs";
31 };
32
33 hjem = {
34 url = "github:feel-co/hjem?rev=a1e391395fee2f2ddbb8e9efd5da68cf60406835";
35 inputs.nixpkgs.follows = "nixpkgs";
36 };
37
38 hjem-rum = {
39 url = "github:snugnug/hjem-rum";
40 inputs.nixpkgs.follows = "nixpkgs";
41 };
42
43 nix-index-database = {
44 url = "github:nix-community/nix-index-database";
45 inputs.nixpkgs.follows = "nixpkgs";
46 };
47
48 nixos-hardware.url = "github:pluiedev/nixos-hardware/pluie/jj-nsvpsuspltqm";
49
50 nixos-generators = {
51 url = "github:nix-community/nixos-generators";
52 inputs.nixpkgs.follows = "nixpkgs";
53 };
54
55 sops-nix = {
56 url = "github:Mic92/sops-nix";
57 inputs.nixpkgs.follows = "nixpkgs";
58 };
59
60 tangled = {
61 url = "git+https://tangled.org/tangled.org/core?shallow=1";
62 inputs = {
63 nixpkgs.follows = "nixpkgs";
64
65 # We don't need any of these
66 flake-compat.follows = "";
67 indigo.follows = "";
68 htmx-src.follows = "";
69 htmx-ws-src.follows = "";
70 lucide-src.follows = "";
71 inter-fonts-src.follows = "";
72 actor-typeahead-src.follows = "";
73 ibm-plex-mono-src.follows = "";
74 };
75 };
76
77 tranquil-pds = {
78 url = "git+https://tangled.org/lewis.moe/bspds-sandbox?rev=32fee7a7fff8493b78ca078a840b5819718f297d";
79 inputs.nixpkgs.follows = "nixpkgs";
80 };
81 };
82
83 outputs =
84 inputs:
85 inputs.flake-parts.lib.mkFlake { inherit inputs; } {
86 systems = [
87 "x86_64-linux"
88 "x86_64-darwin"
89 ];
90
91 imports = [
92 ./overlay.nix
93 ./systems/fettuccine
94 ./systems/pappardelle
95 ./systems/focaccia
96 ./systems/brioche
97 ./systems/deploy.nix
98 ];
99
100 flake = {
101 hjemModules = {
102 hjem-ext = import ./modules/hjem-ext;
103 hjem-ctp = import ./modules/hjem-ctp;
104 };
105
106 checks =
107 let
108 deployChecks = builtins.mapAttrs (
109 _: deployLib: deployLib.deployChecks inputs.self.deploy
110 ) inputs.deploy-rs.lib;
111 in
112 deployChecks // inputs.self.packages;
113 };
114
115 perSystem =
116 {
117 pkgs,
118 lib,
119 system,
120 ...
121 }:
122 {
123 # Allow Flake checks to pass
124 _module.args.pkgs = import inputs.nixpkgs {
125 inherit system;
126 config.allowUnfree = true;
127 };
128
129 packages = lib.packagesFromDirectoryRecursive {
130 inherit (pkgs) callPackage;
131 directory = ./packages;
132 };
133
134 devShells.default = pkgs.mkShellNoCC {
135 packages = with pkgs; [
136 nixd
137 nixfmt
138 deploy-rs
139 sops
140 ];
141 env.SOPS_AGE_KEY_CMD = "${./age_from_1password.nu}";
142 };
143 };
144 };
145}