My Nix Configuration
1{
2 nixConfig = {
3 experimental-features = "nix-command flakes";
4 substitute = "true";
5 extra-substituters = [
6 "https://cache.nixos.org"
7 "https://nix-community.cachix.org"
8 ];
9 trusted-public-keys = [
10 "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
11 "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
12 ];
13 cores = 0;
14 max-jobs = 2;
15 netrc-file = "/home/thehedgehog/.netrc";
16 };
17 description = "PyroNet machines and services";
18
19 inputs = {
20 flake-parts = {
21 url = "github:hercules-ci/flake-parts";
22 };
23 nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz";
24 # Overrides
25 flake-compat.url = "github:edolstra/flake-compat";
26 flake-utils = {
27 url = "github:numtide/flake-utils";
28 };
29
30 # Inputs
31 agenix = {
32 url = "github:ryantm/agenix";
33 inputs = {
34 nixpkgs.follows = "nixpkgs";
35 darwin.follows = "";
36 home-manager.follows = "home-manager";
37 };
38 };
39 buildbot-nix = {
40 url = "github:nix-community/buildbot-nix";
41 inputs.nixpkgs.follows = "nixpkgs";
42 inputs.flake-parts.follows = "flake-parts";
43 inputs.hercules-ci-effects.follows = "";
44 inputs.treefmt-nix.follows = "";
45 };
46 ctp = {
47 url = "github:catppuccin/nix";
48 inputs.nixpkgs.follows = "nixpkgs";
49 };
50 dn42 = {
51 url = "github:pyrox0/dn43.nix";
52 inputs.nixpkgs.follows = "nixpkgs";
53 };
54 easy-hosts.url = "github:tgirlcloud/easy-hosts";
55 glide = {
56 url = "github:glide-browser/glide.nix";
57 inputs.nixpkgs.follows = "nixpkgs";
58 inputs.home-manager.follows = "home-manager";
59 };
60 golink = {
61 url = "github:tailscale/golink";
62 inputs.nixpkgs.follows = "nixpkgs";
63 };
64 hardware = {
65 url = "github:nixos/nixos-hardware";
66 };
67 home-manager = {
68 url = "github:nix-community/home-manager";
69 inputs.nixpkgs.follows = "nixpkgs";
70 };
71 nix-index-database = {
72 url = "github:Mic92/nix-index-database";
73 inputs.nixpkgs.follows = "nixpkgs";
74 };
75 nvf = {
76 url = "github:notashelf/nvf";
77 inputs.flake-compat.follows = "flake-compat";
78 inputs.flake-parts.follows = "flake-parts";
79 inputs.nixpkgs.follows = "nixpkgs";
80 inputs.ndg.follows = "";
81 };
82 my-pkgs = {
83 url = "git+https://git.pyrox.dev/pyrox/pkgs";
84 inputs.nixpkgs.follows = "nixpkgs";
85 };
86 quickshell = {
87 url = "github:quickshell-mirror/quickshell";
88 inputs.nixpkgs.follows = "nixpkgs";
89 };
90 tangled = {
91 url = "git+https://tangled.org/tangled.org/core";
92 inputs.nixpkgs.follows = "nixpkgs";
93 inputs.flake-compat.follows = "flake-compat";
94 # Disable useless monorepo inputs
95 inputs.actor-typeahead-src.follows = "";
96 inputs.fenix.follows = "";
97 inputs.htmx-src.follows = "";
98 inputs.htmx-ws-src.follows = "";
99 inputs.ibm-plex-mono-src.follows = "";
100 inputs.inter-fonts-src.follows = "";
101 inputs.lucide-src.follows = "";
102 inputs.mermaid-src.follows = "";
103 };
104 treefmt-nix = {
105 url = "github:numtide/treefmt-nix";
106 inputs.nixpkgs.follows = "nixpkgs";
107 };
108 };
109
110 outputs =
111 inputs:
112 inputs.flake-parts.lib.mkFlake { inherit inputs; } {
113 # Systems we want to build for
114 systems = [
115 "x86_64-linux"
116 ];
117
118 # Flake modules
119 imports = [
120 inputs.easy-hosts.flakeModule
121 inputs.home-manager.flakeModules.home-manager
122 inputs.treefmt-nix.flakeModule
123 ./packages.nix
124 ./lib
125 ./overlays
126 ./devShells
127 ./nixosModules
128 ./homeModules
129 ./templates
130 ./hosts
131 ./neovim
132 ./data
133 # Called fmodule instead of flake-module to clean up autosuggestions
134 (import ./fmodule.nix)
135 ];
136
137 # Per-system stuff
138 perSystem =
139 {
140 system,
141 ...
142 }:
143 {
144 _module.args.pkgs = import inputs.nixpkgs {
145 inherit system;
146 overlays = [
147 inputs.self.overlays.openssh-fixperms
148 inputs.agenix.overlays.default
149 inputs.glide.overlays.default
150 inputs.golink.overlays.default
151 ];
152 config = {
153 allowUnfree = true;
154 };
155 };
156 treefmt = {
157 programs = {
158 deadnix = {
159 enable = true;
160 no-underscore = true;
161 };
162 jsonfmt.enable = true;
163 jsonfmt.excludes = [ ".zed/settings.json" ];
164 just.enable = true;
165 keep-sorted.enable = true;
166 mdformat.enable = true;
167 mdformat.settings.wrap = 120;
168 nixf-diagnose.enable = true;
169 nixfmt.enable = true;
170 nixfmt.indent = 2;
171 nixfmt.width = 120;
172 shellcheck.enable = true;
173 statix.enable = true;
174 stylua.enable = true;
175 taplo.enable = true;
176 yamlfmt.enable = true;
177 };
178 };
179 };
180 # Enable debugging for nixd
181 debug = true;
182 };
183}