1
0
Fork 0
forked from Bun/nixos-config

Compare commits

...
Sign in to create a new pull request.

98 commits
main ... main

Author SHA1 Message Date
Bun
b3ba7481d8 Modify like, basically everything idk, probably a lot of secrets and url names and colmena and whatnot 2025-06-20 20:20:48 -04:00
Bun
0ab856b18e Add flight, more stuff with distributed builds 2025-06-11 01:29:35 -04:00
Bun
2f76f3be7e Buildmachines works, maybe ? 2025-06-09 21:49:41 -04:00
Bun
9191593dc7 Ok, distributed. Maybe. 2025-06-09 18:24:51 -04:00
Bun
4e145a70d9 Does this even work?? 2025-06-09 16:23:54 -04:00
Bun
7aa39a1110 Begin testing remote builds 2025-06-09 15:34:04 -04:00
Bun
1a4e5103b2 Remove Zellij from zsh 2025-06-06 15:55:08 -04:00
Bun
1f3178804c Tinker with groups, fix 'no effect' prompt 2025-06-06 15:24:58 -04:00
Bun
51044e15eb Add two new servers 2025-06-06 14:54:14 -04:00
Bun
26fd8569fe Add new IP to Mycelium 2025-06-06 02:33:36 -04:00
Bun
95140d5a0e Add Incus to the server services, put Kitty on its own router for an extra public IP 2025-06-06 02:18:44 -04:00
Bun
9c2bf2a898 Remove wheel from trustedusers, since root now handles remote builds 2025-06-05 11:10:09 -04:00
Bun
ee260102d8 Switch to nixos-rebuild-ng 2025-06-05 11:07:16 -04:00
Bun
0efd6ad66e Remove non-static ipv6 addresses from Mycelium and add back the public peers, why not 2025-06-04 23:36:50 -04:00
Bun
761280992e Don't duplicate the user's stateversion for each system 2025-06-04 17:34:19 -04:00
Bun
4848f2bbc9 Import system from flake using defaults, not each system 2025-06-04 17:17:54 -04:00
Bun
7667ef9a1b Update a lot of options, simplify variables, replace options with tags 2025-06-04 16:12:08 -04:00
Bun
dbc0ab6dd3 Switch to more reliable Steam mount, add new network 2025-06-03 01:44:05 -04:00
Bun
43546073cf Add lingering, remove kill on exit, fix smallfetch, replace tmux with zellij 2025-06-02 16:47:10 -04:00
Bun
72d7b9d038 Change permissions of Mycelium key folder 2025-06-01 19:10:33 -04:00
Bun
90976edeec The sudo user was stupid. Provide a password protected key for the root user, have colmena go through that. As intended. 2025-06-01 16:39:21 -04:00
Bun
e5abaafa8d Change mycelium ips and upate flake 2025-06-01 14:51:35 -04:00
Bun
d5605448a1 Avoid errors. This is stupid. 2025-06-01 06:27:55 -04:00
Bun
1f7d01bb4d Add Colmena to manage systems, use better pathing for smallfetch, use better mountpoints and hostnames from Colema 2025-06-01 06:17:48 -04:00
Bun
215ad6b1a7 Simplify flake readability, move NixOS configs outside of flake-utils 2025-05-31 17:47:49 -04:00
Bun
a4d6a7663c Change nfs firewall to include any included mycelium ip 2025-05-31 16:51:16 -04:00
Bun
1bcd590c43 Add Bloxel and fix Gamemode in Waybar 2025-05-30 11:34:25 -04:00
Bun
56a402c7db Add Intuos 2025-05-30 03:04:25 -04:00
Bun
ef3a258b17 Missed the ssh config oops 2025-05-30 01:54:24 -04:00
Bun
f008eadc2f Update Tower IP 2025-05-30 01:28:01 -04:00
Bun
367febd71a Fix missed line 2025-05-30 00:46:10 -04:00
Bun
287dcdf54e Fix typo 2025-05-30 00:43:48 -04:00
Bun
6a2fd78220 Add Jupiter to mycelium 2025-05-30 00:42:55 -04:00
Bun
3bf365966c Update Kitty IP 2025-05-29 23:56:22 -04:00
Bun
c1819b68a1 Update some of the ips I missed oopsies 2025-05-29 23:40:11 -04:00
Bun
48b55af695 Update all to mycelium ips 2025-05-29 23:29:05 -04:00
Bun
200bf7e711 Add basic mycelium, change some hardware and browser stuff 2025-05-29 22:15:35 -04:00
Bun
f49316e600 Stop using unstable packages where they aren't necessary 2025-05-29 17:36:02 -04:00
Bun
a78189de25 Use center instead of fill for wpaperd 2025-05-29 17:31:11 -04:00
Bun
12621e5dcf Add back wpaperd 2025-05-29 17:28:32 -04:00
Bun
f41d78a638 Modify secrets 2025-05-29 17:16:49 -04:00
Bun
64151b3fa8 Fix server 25.05 stuff 2025-05-29 17:09:39 -04:00
Bun
7a128968c2 Fix Tower and waybar 2025-05-28 23:30:55 -04:00
Bun
63c42b081d Update for 25.05 2025-05-28 18:20:15 -04:00
Bun
8bfcca1bb8 Update Detritus to secureboot 2025-05-24 10:52:03 -04:00
Bun
fdc052c15a Changes to Detritus 2025-05-23 19:45:51 -04:00
Bun
30a1103eab Remove Teams for Linux, Thunderbird acts as a replacement 2025-05-22 10:24:13 -04:00
Bun
80fde8b6f8 Remove options that don't make sense for Thunderbird 2025-05-22 09:10:56 -04:00
Bun
493001ab76 Add back NixOS hardware, possibly for testing Pis in the future 2025-05-21 21:15:32 -04:00
Bun
81a49a9e77 Add usb storage to initrd of Hidden 2025-05-21 13:59:17 -04:00
Bun
f461741432 Remove Remond properly 2025-05-20 20:25:46 -04:00
Bun
b01eca4124 Remove Redmond 2025-05-20 20:25:28 -04:00
Bun
63eef3d45b Don't use swayidle on tower because it wakes up in a weird state. 2025-05-20 20:23:19 -04:00
Bun
01e78619e3 Move Games dir into the games impermanence dir 2025-05-20 12:27:18 -04:00
Bun
83f419b6f1 Simple Redmond change 2025-05-19 13:36:06 -04:00
Bun
1df0e18f7e Move ssh alias to ssh program configuration 2025-05-18 16:53:00 -04:00
Bun
f00dda831e Fix impermanence in the context of it not working on non-nix distros 2025-05-18 04:51:21 -04:00
Bun
2a7d99a849 Move two other computers from AMD to CPU microcode. 2025-05-18 04:47:08 -04:00
Bun
3f257e006c Generalize some more files, make hidden use Intel microcode and not AMD 2025-05-18 04:35:54 -04:00
Bun
2e483af205 Remove lib from SSH 2025-05-16 21:09:42 -04:00
Bun
099bcb150b Move xdg portals into home-manager 2025-05-16 11:29:37 -04:00
Bun
f30a5824a5 Change Steam to symlink as recommended by the impermanence git 2025-05-16 04:46:30 -04:00
Bun
aee7a6b8c8 Attempt a Steam fix? 2025-05-16 04:33:19 -04:00
Bun
fca8a0e7e4 Allowothers enabled on Nix systems 2025-05-16 03:31:17 -04:00
Bun
88933b9ce2 Remove some grossness in Jovian 2025-05-16 03:00:23 -04:00
Bun
2ddcbbc58c Missed a lib 2025-05-16 02:52:57 -04:00
Bun
986a8dd01a Standardize formatting 2025-05-16 02:52:31 -04:00
Bun
517b0a5981 Add SSH configuration, move more things to xdg dirs 2025-05-16 02:45:17 -04:00
Bun
48ce4411be Add style name override to qt, figure out how to pass to Sway soon 2025-05-16 00:31:59 -04:00
Bun
4a615cd594 Specify unstable version of vmware, as stable is broken 2025-05-15 10:03:30 -04:00
Bun
9c409cc91a Simplify fastfetch config using a with statement 2025-05-15 09:56:39 -04:00
Bun
3978369995 do the same browser shortening to thunderbird 2025-05-15 01:15:48 -04:00
Bun
f797abf235 Fix Librewolf profile id 0 causing errors 2025-05-15 00:39:39 -04:00
Bun
43e11222ad Fix fastfetch 2025-05-14 17:09:15 -04:00
Bun
d1e6fad5b3 Make latest kernel default, remove old dbus option 2025-05-14 16:47:45 -04:00
Bun
02a284fe90 Do some more rearranging and moving and accept risk on gamemode 2025-05-14 15:12:19 -04:00
Bun
c41543edcf Move more things to xdg paths 2025-05-14 14:57:32 -04:00
Bun
04560dfbc5 Add vmware to system, simplify homedir logic, add more Hidden 2025-05-14 09:36:13 -04:00
Bun
f75eec5484 Add hidden partition 2025-05-14 12:07:20 +00:00
Bun
161c11c23a Use Stow on generic distros also 2025-05-14 01:09:16 -04:00
Bun
66502988ef Update home impermanence to be in the style of GNU Stow 2025-05-14 00:12:33 -04:00
Bun
968ae4631c Remove some firewall rules 2025-05-13 12:45:52 -04:00
Bun
86a180de0c Make Detritus work by any means necessary 2025-05-13 12:18:30 -04:00
Bun
b7c5651306 Add more Detritus 2025-05-13 04:04:30 -04:00
Bun
ca2d6e4091 Add Detritus 2025-05-13 04:12:46 +00:00
Bun
822fa6eae2 Change what power keys do, set new xdg default apps 2025-05-12 20:07:11 -04:00
Bun
f0bd401ef4 Standardize impermanence import 2025-05-12 18:10:51 -04:00
Bun
e62bea822a Remove unnecessary display variables 2025-05-12 16:41:18 -04:00
Bun
a60084f77c Add a few more rules to Kanshi 2025-05-12 16:34:00 -04:00
Bun
fd2d9b18a0 Update flake.lock 2025-05-12 14:52:28 -04:00
Bun
a791dd0583 Fix waybar Nvidia module 2025-05-12 11:19:54 -04:00
Bun
f50b90ba94 Push an ugly dumb hm standardization 2025-05-12 04:07:39 -04:00
Bun
af605502d0 Update color of weather module on waybar 2025-05-12 02:44:11 -04:00
Bun
f8cbfda048 Fix folder paths, set Tower back to stable, remove Nix channels for system for now 2025-05-11 01:48:37 -04:00
Bun
f8ba0f4514 Add target for generic Linux distros 2025-05-11 00:06:12 -04:00
Bun
2d9dcf079a Reduce redundancy in flake.nix, add new hm profile for desktops 2025-05-11 00:01:07 -04:00
Bun
20707d250e Simplify flake further 2025-05-10 13:55:27 -04:00
Bun
d257cd9bf5 Systemd-ify Waybar, move aliases to individualized places, more Sway and Jovian changes 2025-05-10 11:27:52 -04:00
266 changed files with 2494 additions and 2193 deletions

View file

@ -6,7 +6,7 @@ This config is primarily organized for my own use, you may find individual servi
### Installation ### Installation
You can install this flake from any system with the Nix package manager installed, including any official images. You can install this flake from any system with the Nix package manager installed, including any official images.
Disko is used to automatically format your drive according to a declared config. Disko is used to automatically format your drive according to a declared config.
Use ``nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount ./filename.nix`` to format the disk with Disko. Use ``nix-shell -p disko --run "sudo disko --mode destroy,format,mount ./disko.nix"`` to format the disk with Disko.
You will likely want to generate a per hardware nix file using ``nixos-generate-config --root ./ --no-filesystems``, and adapt it to fit the format of ``/hosts``, to ensure essential drivers are loaded on boot. You will likely want to generate a per hardware nix file using ``nixos-generate-config --root ./ --no-filesystems``, and adapt it to fit the format of ``/hosts``, to ensure essential drivers are loaded on boot.
Once formatted and adjusted, NixOS can be installed to the mounted drive with ``nixos-install --root /mnt --flake .#host``, where ``host`` is a hostname defined in this flake. Once formatted and adjusted, NixOS can be installed to the mounted drive with ``nixos-install --root /mnt --flake .#host``, where ``host`` is a hostname defined in this flake.

239
flake.lock generated
View file

@ -2,7 +2,9 @@
"nodes": { "nodes": {
"blender": { "blender": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs" "nixpkgs": [
"unstable"
]
}, },
"locked": { "locked": {
"dir": "blender", "dir": "blender",
@ -37,18 +39,12 @@
} }
}, },
"crane": { "crane": {
"inputs": {
"nixpkgs": [
"lanzaboote",
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1717535930, "lastModified": 1748970125,
"narHash": "sha256-1hZ/txnbd/RmiBPNUs7i8UQw2N89uAK3UzrGAWdnFfU=", "narHash": "sha256-UDyigbDGv8fvs9aS95yzFfOKkEjx1LO3PL3DsKopohA=",
"owner": "ipetkov", "owner": "ipetkov",
"repo": "crane", "repo": "crane",
"rev": "55e7754ec31dac78980c8be45f8a28e80e370946", "rev": "323b5746d89e04b22554b061522dfce9e4c49b18",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -64,11 +60,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1746411114, "lastModified": 1749436314,
"narHash": "sha256-mLlkVX1kKbAa/Ns5u26wDYw4YW4ziMFM21fhtRmfirU=", "narHash": "sha256-CqmqU5FRg5AadtIkxwu8ulDSOSoIisUMZRLlcED3Q5w=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "b5d1320ebc2f34dbea4655f95167f55e2130cdb3", "rev": "dfa4d1b9c39c0342ef133795127a3af14598017a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -80,11 +76,11 @@
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1696426674, "lastModified": 1747046372,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -96,11 +92,11 @@
"flake-compat_2": { "flake-compat_2": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1696426674, "lastModified": 1747046372,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -112,11 +108,11 @@
"flake-compat_3": { "flake-compat_3": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1733328505, "lastModified": 1747046372,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=",
"owner": "edolstra", "owner": "edolstra",
"repo": "flake-compat", "repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -133,11 +129,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1717285511, "lastModified": 1749398372,
"narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", "narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", "rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -172,11 +168,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1710146030, "lastModified": 1731533236,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -203,6 +199,32 @@
"type": "github" "type": "github"
} }
}, },
"git-hooks": {
"inputs": {
"flake-compat": [
"mailserver",
"flake-compat"
],
"gitignore": "gitignore_2",
"nixpkgs": [
"mailserver",
"nixpkgs"
]
},
"locked": {
"lastModified": 1742649964,
"narHash": "sha256-DwOTp7nvfi8mRfuL1escHDXabVXFGT1VlPD1JHrtrco=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "dcf5072734cb576d2b0c59b2ac44f5050b5eac82",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": { "gitignore": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -225,6 +247,28 @@
"type": "github" "type": "github"
} }
}, },
"gitignore_2": {
"inputs": {
"nixpkgs": [
"mailserver",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"hm": { "hm": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -232,16 +276,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1746171682, "lastModified": 1749154018,
"narHash": "sha256-EyXUNSa+H+YvGVuQJP1nZskXAowxKYp79RNUsNdQTj4=", "narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "50eee705bbdbac942074a8c120e8194185633675", "rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.11", "ref": "release-25.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -269,11 +313,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1746158343, "lastModified": 1749495634,
"narHash": "sha256-i/1os9oEq0m/Da4FTdSqKUdI4+wzrvoDTuk1/dHSVDc=", "narHash": "sha256-NPifVq2XZGRCsLBoUt6M5YUTiIh23+ubq57w7mSODt8=",
"owner": "Jovian-Experiments", "owner": "Jovian-Experiments",
"repo": "Jovian-NixOS", "repo": "Jovian-NixOS",
"rev": "8b45a8efb2829adf2996b51965ada1e4620631ac", "rev": "c40d2f31f92571bf341497884174a132829ef0fc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -287,7 +331,6 @@
"crane": "crane", "crane": "crane",
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"flake-utils": "flake-utils",
"nixpkgs": [ "nixpkgs": [
"stable" "stable"
], ],
@ -295,16 +338,15 @@
"rust-overlay": "rust-overlay" "rust-overlay": "rust-overlay"
}, },
"locked": { "locked": {
"lastModified": 1718178907, "lastModified": 1749471908,
"narHash": "sha256-eSZyrQ9uoPB9iPQ8Y5H7gAmAgAvCw3InStmU3oEjqsE=", "narHash": "sha256-uGfPqd43KTomeIVWUzHu3hGLWFsqYibhWLt2OaRic28=",
"owner": "nix-community", "owner": "nix-community",
"repo": "lanzaboote", "repo": "lanzaboote",
"rev": "b627ccd97d0159214cee5c7db1412b75e4be6086", "rev": "00292388ad3b497763b81568d6ee5e1c4a2bcf85",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "v0.4.1",
"repo": "lanzaboote", "repo": "lanzaboote",
"type": "github" "type": "github"
} }
@ -313,22 +355,23 @@
"inputs": { "inputs": {
"blobs": "blobs", "blobs": "blobs",
"flake-compat": "flake-compat_2", "flake-compat": "flake-compat_2",
"git-hooks": "git-hooks",
"nixpkgs": [ "nixpkgs": [
"stable" "stable"
], ],
"nixpkgs-24_11": "nixpkgs-24_11" "nixpkgs-25_05": "nixpkgs-25_05"
}, },
"locked": { "locked": {
"lastModified": 1746469806, "lastModified": 1747965231,
"narHash": "sha256-kL3cc25sc0x+6gBZYjuE4566RT1E3XLQs4V8sl7D+VE=", "narHash": "sha256-BW3ktviEhfCN/z3+kEyzpDKAI8qFTwO7+S0NVA0C90o=",
"owner": "simple-nixos-mailserver", "owner": "simple-nixos-mailserver",
"repo": "nixos-mailserver", "repo": "nixos-mailserver",
"rev": "14857a0309d7bbdf7c51bbfa309d0d13448ae77e", "rev": "53007af63fade28853408370c4c600a63dd97f41",
"type": "gitlab" "type": "gitlab"
}, },
"original": { "original": {
"owner": "simple-nixos-mailserver", "owner": "simple-nixos-mailserver",
"ref": "nixos-24.11", "ref": "nixos-25.05",
"repo": "nixos-mailserver", "repo": "nixos-mailserver",
"type": "gitlab" "type": "gitlab"
} }
@ -337,14 +380,16 @@
"inputs": { "inputs": {
"flake-compat": "flake-compat_3", "flake-compat": "flake-compat_3",
"flake-utils": "flake-utils_2", "flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs_2" "nixpkgs": [
"stable"
]
}, },
"locked": { "locked": {
"lastModified": 1746324578, "lastModified": 1749607590,
"narHash": "sha256-VUSIQ2W1Q3YgGvX3M4jPwIi3iIApdPHabhdrVjVgnwE=", "narHash": "sha256-vvu9zoaYuuPIGG9YKRBMNqOELGN+x2qHbEK6PrZ/Ky0=",
"owner": "Infinidoge", "owner": "Infinidoge",
"repo": "nix-minecraft", "repo": "nix-minecraft",
"rev": "9e7fd83ba3b25b6f03561a5b7f8ea74b70296816", "rev": "83aaf9c7e3caa39608992e723cfb997624920a35",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -375,64 +420,18 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs": { "nixpkgs-25_05": {
"locked": { "locked": {
"lastModified": 1733808091, "lastModified": 1747610100,
"narHash": "sha256-KWwINTQelKOoQgrXftxoqxmKFZb9pLVfnRvK270nkVk=", "narHash": "sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh+R0EKZfroAc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "a0f3e10d94359665dba45b71b4227b0aeb851f8e", "rev": "ca49c4304acf0973078db0a9d200fd2bae75676d",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-24.11",
"type": "indirect"
}
},
"nixpkgs-24_11": {
"locked": {
"lastModified": 1734083684,
"narHash": "sha256-5fNndbndxSx5d+C/D0p/VF32xDiJCJzyOqorOYW4JEo=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "314e12ba369ccdb9b352a4db26ff419f7c49fa84",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-24.11",
"type": "indirect"
}
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1710695816,
"narHash": "sha256-3Eh7fhEID17pv9ZxrPwCLfqXnYP006RKzSs0JptsN84=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "614b4613980a522ba49f0d194531beddbb7220d3",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-23.11", "ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1742889210,
"narHash": "sha256-hw63HnwnqU3ZQfsMclLhMvOezpM7RSB0dMAtD5/sOiw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "698214a32beb4f4c8e3942372c694f40848b360d",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@ -446,11 +445,11 @@
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1746568792, "lastModified": 1749614785,
"narHash": "sha256-e3QkOhtYJUlMLGCVUmQWULtVDokSJqud0VmPZoRj4s0=", "narHash": "sha256-yn6eDwnUr9vZYpneg+XNh0/tC1KA9a+yXxvFMEzOfco=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "29d16321b0f48ad0d24c3eaf5656adfaaf99d19e", "rev": "14f8439ad1190d3dd09f9fcc6a033d9710d68806",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -469,15 +468,14 @@
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
"nixpkgs" "nixpkgs"
], ]
"nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1717664902, "lastModified": 1747372754,
"narHash": "sha256-7XfBuLULizXjXfBYy/VV+SpYMHreNRHk9nKMsm1bgb4=", "narHash": "sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo+bnXU9D9k=",
"owner": "cachix", "owner": "cachix",
"repo": "pre-commit-hooks.nix", "repo": "pre-commit-hooks.nix",
"rev": "cc4d466cb1254af050ff7bdf47f6d404a7c646d1", "rev": "80479b6ec16fefd9c1db3ea13aeb038c60530f46",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -490,6 +488,7 @@
"inputs": { "inputs": {
"blender": "blender", "blender": "blender",
"disko": "disko", "disko": "disko",
"flake-utils": "flake-utils",
"hm": "hm", "hm": "hm",
"impermanence": "impermanence", "impermanence": "impermanence",
"jovian": "jovian", "jovian": "jovian",
@ -503,21 +502,17 @@
}, },
"rust-overlay": { "rust-overlay": {
"inputs": { "inputs": {
"flake-utils": [
"lanzaboote",
"flake-utils"
],
"nixpkgs": [ "nixpkgs": [
"lanzaboote", "lanzaboote",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1717813066, "lastModified": 1749436897,
"narHash": "sha256-wqbRwq3i7g5EHIui0bIi84mdqZ/It1AXBSLJ5tafD28=", "narHash": "sha256-OkDtaCGQQVwVFz5HWfbmrMJR99sFIMXHCHEYXzUJEJY=",
"owner": "oxalica", "owner": "oxalica",
"repo": "rust-overlay", "repo": "rust-overlay",
"rev": "6dc3e45fe4aee36efeed24d64fc68b1f989d5465", "rev": "e7876c387e35dc834838aff254d8e74cf5bd4f19",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -528,16 +523,16 @@
}, },
"stable": { "stable": {
"locked": { "locked": {
"lastModified": 1746422338, "lastModified": 1750005367,
"narHash": "sha256-NTtKOTLQv6dPfRe00OGSywg37A1FYqldS6xiNmqBUYc=", "narHash": "sha256-h/aac1dGLhS3qpaD2aZt25NdKY7b+JT0ZIP2WuGsJMU=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5b35d248e9206c1f3baf8de6a7683fee126364aa", "rev": "6c64dabd3aa85e0c02ef1cdcb6e1213de64baee3",
"type": "github" "type": "github"
}, },
"original": { "original": {
"id": "nixpkgs", "id": "nixpkgs",
"ref": "nixos-24.11", "ref": "nixos-25.05",
"type": "indirect" "type": "indirect"
} }
}, },
@ -594,11 +589,11 @@
}, },
"unstable": { "unstable": {
"locked": { "locked": {
"lastModified": 1746461020, "lastModified": 1749794982,
"narHash": "sha256-7+pG1I9jvxNlmln4YgnlW4o+w0TZX24k688mibiFDUE=", "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "3730d8a308f94996a9ba7c7138ede69c1b9ac4ae", "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81",
"type": "github" "type": "github"
}, },
"original": { "original": {

119
flake.nix
View file

@ -1,9 +1,12 @@
{ {
inputs = { inputs = {
# General inputs # General inputs
stable.url = "nixpkgs/nixos-24.11"; stable.url = "nixpkgs/nixos-25.05";
unstable.url = "nixpkgs/nixos-unstable"; unstable.url = "nixpkgs/nixos-unstable";
# Flake helpers
flake-utils.url = "github:numtide/flake-utils";
# System inputs # System inputs
disko = { disko = {
url = "github:nix-community/disko"; url = "github:nix-community/disko";
@ -13,7 +16,7 @@
impermanence.url = "github:nix-community/impermanence"; impermanence.url = "github:nix-community/impermanence";
lanzaboote = { lanzaboote = {
url = "github:nix-community/lanzaboote/v0.4.1"; url = "github:nix-community/lanzaboote";
inputs.nixpkgs.follows = "stable"; inputs.nixpkgs.follows = "stable";
}; };
@ -25,72 +28,98 @@
# Service inputs # Service inputs
mailserver = { mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.11"; url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.05";
inputs.nixpkgs.follows = "stable"; inputs.nixpkgs.follows = "stable";
}; };
minecraft.url = "github:Infinidoge/nix-minecraft"; minecraft = {
url = "github:Infinidoge/nix-minecraft";
inputs.nixpkgs.follows = "stable";
};
# Home inputs # Home inputs
hm = { hm = {
url = "github:nix-community/home-manager/release-24.11"; url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "stable"; inputs.nixpkgs.follows = "stable";
}; };
nur = { nur = {
url = "github:nix-community/NUR"; url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "unstable"; inputs.nixpkgs.follows = "unstable";
}; };
blender.url = "github:edolstra/nix-warez?dir=blender"; # Specific apps
blender = {
url = "github:edolstra/nix-warez?dir=blender";
inputs.nixpkgs.follows = "unstable";
};
}; };
outputs = { outputs = inputs: with inputs;
stable,
unstable,
disko, {
impermanence, colmena = {
lanzaboote, meta = {
# Info
description = "The Bun Systems";
name = "bunhive";
mailserver, # NixPKGs
minecraft, nixpkgs = import stable {
overlays = [
blender.overlays.default
minecraft.overlay
];
system = "x86_64-linux";
};
jovian,
hm,
nur,
blender,
...
}@inputs:
let
mkNix = modules: channel: channel.lib.nixosSystem {
inherit modules;
specialArgs = inputs; specialArgs = inputs;
# Use a different Nixpkgs import on some systems
nodeNixpkgs.jupiter = import unstable { system = "x86_64-linux"; };
}; };
mkHome = modules: channel: arch: hm.lib.homeManagerConfiguration {
inherit modules; # Import the default config to all hosts
pkgs = builtins.getAttr arch channel.legacyPackages; defaults.imports = [
./modules/system
disko.nixosModules.disko
hm.nixosModules.home-manager
impermanence.nixosModules.impermanence
jovian.nixosModules.default
lanzaboote.nixosModules.lanzaboote
minecraft.nixosModules.minecraft-servers
];
# Desktops
tower.imports = [ ./hosts/tower ];
hidden.imports = [ ./hosts/hidden ];
# Laptops
intuos.imports = [ ./hosts/intuos ];
jupiter.imports = [ ./hosts/jupiter ];
flight.imports = [ ./hosts/flight ];
# Servers
midas.imports = [ ./hosts/midas ];
kitty.imports = [ ./hosts/kitty ];
detritus.imports = [ ./hosts/detritus ];
prophet.imports = [ ./hosts/prophet ];
};
}
// flake-utils.lib.eachDefaultSystemPassThrough (system: let
mkHome = extraModules: hm.lib.homeManagerConfiguration {
modules = [
./modules/home
{ targets.genericLinux.enable = true; }
] ++ extraModules;
extraSpecialArgs = inputs; extraSpecialArgs = inputs;
pkgs = builtins.getAttr system stable.legacyPackages;
}; };
in { in {
# nh os switch /path -H host
nixosConfigurations = {
tower = mkNix [ ./hosts/tower ] stable; # Main Desktop
intuos = mkNix [ ./hosts/intuos ] stable; # Wacom Intuos Tablet
jupiter = mkNix [ ./hosts/jupiter ] unstable; # Steam Deck
redmond = mkNix [ ./hosts/redmond ] stable; # Lenovo Dual-Boot
midas = mkNix [ ./hosts/midas ] stable; # Dell Optiplex 5040
kitty = mkNix [ ./hosts/kitty ] stable; # Dell Optiplex 7010
prophet = mkNix [ ./hosts/prophet ] stable; # Oracle Neoverse-N1
};
# nh home switch /path -c arch
homeConfigurations = { homeConfigurations = {
x86 = mkHome [ ./modules/home ] stable "x86_64-linux"; default = mkHome [ ];
aarch = mkHome [ ./modules/home ] stable "aarch64-linux"; desktop = mkHome [{ home.guifull.enable = true; }];
};
}; };
});
} }

View file

@ -0,0 +1,7 @@
{ pkgs, ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages_hardened;
loader.limine.enable = true;
};
}

View file

@ -0,0 +1,22 @@
{ ... }:
{
imports = [
./boot
./disko
./filesystems
./hardware
];
system = {
nixos.tags = [ "server" ];
stateVersion = "25.05";
};
deployment.targetHost = "53a:2092:12ff:889c:2e1f:1d79:f05a:cadd";
networking.hostId = "0917a5c1";
services.nfs.server.enable = true;
virtualisation.libvirtd.enable = true;
}

View file

@ -0,0 +1,99 @@
{ config, name, ... }:
{
disko.devices = {
disk = {
"${name}" = {
type = "disk";
device = "/dev/sda";
content = {
type = "gpt";
partitions = {
boot = {
priority = 1;
size = "1M";
type = "EF02";
};
ESP = {
size = "2G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "umask=0077" ];
};
};
main = {
size = "100%";
content = {
type = "lvm_pv";
vg = "${name}";
};
};
};
};
};
};
lvm_vg = {
"${name}" = {
type = "lvm_vg";
lvs = {
root = {
size = "100%";
content = {
type = "btrfs";
extraArgs = [ "-f" ];
subvolumes = {
"/root" = {
mountpoint = "/";
mountOptions = [
"compress=zstd"
"ssd"
];
};
"/prev" = {
mountpoint = "/prev";
mountOptions = [
"compress=zstd"
"noexec"
"ssd"
];
};
"/nix" = {
mountpoint = "/nix";
mountOptions = [
"compress=zstd"
"ssd"
];
};
# Impermanence
"/persist" = {
mountpoint = "/persist";
mountOptions = [
"compress=zstd"
"ssd"
];
};
"/persist/.snapshots" = { };
"/persist/home" = { };
"/persist/home/.snapshots" = { };
};
};
};
swap = {
size = "2G";
content = {
type = "swap";
discardPolicy = "both";
};
};
};
};
};
};
# Needed for impermanence
fileSystems."/persist".neededForBoot = true;
}

View file

@ -0,0 +1,14 @@
{ ... }:
{
fileSystems = {
"/persist/storage" = {
device = "/dev/disk/by-uuid/d0d6783f-ad51-4d85-b8a9-3374f6460ef6";
fsType = "btrfs";
options = [
"nofail"
"nosuid"
"subvol=storage"
];
};
};
}

View file

@ -0,0 +1,23 @@
{ modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
availableKernelModules = [
"ahci"
"ehci_pci"
"sd_mod"
"usb_storage"
"usbhid"
"xhci_pci_renesas"
];
kernelModules = [ "dm-snapshot" ];
};
kernelModules = [ "kvm-intel" ];
};
hardware.cpu.intel.updateMicrocode = true;
nixpkgs.hostPlatform = "x86_64-linux";
}

View file

@ -0,0 +1,11 @@
{ lib, pkgs, ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages;
loader.limine = {
enable = true;
biosDevice = lib.mkForce "/dev/disk/by-id/ata-XSTAR_SSD_64GB_XSFA2011000462";
};
plymouth.enable = true;
};
}

17
hosts/flight/default.nix Normal file
View file

@ -0,0 +1,17 @@
{ ... }:
{
imports = [
./boot
./filesystems
./hardware
./root
./user
];
system = {
nixos.tags = [ "pc" ];
stateVersion = "25.05";
};
deployment.targetHost = "409:b2b1:966c:b13:6d67:2d6b:45e2:f048";
}

View file

@ -0,0 +1,14 @@
{ config, ... }:
{
fileSystems = {
"/persist/storage" = {
device = "/dev/disk/by-uuid/3d6f81f2-7fa5-40a2-85bb-56f4cab63773";
fsType = "btrfs";
options = [
"nofail"
"nosuid"
"subvol=storage"
];
};
};
}

View file

@ -0,0 +1,35 @@
{ config, modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
availableKernelModules = [
"ehci_pci"
"ahci"
"xhci_pci"
"usb_storage"
"sd_mod"
"sr_mod"
];
kernelModules = [ "dm-snapshot" ];
};
kernelModules = [ "kvm-intel" ];
};
services.xserver.videoDrivers = [ "nvidia" ];
hardware = {
cpu.intel.updateMicrocode = true;
nvidia = {
package = config.boot.kernelPackages.nvidiaPackages.legacy_390;
prime = {
sync.enable = true;
intelBusId = "PCI:0:2:0";
nvidiaBusId = "PCI:1:0:0";
};
};
};
nixpkgs.hostPlatform = "x86_64-linux";
}

View file

@ -0,0 +1,54 @@
{ config, name, ... }:
{
boot.initrd.luks.devices."${name}-disk".device = "/dev/disk/by-uuid/0fc43c11-c382-4e37-812b-8866b1b20e68";
fileSystems = {
"/boot" = {
device = "/dev/disk/by-uuid/FA96-EF11";
fsType = "vfat";
options = [ "umask=0077" ];
};
"/" = {
device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483";
fsType = "btrfs";
options = [
"compress=zstd"
"ssd"
"subvol=root"
];
};
"/prev" = {
device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483";
fsType = "btrfs";
options = [
"compress=zstd"
"noexec"
"ssd"
"subvol=prev"
];
};
"/nix" = {
device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483";
fsType = "btrfs";
options = [
"compress=zstd"
"ssd"
"subvol=nix"
];
};
"/persist" = {
device = "/dev/disk/by-uuid/bbaf733b-14af-417b-b1c8-2f0534995483";
fsType = "btrfs";
neededForBoot = true;
options = [
"compress=zstd"
"ssd"
"subvol=persist"
];
};
};
swapDevices = [ { device = "/dev/disk/by-uuid/93ac8c5c-c947-4b45-a12a-146e87398517"; } ];
}

View file

@ -0,0 +1,7 @@
{ config, lib, ... }:
{
home-manager.users."${config.vars.mainUser}" = {
home.guifull.enable = true;
wayland.windowManager.sway.extraSessionCommands = lib.mkForce "";
};
}

View file

@ -0,0 +1,8 @@
{ pkgs, ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages_6_14;
loader.limine.enable = true;
plymouth.enable = true;
};
}

17
hosts/hidden/default.nix Normal file
View file

@ -0,0 +1,17 @@
{ ... }:
{
imports = [
./boot
./disko
./hardware
./services
./user
];
system = {
nixos.tags = [ "pc" ];
stateVersion = "24.11";
};
deployment.targetHost = "4ec:1001:ca5a:ae79:40e2:cb4c:e3c9:f401";
}

View file

@ -1,16 +1,15 @@
{ config, disko, ... }: { config, name, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${config.networking.hostName}" = { "${name}" = {
type = "disk"; type = "disk";
device = "/dev/nvme0n1"; device = "/dev/sda";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -28,12 +27,12 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "${config.networking.hostName}-disk"; name = "${name}-disk";
settings.allowDiscards = true; settings.allowDiscards = true;
passwordFile = "/tmp/secret.key"; passwordFile = "/tmp/secret.key";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${config.networking.hostName}"; vg = "${name}";
}; };
}; };
}; };
@ -43,7 +42,7 @@
}; };
lvm_vg = { lvm_vg = {
"${config.networking.hostName}" = { "${name}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {
@ -54,24 +53,34 @@
subvolumes = { subvolumes = {
"/root" = { "/root" = {
mountpoint = "/"; mountpoint = "/";
mountOptions = [ "compress=zstd" ]; mountOptions = [
"compress=zstd"
"ssd"
];
}; };
"/prev" = { "/prev" = {
mountpoint = "/prev"; mountpoint = "/prev";
mountOptions = [ mountOptions = [
"compress=zstd" "compress=zstd"
"noexec" "noexec"
"ssd"
]; ];
}; };
"/nix" = { "/nix" = {
mountpoint = "/nix"; mountpoint = "/nix";
mountOptions = [ "compress=zstd" ]; mountOptions = [
"compress=zstd"
"ssd"
];
}; };
# Impermanence # Impermanence
"/persist" = { "/persist" = {
mountpoint = "/persist"; mountpoint = "/persist";
mountOptions = [ "compress=zstd" ]; mountOptions = [
"compress=zstd"
"ssd"
];
}; };
"/persist/.snapshots" = { }; "/persist/.snapshots" = { };
"/persist/home" = { }; "/persist/home" = { };
@ -80,7 +89,7 @@
}; };
}; };
swap = { swap = {
size = "8G"; size = "2G";
content = { content = {
type = "swap"; type = "swap";
discardPolicy = "both"; discardPolicy = "both";

View file

@ -0,0 +1,27 @@
{ modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
availableKernelModules = [
"ahci"
"nvme"
"sd_mod"
"sr_mod"
"usb_storage"
"usbhid"
"xhci_pci"
];
kernelModules = [ "dm-snapshot" ];
};
kernelModules = [ "kvm-intel" ];
};
hardware.cpu = {
amd.updateMicrocode = true;
intel.updateMicrocode = true;
};
nixpkgs.hostPlatform = "x86_64-linux";
}

View file

@ -0,0 +1,9 @@
{ config, lib, ... }:
{
networking.useNetworkd = lib.mkForce false;
virtualisation = {
libvirtd.enable = true;
vmware.host.enable = true;
};
}

View file

@ -0,0 +1,7 @@
{ config, ... }:
{
home-manager.users."${config.vars.mainUser}".home = {
desktop.enable = true;
school.enable = true;
};
}

View file

@ -1,7 +1,6 @@
{ pkgs, ... }: { ... }:
{ {
boot = { boot = {
kernelPackages = pkgs.linuxPackages_latest;
lanzaboote.enable = true; lanzaboote.enable = true;
plymouth.enable = true; plymouth.enable = true;
}; };

View file

@ -3,16 +3,14 @@
imports = [ imports = [
./boot ./boot
./disko ./disko
./filesystems
./hardware ./hardware
./user ./user
../../modules/system
]; ];
networking.hostName = "intuos";
system = { system = {
desktop.enable = true; nixos.tags = [ "pc" ];
stateVersion = "24.11"; stateVersion = "24.11";
}; };
deployment.targetHost = "40e:404:a427:da33:163e:97b3:a2a3:9ed4";
} }

View file

@ -1,16 +1,15 @@
{ config, disko, ... }: { config, name, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${config.networking.hostName}" = { "${name}" = {
type = "disk"; type = "disk";
device = "/dev/sda"; device = "/dev/sda";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -28,12 +27,12 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "${config.networking.hostName}-disk"; name = "${name}-disk";
settings.allowDiscards = true; settings.allowDiscards = true;
passwordFile = "/tmp/secret.key"; passwordFile = "/tmp/secret.key";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${config.networking.hostName}"; vg = "${name}";
}; };
}; };
}; };
@ -43,7 +42,7 @@
}; };
lvm_vg = { lvm_vg = {
"${config.networking.hostName}" = { "${name}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -1,32 +0,0 @@
{ config, ... }:
{
fileSystems = {
"/home/${config.sysusers.main}/Network/Midas" = {
device = "10.2.0.1:/storage";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
"/home/${config.sysusers.main}/Network/Kitty" = {
device = "10.2.0.2:/storage/bun";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
"/home/${config.sysusers.main}/Network/Prophet" = {
device = "mx.nixfox.ca:/storage";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
};
}

View file

@ -1,4 +1,4 @@
{ config, lib, modulesPath, ... }: { modulesPath, ... }:
{ {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
@ -16,6 +16,7 @@
kernelModules = [ "kvm-intel" ]; kernelModules = [ "kvm-intel" ];
}; };
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = true;
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = "x86_64-linux";
} }

View file

@ -1,8 +1,7 @@
{ config, lib, ... }: { config, ... }:
{ {
home-manager.users."${config.sysusers.main}".home = { home-manager.users."${config.vars.mainUser}".home = {
desktop.enable = true; desktop.enable = true;
production.enable = true; production.enable = true;
stateVersion = lib.mkForce config.system.stateVersion;
}; };
} }

View file

@ -1,8 +1,8 @@
{ pkgs, ... }: { pkgsStable, ... }:
{ {
boot = { boot = {
kernelPackages = pkgs.linuxPackages_latest; kernelPackages = pkgsStable.linuxPackages_6_14;
loader.systemd-boot.enable = true; loader.limine.enable = true;
plymouth.enable = true; plymouth.enable = true;
}; };
} }

View file

@ -8,14 +8,14 @@
./jovian ./jovian
./services ./services
./user ./user
../../modules/system
]; ];
networking.hostName = "jupiter";
system = { system = {
desktop.enable = true; nixos.tags = [ "pc" ];
steamdeck.enable = true;
stateVersion = "24.11"; stateVersion = "24.11";
}; };
deployment.targetHost = "5ce:969c:40d1:9575:f5e:591d:c377:a20b";
jovian.steam.enable = true;
} }

View file

@ -1,16 +1,15 @@
{ config, disko, ... }: { config, name, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${config.networking.hostName}" = { "${name}" = {
type = "disk"; type = "disk";
device = "/dev/nvme0n1"; device = "/dev/nvme0n1";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -28,7 +27,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${config.networking.hostName}"; vg = "${name}";
}; };
}; };
}; };
@ -37,7 +36,7 @@
}; };
lvm_vg = { lvm_vg = {
"${config.networking.hostName}" = { "${name}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -1,6 +1,7 @@
{ config, ... }: { config, ... }:
{ {
fileSystems."/mnt/Games" = { fileSystems = {
"/mnt/Games" = {
device = "/dev/disk/by-uuid/cb109a85-846d-4417-9c50-a2279bd20803"; device = "/dev/disk/by-uuid/cb109a85-846d-4417-9c50-a2279bd20803";
fsType = "btrfs"; fsType = "btrfs";
options = [ options = [
@ -8,4 +9,5 @@
"nosuid" "nosuid"
]; ];
}; };
};
} }

View file

@ -1,4 +1,4 @@
{ config, lib, modulesPath, ... }: { modulesPath, ... }:
{ {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
@ -15,6 +15,7 @@
kernelModules = [ "kvm-amd" ]; kernelModules = [ "kvm-amd" ];
}; };
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.amd.updateMicrocode = true;
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = "x86_64-linux";
} }

View file

@ -1,16 +1,12 @@
{ config, lib, pkgs, jovian, ... }: { config, lib, pkgs, jovian, ... }:
{ {
imports = [ jovian.nixosModules.jovian ]; imports = [ ./desktop ];
options.system.steamdeck.enable = lib.mkEnableOption "Jovian NixOS environment"; config = lib.mkIf config.jovian.steam.enable {
config = lib.mkIf config.system.steamdeck.enable {
jovian = { jovian = {
steam = { steam = {
enable = true;
autoStart = true; autoStart = true;
desktopSession = "gnome"; user = config.vars.mainUser;
user = config.sysusers.main;
}; };
decky-loader = { decky-loader = {
enable = true; enable = true;
@ -22,80 +18,46 @@
}; };
}; };
# Evil kernel
boot.kernelPackages = lib.mkForce pkgs.linuxPackages_jovian; boot.kernelPackages = lib.mkForce pkgs.linuxPackages_jovian;
programs.steam = { programs.steam.extest.enable = true;
extest.enable = true;
localNetworkGameTransfers.openFirewall = true;
remotePlay.openFirewall = true;
};
services = { hardware.xone.enable = true;
keyd.enable = lib.mkForce false;
tlp.enable = lib.mkForce false;
xserver.desktopManager.gnome.enable = true;
};
# Use networkmanager for ui compatibility
networking = { networking = {
networkmanager.enable = true; networkmanager.enable = true;
wireless.enable = lib.mkForce false; wireless.enable = lib.mkForce false;
}; };
environment = { # Disable conflicting services
persistence."/persist" = { services = {
directories = [ keyd.enable = lib.mkForce false;
tlp.enable = lib.mkForce false;
};
# Disable network filesystems
fileSystems = {
"midas".enable = false;
"kitty".enable = false;
"detritus".enable = false;
"prophet".enable = false;
};
environment.persistence."/persist".directories = [
"/etc/NetworkManager/system-connections" "/etc/NetworkManager/system-connections"
"/var/lib/decky-loader" "/var/lib/decky-loader"
]; ];
users.${config.sysusers.main}.directories = [ ".steam" ];
};
gnome.excludePackages = with pkgs; [
adwaita-icon-theme
baobab
epiphany
evince
file-roller
geary
gnome-calculator
gnome-calendar
gnome-characters
gnome-clocks
gnome-color-manager
gnome-connections
gnome-console
gnome-contacts
gnome-disk-utility
gnome-font-viewer
gnome-logs
gnome-maps
gnome-music
gnome-shell-extensions
gnome-software
gnome-system-monitor
gnome-text-editor
gnome-tour
gnome-user-docs
gnome-weather
loupe
nautilus
orca
seahorse
simple-scan
snapshot
sushi
sysprof
totem
yelp
];
};
nixpkgs.allowUnfreePackages = [ nixpkgs.allowUnfreePackages = [
"steam" "steam"
"steam-jupiter-unwrapped" "steam-jupiter-unwrapped"
"steamdeck-firmware" "steamdeck-firmware"
"steamdeck-hw-theme" "steamdeck-hw-theme"
"xow_dongle-firmware"
]; ];
specialisation.desktop.configuration.config.system.steamdeck.enable = lib.mkForce false; specialisation.desktop.configuration.config.jovian.steam.enable = lib.mkForce false;
}; };
} }

View file

@ -0,0 +1,48 @@
{ config, lib, pkgs, ... }:
{
config = lib.mkIf config.jovian.steam.enable {
jovian.steam.desktopSession = "gnome";
services.desktopManager.gnome.enable = true;
environment.gnome.excludePackages = with pkgs; [
adwaita-icon-theme
baobab
epiphany
evince
file-roller
geary
gnome-calculator
gnome-calendar
gnome-characters
gnome-clocks
gnome-color-manager
gnome-connections
gnome-console
gnome-contacts
gnome-disk-utility
gnome-font-viewer
gnome-logs
gnome-maps
gnome-music
gnome-remote-desktop
gnome-shell-extensions
gnome-software
gnome-system-monitor
gnome-text-editor
gnome-tour
gnome-user-docs
gnome-weather
loupe
nautilus
orca
seahorse
simple-scan
snapshot
sushi
sysprof
totem
yelp
];
};
}

View file

@ -1,6 +1,6 @@
{ config, lib, ... }: { config, lib, ... }:
{ {
config = lib.mkIf (!config.system.steamdeck.enable) { config = lib.mkIf (!config.jovian.steam.enable) {
networking.useNetworkd = lib.mkForce false; networking.useNetworkd = lib.mkForce false;
services.globalprotect.enable = true; services.globalprotect.enable = true;
@ -9,12 +9,5 @@
libvirtd.enable = true; libvirtd.enable = true;
vmware.host.enable = true; vmware.host.enable = true;
}; };
nixpkgs.allowUnfreePackages = [ "vmware-workstation" ];
environment.persistence."/persist".users.${config.sysusers.main}.directories = [
"vmware"
".vmware"
];
}; };
} }

View file

@ -1,11 +1,8 @@
{ config, lib, ... }: { config, ... }:
{ {
home-manager.users."${config.sysusers.main}".home = { home-manager.users."${config.vars.mainUser}".home = {
desktop.enable = true; guifull.enable = true;
gaming.enable = true;
production.enable = true;
school.enable = true; school.enable = true;
enableNixpkgsReleaseCheck = false; enableNixpkgsReleaseCheck = false;
stateVersion = lib.mkForce config.system.stateVersion;
}; };
} }

View file

@ -2,6 +2,6 @@
{ {
boot = { boot = {
kernelPackages = pkgs.linuxPackages_hardened; kernelPackages = pkgs.linuxPackages_hardened;
loader.systemd-boot.enable = true; loader.limine.enable = true;
}; };
} }

View file

@ -6,20 +6,16 @@
./filesystems ./filesystems
./hardware ./hardware
./network ./network
./user ./services
../../modules/system
]; ];
networking = {
hostName = "kitty";
hostId = "8745e22e";
};
system = { system = {
server.enable = true; nixos.tags = [
extraUsers.enable = true; "extra-users"
"server"
];
stateVersion = "24.11"; stateVersion = "24.11";
}; };
services.nfs.server.enable = true; deployment.targetHost = "53f:dc2d:80c9:3ca2:4b15:ef4d:38a0:c868";
} }

View file

@ -1,16 +1,15 @@
{ config, disko, ... }: { config, name, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${config.networking.hostName}" = { "${name}" = {
type = "disk"; type = "disk";
device = "/dev/sda"; device = "/dev/disk/by-id/ata-KINGSTON_SA400S37120G_50026B7783DBB232";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -28,7 +27,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${config.networking.hostName}"; vg = "${name}";
}; };
}; };
}; };
@ -37,7 +36,7 @@
}; };
lvm_vg = { lvm_vg = {
"${config.networking.hostName}" = { "${name}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -1,4 +1,4 @@
{ config, ... }: { ... }:
{ {
fileSystems = { fileSystems = {
"/persist/storage" = { "/persist/storage" = {
@ -9,23 +9,5 @@
"nosuid" "nosuid"
]; ];
}; };
"/home/${config.sysusers.main}/Network/Midas" = {
device = "11.0.0.1:/storage";
fsType = "nfs4";
options = [
"x-systemd.automount"
"noauto"
"soft"
];
};
"/home/${config.sysusers.main}/Network/Prophet" = {
device = "mx.nixfox.ca:/storage";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
}; };
} }

View file

@ -1,4 +1,4 @@
{ config, lib, ... }: { ... }:
{ {
boot.initrd = { boot.initrd = {
availableKernelModules = [ availableKernelModules = [
@ -9,6 +9,7 @@
kernelModules = [ "dm-snapshot" ]; kernelModules = [ "dm-snapshot" ];
}; };
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = true;
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = "x86_64-linux";
} }

View file

@ -1 +0,0 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDOBa+Wz1FqFEnMeXflP0CPt2wnN819T+FdSCIwFLJjN

View file

@ -2,21 +2,13 @@
{ {
networking = { networking = {
interfaces."eno1".ipv4.addresses = [{ interfaces."eno1".ipv4.addresses = [{
address = "10.2.0.2"; address = "11.2.0.1";
prefixLength = 8; prefixLength = 8;
}]; }];
defaultGateway = { defaultGateway = {
address = "10.1.0.1"; address = "11.1.0.1";
interface = "eno1"; interface = "eno1";
}; };
hostId = "8745e22e";
vlans.internal = {
id=100;
interface="eno1";
};
interfaces.internal.ipv4.addresses = [{
address = "11.0.0.2";
prefixLength = 8;
}];
}; };
} }

View file

@ -0,0 +1,9 @@
{ ... }:
{
services = {
nfs.server.enable = true;
nginx.enable = true;
};
virtualisation.incus.enable = true;
}

View file

@ -1,6 +0,0 @@
{ config, lib, ... }:
{
home-manager.users."${config.sysusers.main}".home = {
stateVersion = lib.mkForce config.system.stateVersion;
};
}

View file

@ -7,17 +7,12 @@
./hardware ./hardware
./network ./network
./services ./services
./user
../../modules/system
]; ];
networking = {
hostName = "midas";
hostId = "38ba3f57";
};
system = { system = {
server.enable = true; nixos.tags = [ "server" ];
stateVersion = "24.11"; stateVersion = "24.11";
}; };
deployment.targetHost = "538:e163:87ba:f847:3646:18b6:6b01:d8f8";
} }

View file

@ -1,16 +1,15 @@
{ config, disko, ... }: { config, name, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${config.networking.hostName}" = { "${name}" = {
type = "disk"; type = "disk";
device = "/dev/nvme0n1"; device = "/dev/disk/by-id/nvme-eui.00080d03001365cc";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -28,12 +27,12 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "${config.networking.hostName}-disk"; name = "${name}-disk";
settings.allowDiscards = true; settings.allowDiscards = true;
passwordFile = "/tmp/secret.key"; passwordFile = "/tmp/secret.key";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${config.networking.hostName}"; vg = "${name}";
}; };
}; };
}; };
@ -43,7 +42,7 @@
}; };
lvm_vg = { lvm_vg = {
"${config.networking.hostName}" = { "${name}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -10,14 +10,5 @@
"subvol=persist" "subvol=persist"
]; ];
}; };
"/kitty" = {
device = "11.0.0.2:/storage/bun";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
}; };
} }

View file

@ -1,4 +1,4 @@
{ config, lib, ... }: { ... }:
{ {
boot.initrd = { boot.initrd = {
availableKernelModules = [ availableKernelModules = [
@ -10,6 +10,7 @@
kernelModules = [ "dm-snapshot" ]; kernelModules = [ "dm-snapshot" ];
}; };
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; hardware.cpu.intel.updateMicrocode = true;
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nixpkgs.hostPlatform = "x86_64-linux";
} }

View file

@ -1 +0,0 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIFGHaxdTeC1xnTx2BY5LLR5LxhdSkmYoWuOeEuRIz0k

View file

@ -2,45 +2,13 @@
{ {
networking = { networking = {
interfaces."enp0s31f6".ipv4.addresses = [{ interfaces."enp0s31f6".ipv4.addresses = [{
address = "10.2.0.1"; address = "11.2.0.1";
prefixLength = 8; prefixLength = 8;
}]; }];
defaultGateway = { defaultGateway = {
address = "10.1.0.1"; address = "11.1.0.1";
interface = "enp0s31f6"; interface = "enp0s31f6";
}; };
hostId = "38ba3f57";
vlans.internal = {
id=100;
interface="enp0s31f6";
}; };
interfaces.internal.ipv4.addresses = [{
address = "11.0.0.1";
prefixLength = 8;
}];
nftables.tables.forwarding = {
family = "inet";
content = ''
chain incoming {
type nat hook prerouting priority dstnat; policy accept;
tcp dport 2211 dnat ip to 11.0.0.100:22 comment "Tower SSH"
tcp dport 2222 dnat ip to 11.0.0.2:22 comment "Kitty SSH"
udp dport { 27005, 27015 } dnat ip to 11.0.0.100 comment "PC Hosted Games"
tcp dport { 48010, 47989, 47984 } dnat ip to 11.0.0.100 comment "PC Sunshine TCP"
udp dport { 47998, 47999, 48000 } dnat ip to 11.0.0.100 comment "PC Sunshine UDP"
}
chain forward {
type nat hook postrouting priority 100; policy accept;
masquerade
}
'';
};
};
# Enable IP forwarding for the server configuration
boot.kernel.sysctl."net.ipv4.ip_forward" = 1;
} }

View file

@ -1,21 +1,21 @@
{ ... }: { ... }:
{ {
imports = [ ./nginx ];
services = { services = {
cloudflare-dyndns.enable = true; cloudflare-dyndns.enable = true;
forgejo.enable = true; forgejo.enable = true;
hedgedoc.enable = true;
icecast.enable = true; icecast.enable = true;
jellyfin.enable = true; jellyfin.enable = true;
lemmy.enable = true;
mastodon.enable = true; mastodon.enable = true;
matrix-synapse.enable = true; matrix-synapse.enable = true;
mysql.enable = true; mysql.enable = true;
nextcloud.enable = true; nextcloud.enable = true;
nfs.server.enable = true; nfs.server.enable = true;
nginx.enable = true;
owncast.enable = true; owncast.enable = true;
transmission.enable = true; transmission.enable = true;
vaultwarden.enable = true; vaultwarden.enable = true;
webserver.enable = true;
minecraft-servers = { minecraft-servers = {
enable = true; enable = true;

View file

@ -0,0 +1,6 @@
{ ... }:
{
imports = [ ./nixfox ];
services.nginx.enable = true;
}

View file

@ -1,6 +1,6 @@
{ config, lib, ... }: { config, lib, ... }:
{ {
services.nginx.virtualHosts = lib.mkIf config.services.webserver.enable { services.nginx.virtualHosts = {
"www.nixfox.ca" = { "www.nixfox.ca" = {
enableACME = true; enableACME = true;
addSSL = true; addSSL = true;

View file

@ -1,6 +0,0 @@
{ config, lib, ... }:
{
home-manager.users."${config.sysusers.main}".home = {
stateVersion = lib.mkForce config.system.stateVersion;
};
}

View file

@ -1,7 +1,8 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
boot = { boot = {
binfmt.emulatedSystems = [ "x86_64-linux" ];
kernelPackages = pkgs.linuxPackages_hardened; kernelPackages = pkgs.linuxPackages_hardened;
loader.systemd-boot.enable = true; loader.limine.enable = true;
}; };
} }

View file

@ -6,18 +6,18 @@
./filesystems ./filesystems
./hardware ./hardware
./services ./services
./user
../../modules/system
(modulesPath + "/profiles/headless.nix") (modulesPath + "/profiles/headless.nix")
]; ];
networking = {
hostName = "prophet";
hostId = "97a21a38";
};
system = { system = {
server.enable = true; nixos.tags = [ "server" ];
stateVersion = "24.05"; stateVersion = "24.05";
}; };
deployment = {
buildOnTarget = true;
targetHost = "42f:2737:2aed:4dee:cbe4:3c73:1918:ad9b";
};
networking.hostId = "97a21a38";
} }

View file

@ -1,16 +1,15 @@
{ config, disko, ... }: { config, name, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${config.networking.hostName}" = { "${name}" = {
type = "disk"; type = "disk";
device = "/dev/nvme0n1"; device = "/dev/disk/by-id/scsi-3609c958403f14cd29ff94a5a2e405cc2";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -28,7 +27,7 @@
size = "100%"; size = "100%";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${config.networking.hostName}"; vg = "${name}";
}; };
}; };
}; };
@ -37,7 +36,7 @@
}; };
lvm_vg = { lvm_vg = {
"${config.networking.hostName}" = { "${name}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -1,6 +1,7 @@
{ ... }: { ... }:
{ {
fileSystems."/persist/storage" = { fileSystems = {
"/persist/storage" = {
device = "/dev/disk/by-uuid/ef465845-cc56-4db5-9260-8ae515eb025e"; device = "/dev/disk/by-uuid/ef465845-cc56-4db5-9260-8ae515eb025e";
fsType = "btrfs"; fsType = "btrfs";
options = [ options = [
@ -8,4 +9,5 @@
"nosuid" "nosuid"
]; ];
}; };
};
} }

View file

@ -1,4 +1,4 @@
{ lib, ... }: { ... }:
{ {
boot.initrd = { boot.initrd = {
availableKernelModules = [ availableKernelModules = [
@ -8,5 +8,5 @@
kernelModules = [ "dm-snapshot" ]; kernelModules = [ "dm-snapshot" ];
}; };
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux"; nixpkgs.hostPlatform = "aarch64-linux";
} }

View file

@ -1 +0,0 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDXU+mo+lkFaGBV7wuzrGnlII15YS3/MkkG3KmGJRT0j

View file

@ -2,9 +2,10 @@
{ {
services = { services = {
cloudflare-dyndns.enable = true; cloudflare-dyndns.enable = true;
mailserver.enable = true;
mysql.enable = true; mysql.enable = true;
nfs.server.enable = true; nfs.server.enable = true;
nginx.enable = true; nginx.enable = true;
}; };
mailserver.enable = true;
} }

View file

@ -1,6 +0,0 @@
{ config, lib, ... }:
{
home-manager.users."${config.sysusers.main}".home = {
stateVersion = lib.mkForce config.system.stateVersion;
};
}

View file

@ -1,12 +0,0 @@
{ pkgs, ... }:
{
boot = {
kernelPackages = pkgs.linuxPackages_latest;
kernelParams = [
"radeon.cik_support=0"
"amdgpu.cik_support=1"
];
loader.systemd-boot.enable = true;
plymouth.enable = true;
};
}

View file

@ -1,19 +0,0 @@
{ lib, ... }:
{
imports = [
./boot
./disko
./filesystems
./hardware
./network
./user
../../modules/system
];
networking.hostName = "redmond";
system = {
desktop.enable = true;
stateVersion = "24.05";
};
}

View file

@ -1,11 +0,0 @@
{ config, ... }:
{
fileSystems."/mnt/Windrive" = {
device = "/dev/disk/by-uuid/582C6B802C6B57D0";
fsType = "ntfs";
options = [
"nodev"
"nosuid"
];
};
}

View file

@ -1,23 +0,0 @@
{ config, lib, modulesPath, ... }:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot = {
initrd = {
availableKernelModules = [
"ahci"
"ehci_pci"
"rtsx_usb_sdmmc"
"sd_mod"
"sdhci_pci"
"sr_mod"
"xhci_pci"
];
kernelModules = [ "dm-snapshot" ];
};
kernelModules = [ "kvm-amd" ];
};
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View file

@ -1 +0,0 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICHJ2Gy1Gaq96K85zOSfgWzGY0rIaUcqGS7Si5Nvzg+n

View file

@ -1,13 +0,0 @@
{ ... }:
{
networking = {
interfaces."wlp1s0".ipv4.addresses = [{
address = "192.168.2.200";
prefixLength = 24;
}];
defaultGateway = {
address = "192.168.2.1";
interface = "wlp1s0";
};
};
}

View file

@ -1,7 +0,0 @@
{ config, lib, ... }:
{
home-manager.users."${config.sysusers.main}".home = {
desktop.enable = true;
stateVersion = lib.mkForce config.system.stateVersion;
};
}

View file

@ -1,19 +1,12 @@
{ config, lib, pkgsUnstable, ... }: { config, lib, pkgs, ... }:
let let
commonKernelParams = [ commonKernelParams = [
# VM/GPU passthrough
"amd_iommu=on" "amd_iommu=on"
"iommu=pt" "iommu=pt"
"nested=1"
# Isolate devices into IOMMU groups
"pcie_acs_override=downstream,multifunction"
"pci=routeirq"
]; ];
in { in {
boot = { boot = {
# Latest kernel and IOMMU isolation kernelPackages = pkgs.linuxPackages_6_14;
kernelPackages = pkgsUnstable.linuxPackages_latest;
kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ]; kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ];
# Load into GPU before video driver # Load into GPU before video driver
@ -28,8 +21,5 @@ in {
}; };
# Use second GPU on boot # Use second GPU on boot
specialisation.gputwo.configuration = { specialisation.gputwo.configuration.boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ];
boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ];
environment.sessionVariables.WLR_RENDERER = lib.mkForce "gles2";
};
} }

View file

@ -5,18 +5,15 @@
./disko ./disko
./filesystems ./filesystems
./hardware ./hardware
./network
./user ./user
../../modules/system
]; ];
networking.hostName = "tower";
system = { system = {
desktop.enable = true; nixos.tags = [ "pc" ];
nvidia.enable = true;
stateVersion = "24.05"; stateVersion = "24.05";
}; };
deployment.targetHost = "4e4:535:9d47:f367:becd:6557:458d:5b1b";
virtualisation.libvirtd.enable = true; virtualisation.libvirtd.enable = true;
} }

View file

@ -1,17 +1,15 @@
{ config, disko, ... }: { config, name, ... }:
{ {
imports = [ disko.nixosModules.disko ];
disko.devices = { disko.devices = {
disk = { disk = {
"${config.networking.hostName}" = { "${name}" = {
type = "disk"; type = "disk";
device = "/dev/nvme0n1"; device = "/dev/disk/by-id/nvme-INTEL_SSDPEKNU512GZ_BTKA20550TKC512A";
imageSize = "32G";
content = { content = {
type = "gpt"; type = "gpt";
partitions = { partitions = {
boot = { boot = {
priority = 1;
size = "1M"; size = "1M";
type = "EF02"; type = "EF02";
}; };
@ -29,12 +27,12 @@
size = "100%"; size = "100%";
content = { content = {
type = "luks"; type = "luks";
name = "${config.networking.hostName}-disk"; name = "${name}-disk";
settings.allowDiscards = true; settings.allowDiscards = true;
passwordFile = "/tmp/secret.key"; passwordFile = "/tmp/secret.key";
content = { content = {
type = "lvm_pv"; type = "lvm_pv";
vg = "${config.networking.hostName}"; vg = "${name}";
}; };
}; };
}; };
@ -44,7 +42,7 @@
}; };
lvm_vg = { lvm_vg = {
"${config.networking.hostName}" = { "${name}" = {
type = "lvm_vg"; type = "lvm_vg";
lvs = { lvs = {
root = { root = {

View file

@ -1,26 +1,34 @@
{ config, ... }: { ... }:
{ {
fileSystems = { fileSystems = {
# Games and such # Games and such
"/mnt/Linux1" = { "/mnt/Linux1" = {
device = "/dev/disk/by-uuid/b2901f8c-ffda-4b88-bb63-a9ea0c96ccb4"; device = "/dev/disk/by-label/Linux1";
fsType = "ext4"; fsType = "btrfs";
options = [ options = [
"nofail" "nofail"
"nosuid" "nosuid"
]; ];
}; };
"/mnt/Linux2" = { "/mnt/Linux2" = {
device = "/dev/disk/by-uuid/f08e4f38-162c-402f-ba2a-5925151b78bf"; device = "/dev/disk/by-label/Linux2";
fsType = "ext4"; fsType = "btrfs";
options = [ options = [
"nofail" "nofail"
"nosuid" "nosuid"
]; ];
}; };
"/mnt/Linux3" = { "/mnt/Linux3" = {
device = "/dev/disk/by-uuid/e7bc75bd-c371-4b28-b212-7be9b1fad339"; device = "/dev/disk/by-label/Linux3";
fsType = "ext4"; fsType = "btrfs";
options = [
"nofail"
"nosuid"
];
};
"/mnt/Linux4" = {
device = "/dev/disk/by-label/Linux4";
fsType = "btrfs";
options = [ options = [
"nofail" "nofail"
"nosuid" "nosuid"
@ -37,34 +45,5 @@
"subvol=libvirt" "subvol=libvirt"
]; ];
}; };
# Network mounts
"/home/${config.sysusers.main}/Network/Midas" = {
device = "11.0.0.1:/storage";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
"/home/${config.sysusers.main}/Network/Kitty" = {
device = "11.0.0.2:/storage/bun";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
"/home/${config.sysusers.main}/Network/Prophet" = {
device = "mx.nixfox.ca:/storage";
fsType = "nfs4";
options = [
"noauto"
"soft"
"x-systemd.automount"
];
};
}; };
} }

View file

@ -1,4 +1,4 @@
{ config, lib, modulesPath, ... }: { modulesPath, ... }:
{ {
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
@ -16,6 +16,9 @@
kernelModules = [ "kvm-amd" ]; kernelModules = [ "kvm-amd" ];
}; };
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; services.xserver.videoDrivers = [ "nvidia" ];
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
hardware.cpu.amd.updateMicrocode = true;
nixpkgs.hostPlatform = "x86_64-linux";
} }

View file

@ -1,24 +0,0 @@
{ ... }:
{
networking = {
interfaces."enp42s0".ipv4.addresses = [{
address = "10.2.0.100";
prefixLength = 8;
}];
defaultGateway = {
address = "10.1.0.1";
interface = "enp42s0";
};
vlans.internal = {
id=100;
interface="enp42s0";
};
interfaces.internal.ipv4.addresses = [{
address = "11.0.0.100";
prefixLength = 8;
}];
firewall.allowedUDPPorts = [ 27015 ];
};
}

View file

@ -1,9 +1,4 @@
{ config, lib, ... }: { config, ... }:
{ {
home-manager.users."${config.sysusers.main}".home = { home-manager.users."${config.vars.mainUser}".home.guifull.enable = true;
desktop.enable = true;
gaming.enable = true;
production.enable = true;
stateVersion = lib.mkForce config.system.stateVersion;
};
} }

View file

@ -1,20 +1,13 @@
{ lib, ... }: { lib, ... }:
{ {
imports = [ imports = [
./profiles
./programs ./programs
./services ./services
./settings ./settings
./user
./variables ./variables
./wms ./wms
]; ];
options.home = with lib; { config.home.stateVersion = "25.05";
desktop.enable = mkEnableOption "Desktop programs and services";
gaming.enable = mkEnableOption "Gaming apps and programs";
production.enable = mkEnableOption "Apps for visual productivity";
school.enable = mkEnableOption "Apps for school and college";
};
config.home.stateVersion = "24.11";
} }

View file

@ -0,0 +1,11 @@
{ lib, ... }:
{
imports = [ ./guifull ];
options.home = with lib; {
desktop.enable = mkEnableOption "Desktop programs and services";
gaming.enable = mkEnableOption "Gaming apps and programs";
production.enable = mkEnableOption "Apps for visual productivity";
school.enable = mkEnableOption "Apps for school and college";
};
}

View file

@ -0,0 +1,12 @@
{ config, lib, ... }:
{
options.home = with lib; {
guifull.enable = mkEnableOption "Enable most other GUI profiles";
};
config.home = lib.mkIf config.home.guifull.enable {
desktop.enable = true;
gaming.enable = true;
production.enable = true;
};
}

View file

@ -6,11 +6,11 @@
settings = { settings = {
main = { main = {
term = "xterm-256color"; term = "xterm-256color";
font = "${config.look.fonts.mono}:size=14.7"; font = "${config.vars.fonts.mono}:size=14.7";
}; };
colors = { colors = {
alpha = "0.85"; alpha = "0.85";
background = config.look.colors.dark; background = config.vars.colors.dark;
regular0 = "3f3f3f"; regular0 = "3f3f3f";
regular1 = "cc0000"; regular1 = "cc0000";
regular2 = "4e9a06"; regular2 = "4e9a06";
@ -29,7 +29,10 @@
bright7 = "ffffff"; bright7 = "ffffff";
}; };
cursor.style = "beam"; cursor.style = "beam";
key-bindings.search-start = "Control+f"; key-bindings = {
search-start = "Control+f";
show-urls-launch = "Control+s";
};
}; };
}; };
} }

View file

@ -1,40 +1,63 @@
{ config, lib, pkgs, nur, ... }: { config, lib, pkgs, ... }:
{ {
config = lib.mkIf config.home.desktop.enable { config = lib.mkIf config.home.desktop.enable {
programs.firefox = { programs.firefox = {
enable = true; enable = true;
package = pkgs.librewolf; package = pkgs.librewolf;
profiles = let profiles.default = {
# FireFox css, based on https://github.com/Dook97/firefox-qutebrowser-userchrome isDefault = true;
themeFont = ''
--tab-font: '${config.look.fonts.main}';
--urlbar-font: '${config.look.fonts.main}';
'';
themeMain = ''
:root {
--tab-active-bg-color: #${config.look.colors.prime};
--tab-hover-bg-color: #${config.look.colors.accent};
--tab-inactive-bg-color: #${config.look.colors.dark};
--tab-active-fg-fallback-color: #FFFFFF;
--tab-inactive-fg-fallback-color: #${config.look.colors.text};
--urlbar-focused-bg-color: #${config.look.colors.dark};
--urlbar-not-focused-bg-color: #${config.look.colors.dark};
--toolbar-bgcolor: #${config.look.colors.dark} !important;
'';
themeAlt = ''
:root {
--tab-active-bg-color: #${config.look.colors.dark};
--tab-hover-bg-color: #${config.look.colors.accent};
--tab-inactive-bg-color: #${config.look.colors.prime};
--tab-active-fg-fallback-color: #${config.look.colors.text};
--tab-inactive-fg-fallback-color: #FFFFFF;
--urlbar-focused-bg-color: #${config.look.colors.prime};
--urlbar-not-focused-bg-color: #${config.look.colors.prime};
--toolbar-bgcolor: #${config.look.colors.prime} !important;
'';
# Profile settings containersForce = true;
commonExtensions = with pkgs.nur.repos.rycee.firefox-addons; [ containers = {
home = {
color = "purple";
icon = "fruit";
id = 1;
};
school = {
color = "red";
icon = "briefcase";
id = 2;
};
};
bookmarks = {
force = true;
settings = [
{
name = "NixFox";
url = "https://www.nixfox.ca";
}
{
name = "Luna";
url = "https://www.lunamoonlight.xyz";
}
{
name = "Freecorn";
url = "https://freecorn1854.win";
}
{
name = "Bloxelcom";
url = "https://www.bloxelcom.net";
}
{
name = "YouTube";
url = "https://www.kernel.org";
}
{
name = "NixOS Wiki";
url = "https://nixos.wiki";
}
{
name = "Kernel";
url = "https://www.kernel.org";
}
];
};
extensions = {
force = true;
packages = with pkgs.nur.repos.rycee.firefox-addons; [
bitwarden bitwarden
darkreader darkreader
return-youtube-dislikes return-youtube-dislikes
@ -43,18 +66,13 @@
ublock-origin ublock-origin
violentmonkey violentmonkey
]; ];
commonSearch = { };
search = {
force = true; force = true;
default = "Ecosia"; default = "ecosia";
order = [
"Ecosia"
"NixPKGs"
"MyNixOS"
"YouTube"
"Spotify"
];
engines = { engines = {
"Ecosia" = { "ecosia" = {
urls = [{ urls = [{
template = "https://www.ecosia.org/search"; template = "https://www.ecosia.org/search";
params = [{ params = [{
@ -64,7 +82,8 @@
}]; }];
definedAliases = [ "@e" ]; definedAliases = [ "@e" ];
}; };
"NixPKGs" = {
"nixpkgs" = {
urls = [{ urls = [{
template = "https://search.nixos.org/packages"; template = "https://search.nixos.org/packages";
params = [ params = [
@ -80,7 +99,8 @@
}]; }];
definedAliases = [ "@p" ]; definedAliases = [ "@p" ];
}; };
"MyNixOS" = {
"mynixos" = {
urls = [{ urls = [{
template = "https://mynixos.com/search"; template = "https://mynixos.com/search";
params = [{ params = [{
@ -90,7 +110,8 @@
}]; }];
definedAliases = [ "@my" ]; definedAliases = [ "@my" ];
}; };
"YouTube" = {
"youtube" = {
urls = [{ urls = [{
template = "https://www.youtube.com/results"; template = "https://www.youtube.com/results";
params = [{ params = [{
@ -100,13 +121,17 @@
}]; }];
definedAliases = [ "@y" ]; definedAliases = [ "@y" ];
}; };
"Spotify" = {
"spotify" = {
urls = [{ template = "https://open.spotify.com/search/{searchTerms}"; }]; urls = [{ template = "https://open.spotify.com/search/{searchTerms}"; }];
definedAliases = [ "@s" ]; definedAliases = [ "@s" ];
}; };
}; };
}; };
commonSettings = {
settings = {
force = true;
# Generic # Generic
"browser.download.useDownloadDir" = true; "browser.download.useDownloadDir" = true;
"browser.shell.checkDefaultBrowser" = false; "browser.shell.checkDefaultBrowser" = false;
@ -121,9 +146,9 @@
"webgl.disabled" = false; "webgl.disabled" = false;
# Fonts # Fonts
"font.name.serif.x-western" = config.look.fonts.main; "font.name.monospace.x-western" = config.vars.fonts.mono;
"font.name.sans-serif.x-western" = config.look.fonts.main; "font.name.sans-serif.x-western" = config.vars.fonts.main;
"font.name.monospace.x-western" = config.look.fonts.mono; "font.name.serif.x-western" = config.vars.fonts.main;
# Theming and visibility # Theming and visibility
"browser.aboutConfig.showWarning" = false; "browser.aboutConfig.showWarning" = false;
@ -143,47 +168,45 @@
"browser.newtabpage.enabled" = false; "browser.newtabpage.enabled" = false;
# Safe browsing # Safe browsing
"browser.safebrowsing.blockedURIs.enabled" = false;
"browser.safebrowsing.downloads.enabled" = false; "browser.safebrowsing.downloads.enabled" = false;
"browser.safebrowsing.downloads.remote.enabled" = false;
"browser.safebrowsing.downloads.remote.block_uncommon" = false;
"browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false; "browser.safebrowsing.downloads.remote.block_potentially_unwanted" = false;
"browser.safebrowsing.downloads.remote.block_uncommon" = false;
"browser.safebrowsing.downloads.remote.enabled" = false;
"browser.safebrowsing.malware.enabled" = false; "browser.safebrowsing.malware.enabled" = false;
"browser.safebrowsing.phishing.enabled" = false; "browser.safebrowsing.phishing.enabled" = false;
"browser.safebrowsing.blockedURIs.enabled" = false;
"browser.safebrowsing.provider.google4.gethashURL" = false;
"browser.safebrowsing.provider.google4.updateURL" = false;
"browser.safebrowsing.provider.google.gethashURL" = false; "browser.safebrowsing.provider.google.gethashURL" = false;
"browser.safebrowsing.provider.google.updateURL" = false; "browser.safebrowsing.provider.google.updateURL" = false;
"browser.safebrowsing.provider.google4.gethashURL" = false;
"browser.safebrowsing.provider.google4.updateURL" = false;
# Extensions # Extensions
"extensions.pocket.enabled" = false;
"extensions.formautofill.addresses.enabled" = false; "extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false; "extensions.formautofill.creditCards.enabled" = false;
"extensions.getAddons.showPane" = false; "extensions.getAddons.showPane" = false;
"extensions.htmlaboutaddons.discover.enabled" = false; "extensions.htmlaboutaddons.discover.enabled" = false;
"extensions.htmlaboutaddons.recommendations.enabled" = false; "extensions.htmlaboutaddons.recommendations.enabled" = false;
"extensions.pocket.enabled" = false;
# Force extensions to work # Force extensions to work
"extensions.autoDisableScopes" = 0; "extensions.autoDisableScopes" = 0;
"extensions.enabledScopes" = 15; "extensions.enabledScopes" = 15;
# Privacy # Privacy
"privacy.resistFingerprinting" = true; "privacy.clearOnShutdown.cookies" = false;
"privacy.firstparty.isolate" = true; "privacy.clearOnShutdown_v2.cookiesAndStorage" = false;
"privacy.fingerprintingProtection" = true; "privacy.fingerprintingProtection" = true;
"privacy.globalprivacycontrol.enabled" = true; "privacy.globalprivacycontrol.enabled" = true;
"privacy.globalprivacycontrol.functionality.enabled" = true; "privacy.globalprivacycontrol.functionality.enabled" = true;
"privacy.clearOnShutdown.cookies" = false; "privacy.resistFingerprinting" = true;
"privacy.clearOnShutdown_v2.cookiesAndStorage" = false;
# Tracking URL blocking # Tracking URL blocking
"urlclassifier.trackingSkipURLs" = "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com";
"urlclassifier.features.socialtracking.skipURLs" = "*.instagram.com, *.twitter.com, *.twimg.com"; "urlclassifier.features.socialtracking.skipURLs" = "*.instagram.com, *.twitter.com, *.twimg.com";
"urlclassifier.trackingSkipURLs" = "*.reddit.com, *.twitter.com, *.twimg.com, *.tiktok.com";
# Network tracking # Network tracking
"browser.contentblocking.category" = "strict"; "browser.contentblocking.category" = "strict";
"network.cookie.cookieBehavior" = 1; "network.cookie.cookieBehavior" = 1;
"network.cookie.sameSite.noneRequiresSecure" = true;
"network.http.referer.XOriginPolicy" = 2; "network.http.referer.XOriginPolicy" = 2;
"network.http.referer.XOriginTrimmingPolicy" = 2; "network.http.referer.XOriginTrimmingPolicy" = 2;
"network.http.referer.trimmingPolicy" = 2; "network.http.referer.trimmingPolicy" = 2;
@ -209,40 +232,28 @@
"services.sync.engine.addresses.available" = false; "services.sync.engine.addresses.available" = false;
"svg.context-properties.content.enabled" = true; "svg.context-properties.content.enabled" = true;
}; };
in {
Main = {
id = 0;
isDefault = true;
extensions = commonExtensions;
search = commonSearch;
settings = commonSettings;
userChrome = '' userChrome = ''
${themeMain} :root {
${themeFont} --tab-active-bg-color: #${config.vars.colors.prime};
--tab-hover-bg-color: #${config.vars.colors.accent};
--tab-inactive-bg-color: #${config.vars.colors.dark};
--tab-active-fg-fallback-color: #FFFFFF;
--tab-inactive-fg-fallback-color: #${config.vars.colors.text};
--urlbar-focused-bg-color: #${config.vars.colors.dark};
--urlbar-not-focused-bg-color: #${config.vars.colors.dark};
--toolbar-bgcolor: #${config.vars.colors.dark} !important;
--tab-font: '${config.vars.fonts.main}';
--urlbar-font: '${config.vars.fonts.main}';
${builtins.readFile ./quteFox.css} ${builtins.readFile ./quteFox.css}
''; '';
}; };
Alt = {
id = 1;
extensions = commonExtensions;
search = commonSearch;
settings = commonSettings;
userChrome = ''
${themeAlt}
${themeFont}
${builtins.readFile ./quteFox.css}
'';
};
};
}; };
# Symlinks to Librewolf # Symlinks to Librewolf
home = { home = {
file = { file.".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox";
".librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox"; persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "browser/.mozilla/firefox/default" ];
".mozilla/librewolf".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/.mozilla/firefox";
};
persistence."/persist${config.home.homeDirectory}".directories = [ ".mozilla" ];
}; };
}; };
} }

View file

@ -12,6 +12,8 @@
]; ];
}; };
home.persistence."/persist${config.home.homeDirectory}".directories = [ ".config/obs-studio" ]; home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
with lib; with config.home; with config.xdg;
[ "data/${removePrefix "${homeDirectory}/" configHome}/obs-studio" ];
}; };
} }

View file

@ -3,62 +3,43 @@
config = lib.mkIf config.home.desktop.enable { config = lib.mkIf config.home.desktop.enable {
programs.thunderbird = { programs.thunderbird = {
enable = config.home.desktop.enable; enable = config.home.desktop.enable;
profiles = { profiles.default = {
Main = {
isDefault = true; isDefault = true;
userContent = ''
*{scrollbar-width:none !important}
'';
settings = { settings = {
"general.autoScroll" = true; "general.autoScroll" = true;
"browser.download.promptForDownload" = true;
"security.mixed_content.block_active_content" = true; "security.mixed_content.block_active_content" = true;
"security.mixed_content.block_display_content" = true; "security.mixed_content.block_display_content" = true;
"extensions.enabled" = false;
"extensions.autoDisableScopes" = 0;
"extensions.allow-non-mpc-extensions" = false;
"extensions.installDistroAddons" = false;
"extensions.getAddons.cache.enabled" = false;
"extensions.blocklist.enabled" = true;
"extensions.webextensions.userSelection" = false;
"extensions.checkCompatibility" = false;
"extensions.allowRemoteAddons" = false;
"extensions.ui.enabled" = false;
"extensions.ui.useSystemTheme" = true;
"extensions.activeThemeID" = "thunderbird-compact-dark@mozilla.org"; "extensions.activeThemeID" = "thunderbird-compact-dark@mozilla.org";
"extensions.allow-non-mpc-extensions" = false;
"extensions.allowRemoteAddons" = false;
"extensions.blocklist.enabled" = true;
"extensions.checkCompatibility" = false;
"extensions.enabled" = false;
"extensions.getAddons.cache.enabled" = false;
"extensions.ui.enabled" = false;
"extensions.webextensions.userSelection" = false;
"privacy.clearOnShutdown.cookies" = true;
"privacy.clearOnShutdown.cache" = true; "privacy.clearOnShutdown.cache" = true;
"privacy.clearOnShutdown.cookies" = true;
"privacy.clearOnShutdown.formdata" = true; "privacy.clearOnShutdown.formdata" = true;
"privacy.clearOnShutdown.siteSettings" = true; "privacy.clearOnShutdown.siteSettings" = true;
"privacy.trackingprotection.enabled" = true;
"privacy.firstparty.isolate" = true;
"privacy.donottrackheader.enabled" = true; "privacy.donottrackheader.enabled" = true;
"privacy.resistFingerprinting" = true; "privacy.resistFingerprinting" = true;
"privacy.trackingprotection.enabled" = true;
"browser.history.enabled" = false;
"browser.sessionstore.privacy_level" = 2;
"browser.tabs.warnOnClose" = false;
"browser.shell.checkDefaultBrowser" = false;
"browser.urlbar.suggest.openpage" = false;
"browser.urlbar.suggest.bookmark" = false;
"browser.urlbar.suggest.history" = false;
"browser.urlbar.suggest.searches" = false;
"browser.urlbar.suggest.topsites" = false;
"browser.download.promptForDownload" = true;
"network.cookie.cookieBehavior" = 1; "network.cookie.cookieBehavior" = 1;
"network.dns.dnsOverHttps.enabled" = true;
"network.http.speculative-parallel-limit" = 0;
"network.http.pipelining" = false;
"network.predictor.enabled" = false;
"network.cookie.lifetimePolicy" = 2; "network.cookie.lifetimePolicy" = 2;
}; "network.dns.dnsOverHttps.enabled" = true;
"network.http.pipelining" = false;
"network.http.speculative-parallel-limit" = 0;
"network.predictor.enabled" = false;
}; };
}; };
}; };
home.persistence."/persist${config.home.homeDirectory}".directories = [ ".thunderbird" ]; home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "browser/.thunderbird/default" ];
}; };
} }

View file

@ -1,13 +1,14 @@
{ config, lib, pkgs, pkgsUnstable, ... }: { config, lib, pkgs, ... }:
{ {
config = lib.mkIf config.home.desktop.enable { config = lib.mkIf config.home.desktop.enable {
home.packages = (with pkgs; [ home.packages = with pkgs; [
ffmpeg ffmpeg
ffmpegthumbnailer ffmpegthumbnailer
playerctl playerctl
puddletag puddletag
pulsemixer pulsemixer
]) ++ (with pkgsUnstable; [ spotdl ]); spotdl
];
home.shellAliases.spotopus = "spotdl --m3u --format opus"; home.shellAliases.spotopus = "spotdl --m3u --format opus";
}; };

View file

@ -1,14 +1,11 @@
{ config, lib, pkgs, pkgsUnstable, ... }: { config, lib, pkgs, ... }:
{ {
config = lib.mkIf config.home.gaming.enable { home.packages = with pkgs; lib.mkIf config.home.gaming.enable [
home.packages = (with pkgs; [ azahar
cemu cemu
dolphin-emu-beta dolphin-emu-beta
duckstation duckstation
pcsx2 pcsx2
]) ++ (with pkgsUnstable; [
azahar
ryubing ryubing
]); ];
};
} }

View file

@ -8,12 +8,23 @@
steam steam
steam-run-free steam-run-free
]; ];
persistence."/persist${config.home.homeDirectory}".directories = [ persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}" =
".config/heroic" with lib; with config.home; with config.xdg; {
".local/share/PrismLauncher" directories = [
".local/share/Steam" "games/${removePrefix "${homeDirectory}/" "Games"}"
"games/${removePrefix "${homeDirectory}/" configHome}/heroic"
"games/${removePrefix "${homeDirectory}/" dataHome}/PrismLauncher"
{
directory = "games/.steam";
method = "symlink";
}
{
directory = "games/${removePrefix "${homeDirectory}/" dataHome}/Steam";
method = "symlink";
}
]; ];
}; };
};
nixpkgs.allowUnfreePackages = [ nixpkgs.allowUnfreePackages = [
"steam" "steam"

View file

@ -6,9 +6,10 @@
qbittorrent qbittorrent
vesktop vesktop
]; ];
persistence."/persist${config.home.homeDirectory}".directories = [ persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
".config/qBittorrent" with lib; with config.home; with config.xdg; [
".config/vesktop" "data/${removePrefix "${homeDirectory}/" configHome}/qBittorrent"
"data/${removePrefix "${homeDirectory}/" configHome}/vesktop"
]; ];
}; };
} }

View file

@ -2,6 +2,7 @@
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
bc bc
colmena
ncdu ncdu
p7zip p7zip
vimv vimv

View file

@ -8,10 +8,11 @@
blender_4_4 blender_4_4
krita krita
]; ];
persistence."/persist${config.home.homeDirectory}".directories = [ persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
".config/audacity" with lib; with config.home; with config.xdg; [
".config/blender" "data/${removePrefix "${homeDirectory}/" configHome}/audacity"
".local/share/krita" "data/${removePrefix "${homeDirectory}/" configHome}/blender"
"data/${removePrefix "${homeDirectory}/" dataHome}/krita"
]; ];
}; };
} }

View file

@ -6,13 +6,16 @@
globalprotect-openconnect globalprotect-openconnect
gpauth gpauth
remmina remmina
teams-for-linux
]; ];
persistence."/persist${config.home.homeDirectory}".directories = [
".cache/gpclient" shellAliases.seneca = "ssh jhampton1@matrix.senecapolytechnic.ca";
".config/com.yuezk.qt"
".config/remmina" persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
".config/teams-for-linux" with lib; with config.home; with config.xdg; [
"school/${removePrefix "${homeDirectory}/" cacheHome}/gpclient"
"school/${removePrefix "${homeDirectory}/" configHome}/com.yuezk.qt"
"school/${removePrefix "${homeDirectory}/" configHome}/remmina"
"school/.vmware"
]; ];
}; };
} }

View file

@ -7,14 +7,15 @@
./eza ./eza
./fastfetch ./fastfetch
./git ./git
./gpg
./lazygit ./lazygit
./ncmpcpp ./ncmpcpp
./neovim ./neovim
./nh
./nix-index ./nix-index
./ranger ./ranger
./tmux ./ssh
./yt-dlp ./yt-dlp
./zellij
./zoxide ./zoxide
./zsh ./zsh
]; ];

View file

@ -1,7 +1,11 @@
{ ... }: { config, lib, ... }:
{ {
programs.direnv = { programs.direnv = {
enable = true; enable = true;
nix-direnv.enable = true; nix-direnv.enable = true;
}; };
home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
with lib; with config.home; with config.xdg;
[ "data/${removePrefix "${homeDirectory}/" dataHome}/direnv" ];
} }

View file

@ -1,97 +0,0 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": "xenia",
"color": {
"1": "1;97",
"2": "red",
"3": "yellow"
}
},
"display": {
"separator": " \u001b[33m ",
"color": "red"
},
"modules": [
{
"type": "custom",
"format": "\u001b[1m—————————————————————————————————————"
},
{
"type": "host",
"key": "󰌢 "
},
{
"type": "cpu",
"key": " "
},
{
"type": "gpu",
"key": "󰢮 "
},
{
"type": "disk",
"folders": "/",
"key": " "
},
{
"type": "memory",
"format": "{/1}{-}{/}{/2}{-}{/}{} / {}",
"key": " "
},
{
"type": "display",
"compactType": "original",
"key": "󰍹 "
},
{
"type": "custom",
"format": "\u001b[1m—————————————————————————————————————"
},
{
"type": "os",
"format": "{3} {12}",
"key": "󰍛 "
},
{
"type": "kernel",
"format": "{1} {2}",
"key": " "
},
{
"type": "wm",
"key": " "
},
{
"type": "shell",
"key": " "
},
{
"type": "terminal",
"key": " "
},
{
"type": "packages",
"key": "󰆧 "
},
{
"type": "uptime",
"key": "󰅐 "
},
{
"type": "command",
"text": "date -d @$(stat -c %W /persist) '+%a %b %d %r %Y'",
"key": "󰶡 "
},
{
"type": "custom",
"format": "\u001b[1m—————————————————————————————————————"
},
{
"type": "custom",
"format": "\u001b[90m󰮯 \u001b[31m󰊠 \u001b[32m󰊠 \u001b[33m󰊠 \u001b[34m󰊠 \u001b[35m󰊠 \u001b[36m󰊠 \u001b[37m󰊠"
}
]
}

View file

@ -1,8 +1,108 @@
{ pkgs, ... }: { ... }:
{ {
programs.fastfetch.enable = true; imports = [ ./smallfetch ];
home.packages = with pkgs; [ (writeScriptBin "smallfetch" "fastfetch --config ~/.config/fastfetch/small.jsonc") ]; programs.fastfetch = {
enable = true;
settings = with builtins; {
logo = {
source = "xenia";
color = {
"1" = "1;97";
"2" = "red";
"3" = "yellow";
};
};
xdg.configFile."fastfetch".source = ./configs; display = {
separator = fromJSON ''" \u001b[33m "'';
color = "red";
};
modules = [
{
type = "custom";
format = fromJSON ''"\u001b[1m"'';
}
{
type = "host";
key = "󰌢 ";
}
{
type = "cpu";
key = " ";
}
{
type = "gpu";
key = "󰢮 ";
}
{
type = "disk";
folders = "/";
key = " ";
}
{
type = "memory";
format = "{/1}{-}{/}{/2}{-}{/}{} / {}";
key = " ";
}
{
type = "display";
compactType = "original";
key = "󰍹 ";
}
{
type = "custom";
format = fromJSON ''"\u001b[1m"'';
}
{
type = "os";
format = "{3} {12}";
key = "󰍛 ";
}
{
type = "kernel";
format = "{1} {2}";
key = " ";
}
{
type = "wm";
key = " ";
}
{
type = "shell";
key = " ";
}
{
type = "terminal";
key = " ";
}
{
type = "packages";
key = "󰆧 ";
}
{
type = "uptime";
key = "󰅐 ";
}
{
type = "command";
text = "date -d @$(stat -c %W /persist) '+%a %b %d %r %Y'";
key = "󰶡 ";
}
{
type = "custom";
format = fromJSON ''"\u001b[1m"'';
}
{
type = "custom";
format = fromJSON ''"\u001b[90m󰮯 \u001b[31m󰊠 \u001b[32m󰊠 \u001b[33m󰊠 \u001b[34m󰊠 \u001b[35m󰊠 \u001b[36m󰊠 \u001b[37m󰊠"'';
}
];
};
};
home.shellAliases.ff = "clear && fastfetch";
} }

View file

@ -0,0 +1,11 @@
{ config, pkgs, ... }:
{
home.packages = with pkgs; with lib; with config.home; with config.xdg; [
(writeScriptBin "smallfetch" ''
#!/bin/sh
fastfetch --config $HOME/${removePrefix "${homeDirectory}/" configHome}/fastfetch/small.jsonc
'')
];
xdg.configFile."fastfetch/small.jsonc".source = ./small.jsonc;
}

View file

@ -0,0 +1,11 @@
{ config, ... }:
{
services.gpg-agent = {
enable = true;
enableSshSupport = true;
};
programs.gpg.enable = true;
home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories = [ "secure/.gnupg" ];
}

View file

@ -1,5 +1,7 @@
{ config, ... }: { config, lib, ... }:
{ {
programs.lazygit.enable = true; programs.lazygit.enable = true;
home.persistence."/persist${config.home.homeDirectory}".directories = [ ".local/state/lazygit" ]; home.persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
with lib; with config.home; with config.xdg;
[ "state/${removePrefix "${homeDirectory}/" stateHome}/lazygit" ];
} }

View file

@ -1,4 +1,4 @@
{ config, pkgs, ... }: { config, lib, pkgs, ... }:
{ {
programs.neovim = { programs.neovim = {
enable = true; enable = true;
@ -92,8 +92,8 @@
let g:airline_theme='onedark' let g:airline_theme='onedark'
let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#enabled = 1
hi Normal guibg=none hi Normal guibg=none
hi Visual guibg=#${config.look.colors.mid} hi Visual guibg=#${config.vars.colors.mid}
hi Pmenu guibg=#${config.look.colors.mid} hi Pmenu guibg=#${config.vars.colors.mid}
hi EndOfBuffer guibg=none hi EndOfBuffer guibg=none
hi LineNr guibg=none hi LineNr guibg=none
lua require'colorizer'.setup() lua require'colorizer'.setup()
@ -103,7 +103,7 @@
set mouse=a set mouse=a
set undofile set undofile
set undodir=$HOME/.local/share/nvim/undo set undodir=${config.xdg.dataHome}/nvim/undo
set undolevels=100 set undolevels=100
set undoreload=10000 set undoreload=10000
@ -115,6 +115,8 @@
home = { home = {
sessionVariables.MANPAGER = "nvim +Man!"; sessionVariables.MANPAGER = "nvim +Man!";
persistence."/persist${config.home.homeDirectory}".directories = [ ".local/share/nvim/undo" ]; persistence."${config.xdg.userDirs.extraConfig.XDG_PERSIST_DIR}".directories =
with lib; with config.home; with config.xdg;
[ "state/${removePrefix "${homeDirectory}/" dataHome}/nvim/undo" ];
}; };
} }

View file

@ -1,7 +0,0 @@
{ config, ... }:
{
programs.nh = {
enable = true;
flake = "${config.home.homeDirectory}/Projects/nixos-config";
};
}

Some files were not shown because too many files have changed in this diff Show more