Compare commits

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

269 commits
flakes ... main

Author SHA1 Message Date
fa61c1523b boot: Enable resolved/DNS-over-TLS 2025-06-25 01:14:54 +01:00
094812e6f1 kilgharrah: Install libdvdcss 2025-06-25 01:14:11 +01:00
43273d4689 flake.lock: Update
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/4835b1dc898959d8547a871ef484930675cb47f1' (2025-05-18)
  → 'github:ryantm/agenix/531beac616433bac6f9e2a19feb8e99a22a66baf' (2025-06-17)
• Updated input 'colmena':
    'github:zhaofengli/colmena/58f1beb074881d7208def140af71b7864b6139e0' (2025-06-08)
  → 'github:zhaofengli/colmena/c61641b156dfa3e82fc0671e77fccf7d7ccfaa3b' (2025-06-12)
• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/fe13e6abfe72b39ad8381595c3c404849330c3cb?dir=pkgs/firefox-addons' (2025-06-09)
  → 'gitlab:rycee/nur-expressions/aaaf4fec792bad465ea4a35c0be5bc2a54f33095?dir=pkgs/firefox-addons' (2025-06-24)
• Updated input 'home-manager':
    'github:nix-community/home-manager/7aae0ee71a17b19708b93b3ed448a1a0952bf111' (2025-06-05)
  → 'github:nix-community/home-manager/366f00797b1efb70f2882d3da485e3c10fd3d557' (2025-06-24)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/74d196c9943a67908d1883f61154e594d03863e5' (2025-06-09)
  → 'github:nix-community/home-manager/ff31a4677c1a8ae506aa7e003a3dba08cb203f82' (2025-06-24)
• Updated input 'lix-module':
    'https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/cd2a9c028df820a83ca2807dc6c6e7abc3dfa7fc.tar.gz?narHash=sha256-11R4K3iAx4tLXjUs%2BhQ5K90JwDABD/XHhsM9nkeS5N8%3D&rev=cd2a9c028df820a83ca2807dc6c6e7abc3dfa7fc' (2025-05-10)
  → 'https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/c3c78a32273e89d28367d8605a4c880f0b6607e3.tar.gz?narHash=sha256-EfA5K5EZAnspmraJrXQlziffVpaT%2BQDBiE6yKmuaNNQ%3D&rev=c3c78a32273e89d28367d8605a4c880f0b6607e3' (2025-06-24)
• Updated input 'lix-module/lix':
    'https://git.lix.systems/api/v1/repos/lix-project/lix/archive/47aad376c87e2e65967f17099277428e4b3f8e5a.tar.gz?narHash=sha256-hsFe4Tsqqg4l%2BFfQWphDtjC79WzNCZbEFhHI8j2KJzw%3D&rev=47aad376c87e2e65967f17099277428e4b3f8e5a' (2025-05-09)
  → 'https://git.lix.systems/api/v1/repos/lix-project/lix/archive/38b358ce27203f972faa2973cf44ba80c758f46e.tar.gz?narHash=sha256-LmQhjQ7c%2BAOkwhvR9GFgJOy8oHW35MoQRELtrwyVnPw%3D&rev=38b358ce27203f972faa2973cf44ba80c758f46e' (2025-06-24)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/70c74b02eac46f4e4aa071e45a6189ce0f6d9265' (2025-06-06)
  → 'github:NixOS/nixpkgs/c7ab75210cb8cb16ddd8f290755d9558edde7ee1' (2025-06-22)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/2b41bf05854399433a852b438bb5392dc56cbaba' (2025-06-07)
  → 'github:NixOS/nixpkgs/a5e9291e97f5ba0b4ba7d657ddedd5f86d11acfd' (2025-06-24)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/3e3afe5174c561dee0df6f2c2b2236990146329f' (2025-06-07)
  → 'github:NixOS/nixpkgs/4206c4cb56751df534751b058295ea61357bbbaa' (2025-06-21)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/0fc422d6c394191338c9d6a05786c63fc52a0f29' (2025-06-08)
  → 'github:NixOS/nixpkgs/4396a137499b6cc9f9fe9f3c266577bd52d455a4' (2025-06-24)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/3cc561e5c7c463785f0e79a518572afaa74c8377' (2025-06-09)
  → 'github:randomnetcat/nix-configs/1a2a536f5550c3b323e19f46d166340ad01745fd' (2025-06-24)
2025-06-24 22:11:48 +01:00
3c058d9b9a yevaud/pennykettle: Rewrite from scratch without networkd or microsocks 2025-06-24 22:09:34 +01:00
5df6e93ae3 yevaud/pennykettle: Standardise port numbers and interface names 2025-06-17 12:14:32 +01:00
f590432b7d yevaud/pennykettle: Further IPv6 fixes 2025-06-17 12:14:32 +01:00
a7052e1b8f yevaud/pennykettle: Run SOCKS server 2025-06-17 12:14:32 +01:00
7e61ad0aac yevaud/pennykettle: Fix IPv6 again 2025-06-17 12:14:32 +01:00
9cf30613f4 yevaud: Disable networkd
Just so much more trouble than it's worth - NixOS containers are really
not designed to work with it
2025-06-17 12:14:32 +01:00
dfe00fabb4 yevaud/pennykettle: Minor fixes to port forwarding 2025-06-17 12:14:32 +01:00
2347ba609d tohru: Install Apostrophe, Tuba 2025-06-17 08:15:24 +01:00
c55df8785a tohru: Uninstall amberol 2025-06-15 17:52:34 +01:00
fd31dbed5a backup: Offload DNS & SSH host key to other modules 2025-06-09 23:25:53 +01:00
45831f553b ssh: Read host keys from data file; rename from openssh 2025-06-09 18:02:02 +01:00
d43962290d flake.lock: Update
Flake lock file updates:

• Updated input 'colmena':
    'github:zhaofengli/colmena/df694ee23be7ed7b2d8b42c245a640f0724eb06c' (2025-05-09)
  → 'github:zhaofengli/colmena/58f1beb074881d7208def140af71b7864b6139e0' (2025-06-08)
• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/0a907047c5b56503dd2e889dbbb694c61b8daf25?dir=pkgs/firefox-addons' (2025-06-02)
  → 'gitlab:rycee/nur-expressions/fe13e6abfe72b39ad8381595c3c404849330c3cb?dir=pkgs/firefox-addons' (2025-06-09)
• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/49f0870db23e8c1ca0b5259734a02cd9e1e371a1' (2025-06-01)
  → 'github:hercules-ci/flake-parts/9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569' (2025-06-08)
• Updated input 'home-manager':
    'github:nix-community/home-manager/282e1e029cb6ab4811114fc85110613d72771dea' (2025-05-31)
  → 'github:nix-community/home-manager/7aae0ee71a17b19708b93b3ed448a1a0952bf111' (2025-06-05)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/c7fdb7e90bff1a51b79c1eed458fb39e6649a82a' (2025-06-02)
  → 'github:nix-community/home-manager/74d196c9943a67908d1883f61154e594d03863e5' (2025-06-09)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/a59eb7800787c926045d51b70982ae285faa2346' (2025-05-31)
  → 'github:NixOS/nixpkgs/70c74b02eac46f4e4aa071e45a6189ce0f6d9265' (2025-06-06)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/c9ffdbb8d515b225169ee8bbbff2fdcb8cb6a2e5' (2025-06-01)
  → 'github:NixOS/nixpkgs/2b41bf05854399433a852b438bb5392dc56cbaba' (2025-06-07)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/910796cabe436259a29a72e8d3f5e180fc6dfacc' (2025-05-31)
  → 'github:NixOS/nixpkgs/3e3afe5174c561dee0df6f2c2b2236990146329f' (2025-06-07)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/0d0bc640d371e9e8c9914c42951b3d6522bc5dda' (2025-06-01)
  → 'github:NixOS/nixpkgs/0fc422d6c394191338c9d6a05786c63fc52a0f29' (2025-06-08)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/7db88aafc6ff326ed1987a1fc4d639820c305843' (2025-06-02)
  → 'github:randomnetcat/nix-configs/3cc561e5c7c463785f0e79a518572afaa74c8377' (2025-06-09)
2025-06-09 17:13:50 +01:00
5fb39104e2 distributed-builds: Use Tailscale DNS 2025-06-09 17:04:53 +01:00
41cc006b96 treewide: Remove birdsong in favour of Tailscale 2025-06-09 16:58:28 +01:00
dbb7af7846 tailscale: Supply SSH known_hosts 2025-06-09 16:45:38 +01:00
f11815c2b1 yevaud/pennykettle: Re-enable, update for 25.05, fix IPv6 2025-06-09 16:22:48 +01:00
909f820af5 tailscale, headscale: Use internal DNS 2025-06-09 16:22:48 +01:00
3a9a3c40b0 kilgharrah: Slightly rearrange dock 2025-06-02 14:08:52 +01:00
d36f33fd93 flake.lock: Update
Flake lock file updates:

• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/f9801a86d6603260940890c36650275090d1dceb?dir=pkgs/firefox-addons' (2025-05-28)
  → 'gitlab:rycee/nur-expressions/0a907047c5b56503dd2e889dbbb694c61b8daf25?dir=pkgs/firefox-addons' (2025-06-02)
• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/c621e8422220273271f52058f618c94e405bb0f5' (2025-04-01)
  → 'github:hercules-ci/flake-parts/49f0870db23e8c1ca0b5259734a02cd9e1e371a1' (2025-06-01)
• Updated input 'flake-parts/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/e4822aea2a6d1cdd36653c134cacfd64c97ff4fa' (2025-03-30)
  → 'github:nix-community/nixpkgs.lib/656a64127e9d791a334452c6b6606d17539476e2' (2025-06-01)
• Updated input 'home-manager':
    'github:nix-community/home-manager/83665c39fa688bd6a1f7c43cf7997a70f6a109f9' (2025-05-26)
  → 'github:nix-community/home-manager/282e1e029cb6ab4811114fc85110613d72771dea' (2025-05-31)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/f5b12be834874f7661db4ced969a621ab2d57971' (2025-05-28)
  → 'github:nix-community/home-manager/c7fdb7e90bff1a51b79c1eed458fb39e6649a82a' (2025-06-02)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/7c43f080a7f28b2774f3b3f43234ca11661bf334' (2025-05-25)
  → 'github:NixOS/nixpkgs/a59eb7800787c926045d51b70982ae285faa2346' (2025-05-31)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/d90ebe5aafcdd79dc9d4210aacf1ff21d4ca31c3' (2025-05-27)
  → 'github:NixOS/nixpkgs/c9ffdbb8d515b225169ee8bbbff2fdcb8cb6a2e5' (2025-06-01)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/62b852f6c6742134ade1abdd2a21685fd617a291' (2025-05-25)
  → 'github:NixOS/nixpkgs/910796cabe436259a29a72e8d3f5e180fc6dfacc' (2025-05-31)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/aeb017b5830518483e0081d2ac6e12dd4d787f5d' (2025-05-28)
  → 'github:NixOS/nixpkgs/0d0bc640d371e9e8c9914c42951b3d6522bc5dda' (2025-06-01)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/32ddd519a7ce4486e8b8b5a8b3d3262e7442ce6c' (2025-05-28)
  → 'github:randomnetcat/nix-configs/7db88aafc6ff326ed1987a1fc4d639820c305843' (2025-06-02)
2025-06-02 08:52:55 +01:00
8df00f35b8 kilgharrah: Slightly rearrange dock 2025-06-02 08:51:20 +01:00
86c977d8ca qenya/dconf: Disable new GNOME 48 wellbeing features 2025-06-01 00:23:36 +01:00
bf378949d2 treewide: Partial migration from custom WireGuard to Headscale 2025-05-29 23:55:28 +01:00
bd3c9bd5f2 qenya: Patch Feishin with mpv support 2025-05-29 23:54:27 +01:00
453ec3c40d qenya/dconf: Enable new GNOMe 48 wellbeing features 2025-05-29 23:20:51 +01:00
bef3d8d04a qenya: install ripgrep 2025-05-29 20:43:44 +01:00
a299d94fc6 kilgharrah: Apply Plasma theming 2025-05-29 15:36:17 +01:00
ee984ad591 qenya/fonts: Update deprecated options for NixOS 25.05 2025-05-29 11:49:08 +01:00
303335ee3b kilgharrah: Move to nixpkgs unstable 2025-05-29 11:48:32 +01:00
55c622408b qenya/plasma: Move into kilgharrah's host config 2025-05-29 09:44:51 +01:00
a630607350 treewide: Update deprecated options for NixOS 25.05 2025-05-28 15:50:52 +01:00
6653fed1c2 flake: Update to NixOS 25.05
Flake lock file updates:

• Removed input 'actual'
• Removed input 'actual/nixpkgs'
• Updated input 'home-manager':
    'github:nix-community/home-manager/d5f1f641b289553927b3801580598d200a501863' (2025-05-19)
  → 'github:nix-community/home-manager/83665c39fa688bd6a1f7c43cf7997a70f6a109f9' (2025-05-26)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/f09dede81861f3a83f7f06641ead34f02f37597f' (2025-05-23)
  → 'github:NixOS/nixpkgs/7c43f080a7f28b2774f3b3f43234ca11661bf334' (2025-05-25)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/8c092804de127b5617972052ea46d499fb2fd424' (2025-05-27)
  → 'github:NixOS/nixpkgs/d90ebe5aafcdd79dc9d4210aacf1ff21d4ca31c3' (2025-05-27)
2025-05-28 15:49:27 +01:00
83e8c3d8f8 kalessin, orm: Fix broken backups
Not been working for two and a half months. Oops. We've all been there.
2025-05-28 15:27:07 +01:00
5fee65c784 flake.lock: Update
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/96e078c646b711aee04b82ba01aefbff87004ded' (2025-04-26)
  → 'github:ryantm/agenix/4835b1dc898959d8547a871ef484930675cb47f1' (2025-05-18)
• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/1ebb2cf654110901889353440027993312e1aeb0?dir=pkgs/firefox-addons' (2025-05-16)
  → 'gitlab:rycee/nur-expressions/f9801a86d6603260940890c36650275090d1dceb?dir=pkgs/firefox-addons' (2025-05-28)
• Updated input 'home-manager':
    'github:nix-community/home-manager/1eec32f0efe3b830927989767a9e6ece0d82d608' (2025-05-15)
  → 'github:nix-community/home-manager/d5f1f641b289553927b3801580598d200a501863' (2025-05-19)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/d2263ce5f4c251c0f7608330e8fdb7d1f01f0667' (2025-05-16)
  → 'github:nix-community/home-manager/f5b12be834874f7661db4ced969a621ab2d57971' (2025-05-28)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5d736263df906c5da72ab0f372427814de2f52f8' (2025-05-14)
  → 'github:NixOS/nixpkgs/f09dede81861f3a83f7f06641ead34f02f37597f' (2025-05-23)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/288a96500445cddb1613dfd3b6fcc9d5b32fa7ad' (2025-05-16)
  → 'github:NixOS/nixpkgs/8c092804de127b5617972052ea46d499fb2fd424' (2025-05-27)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/adaa24fbf46737f3f1b5497bf64bae750f82942e' (2025-05-13)
  → 'github:NixOS/nixpkgs/62b852f6c6742134ade1abdd2a21685fd617a291' (2025-05-25)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/adfa8b0e75657c862acd0119ee42a69a6a6b2b4e' (2025-05-16)
  → 'github:NixOS/nixpkgs/aeb017b5830518483e0081d2ac6e12dd4d787f5d' (2025-05-28)
• Updated input 'plasma-manager':
    'github:nix-community/plasma-manager/b70be387276e632fe51232887f9e04e2b6ef8c16' (2025-03-23)
  → 'github:nix-community/plasma-manager/b7697abe89967839b273a863a3805345ea54ab56' (2025-05-25)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/a5540bdb3e6e9d2ad8ea9639654ff7263008d239' (2025-05-16)
  → 'github:randomnetcat/nix-configs/32ddd519a7ce4486e8b8b5a8b3d3262e7442ce6c' (2025-05-28)
2025-05-28 09:42:48 +01:00
d2ec22d8fb nix: Remove redundant manual $NIX_PATH value 2025-05-22 15:16:15 +01:00
f1718e5c3b tehanu: init 2025-05-22 03:10:37 +01:00
b64d34e9c4 tailscale: Autoconect to headscale on boot 2025-05-22 01:42:42 +01:00
27c579e7aa kilgharrah: Blu-ray drive support 2025-05-21 19:32:29 +01:00
fa78156120 owncast: Resolve port number clash 2025-05-21 19:28:39 +01:00
2e37815edb audiobookshelf: Use built-in NixOS setting for nginx websocket support 2025-05-21 19:28:29 +01:00
a98fd9ba83 tailscale, headscale: init 2025-05-21 19:28:07 +01:00
b35fefbf98 kalessin: Add randomcat to wheel 2025-05-21 19:27:41 +01:00
78118c14dc qenya: Install Celluloid (on GNOME) or Haruna (on KDE) 2025-05-16 17:28:53 +01:00
7dc684cce3 flake: Update lix to 2.93.0 2025-05-16 17:05:42 +01:00
a8ab37993d flake.lock: Update
Flake lock file updates:

• Updated input 'birdsong':
    'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=a40220a4b977bc04cbe9e13ff5c667ed6f252677' (2025-02-05)
  → 'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=9955b1ae4eb0cbeff2ae0ed6520e651753880445' (2025-05-13)
• Updated input 'colmena':
    'github:zhaofengli/colmena/2370d4336eda2a9ef29fce10fa7076ae011983ab' (2025-02-18)
  → 'github:zhaofengli/colmena/df694ee23be7ed7b2d8b42c245a640f0724eb06c' (2025-05-09)
• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/346899a4b3b651ab447c61e0c8e9d8a1454cda72?dir=pkgs/firefox-addons' (2025-04-23)
  → 'gitlab:rycee/nur-expressions/1ebb2cf654110901889353440027993312e1aeb0?dir=pkgs/firefox-addons' (2025-05-16)
• Updated input 'home-manager':
    'github:nix-community/home-manager/dd26f75fb4ec1c731d4b1396eaf4439ce40a91c1' (2025-04-25)
  → 'github:nix-community/home-manager/1eec32f0efe3b830927989767a9e6ece0d82d608' (2025-05-15)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/2f5819a962489e037a57835f63ed6ff8dbc2d5fb' (2025-04-26)
  → 'github:nix-community/home-manager/d2263ce5f4c251c0f7608330e8fdb7d1f01f0667' (2025-05-16)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5630cf13cceac06cefe9fc607e8dfa8fb342dde3' (2025-04-24)
  → 'github:NixOS/nixpkgs/5d736263df906c5da72ab0f372427814de2f52f8' (2025-05-14)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/d1e377e4cfcb3da8da4b71dbef631e8317907cd8' (2025-04-26)
  → 'github:NixOS/nixpkgs/288a96500445cddb1613dfd3b6fcc9d5b32fa7ad' (2025-05-16)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/f771eb401a46846c1aebd20552521b233dd7e18b' (2025-04-24)
  → 'github:NixOS/nixpkgs/adaa24fbf46737f3f1b5497bf64bae750f82942e' (2025-05-13)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/1ee8b713821882c66f5ecfde5c4e5874b1cb5e2f' (2025-04-27)
  → 'github:NixOS/nixpkgs/adfa8b0e75657c862acd0119ee42a69a6a6b2b4e' (2025-05-16)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/876f365eaa010988a0908421578c72fb17c28f09' (2025-04-27)
  → 'github:randomnetcat/nix-configs/a5540bdb3e6e9d2ad8ea9639654ff7263008d239' (2025-05-16)
2025-05-16 17:04:42 +01:00
db7efe4cd0 qenya/vscode: Configure vscode to handle python venvs 2025-04-28 19:23:50 +01:00
ed43e2a1f0 qenya/zsh: Use powerlevel10k theme
Closes #15
2025-04-28 17:34:36 +01:00
278e172881 owncast: init 2025-04-28 15:18:44 +01:00
c22c1e3768 steam: Open ports for game sideloading on LAN 2025-04-28 13:06:33 +01:00
1216b34206 steam: Run with PipeWire support by default 2025-04-28 13:06:20 +01:00
9c39440238 nix: Remove insecure package exception for electron 31
Feishin has updated: https://github.com/jeffvli/feishin/issues/879
2025-04-27 13:30:37 +01:00
e2c74a3743 flake.lock: Update
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/e600439ec4c273cf11e06fe4d9d906fb98fa097c' (2025-01-15)
  → 'github:ryantm/agenix/96e078c646b711aee04b82ba01aefbff87004ded' (2025-04-26)
• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/60f50437003e17137a871686dfa3fc4291edd5e5?dir=pkgs/firefox-addons' (2025-04-07)
  → 'gitlab:rycee/nur-expressions/346899a4b3b651ab447c61e0c8e9d8a1454cda72?dir=pkgs/firefox-addons' (2025-04-23)
• Updated input 'home-manager':
    'github:nix-community/home-manager/a9f8b3db211b4609ddd83683f9db89796c7f6ac6' (2025-04-04)
  → 'github:nix-community/home-manager/dd26f75fb4ec1c731d4b1396eaf4439ce40a91c1' (2025-04-25)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/f463902a3f03e15af658e48bcc60b39188ddf734' (2025-04-07)
  → 'github:nix-community/home-manager/2f5819a962489e037a57835f63ed6ff8dbc2d5fb' (2025-04-26)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/7819a0d29d1dd2bc331bec4b327f0776359b1fa6' (2025-04-05)
  → 'github:NixOS/nixpkgs/5630cf13cceac06cefe9fc607e8dfa8fb342dde3' (2025-04-24)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/f27c6099cec4fe9b67c7fbc51d8324dcb4b52694' (2025-04-05)
  → 'github:NixOS/nixpkgs/d1e377e4cfcb3da8da4b71dbef631e8317907cd8' (2025-04-26)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/42a1c966be226125b48c384171c44c651c236c22' (2025-04-05)
  → 'github:NixOS/nixpkgs/f771eb401a46846c1aebd20552521b233dd7e18b' (2025-04-24)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/da98c5d529f118c82e80a3f9b4fb01fdeba3cf7a' (2025-04-06)
  → 'github:NixOS/nixpkgs/1ee8b713821882c66f5ecfde5c4e5874b1cb5e2f' (2025-04-27)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/335ef83e439cfcb4781d5a8f54f606afb63e9f48' (2025-04-07)
  → 'github:randomnetcat/nix-configs/876f365eaa010988a0908421578c72fb17c28f09' (2025-04-27)
2025-04-27 11:20:13 +01:00
4f82380855 Remove rudimentary netbox module
Accidentally committed a while ago
2025-04-08 17:22:10 +01:00
8f8f2556a0 Revert "kanidm: init"
This reverts commit 9968717824.
2025-04-07 15:21:14 +01:00
61d86b7f57 flake: pin lix version 2025-04-07 15:20:17 +01:00
4265d5bae9 flake.lock: Update
Flake lock file updates:

• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/5a0ac85616aa6b166ea715a41bc1255bb802b189?dir=pkgs/firefox-addons' (2025-03-16)
  → 'gitlab:rycee/nur-expressions/60f50437003e17137a871686dfa3fc4291edd5e5?dir=pkgs/firefox-addons' (2025-04-07)
• Removed input 'firefox-addons/flake-utils'
• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/f4330d22f1c5d2ba72d3d22df5597d123fdb60a9' (2025-03-07)
  → 'github:hercules-ci/flake-parts/c621e8422220273271f52058f618c94e405bb0f5' (2025-04-01)
• Updated input 'flake-parts/nixpkgs-lib':
    'github:nix-community/nixpkgs.lib/147dee35aab2193b174e4c0868bd80ead5ce755c' (2025-03-02)
  → 'github:nix-community/nixpkgs.lib/e4822aea2a6d1cdd36653c134cacfd64c97ff4fa' (2025-03-30)
• Updated input 'home-manager':
    'github:nix-community/home-manager/9d3d080aec2a35e05a15cedd281c2384767c2cfe' (2025-02-17)
  → 'github:nix-community/home-manager/a9f8b3db211b4609ddd83683f9db89796c7f6ac6' (2025-04-04)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/4e12151c9e014e2449e0beca2c0e9534b96a26b4' (2025-03-14)
  → 'github:nix-community/home-manager/f463902a3f03e15af658e48bcc60b39188ddf734' (2025-04-07)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/cdd2ef009676ac92b715ff26630164bb88fec4e0' (2025-03-13)
  → 'github:NixOS/nixpkgs/7819a0d29d1dd2bc331bec4b327f0776359b1fa6' (2025-04-05)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/f182029bf7f08a57762b4c762d0917b6803ceff4' (2025-03-15)
  → 'github:NixOS/nixpkgs/f27c6099cec4fe9b67c7fbc51d8324dcb4b52694' (2025-04-05)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5' (2025-03-15)
  → 'github:NixOS/nixpkgs/42a1c966be226125b48c384171c44c651c236c22' (2025-04-05)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/f985965fff9d4e5df55df0489ef113d09a6ee08d' (2025-03-16)
  → 'github:NixOS/nixpkgs/da98c5d529f118c82e80a3f9b4fb01fdeba3cf7a' (2025-04-06)
• Updated input 'plasma-manager':
    'github:nix-community/plasma-manager/5eeb0172fb74392053b66a8149e61b5e191b2845' (2025-02-26)
  → 'github:nix-community/plasma-manager/b70be387276e632fe51232887f9e04e2b6ef8c16' (2025-03-23)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/a448b9a9ce66f8e1d1a1de1205f384da25574c7b' (2025-03-16)
  → 'github:randomnetcat/nix-configs/335ef83e439cfcb4781d5a8f54f606afb63e9f48' (2025-04-07)
2025-04-07 12:28:08 +01:00
9968717824 kanidm: init 2025-04-03 08:04:22 +01:00
dc7fdfb7ea gpg: init 2025-03-19 17:17:51 +00:00
780a18f627 qenya/vscode: rust-analyzer support 2025-03-18 13:14:50 +00:00
52e3168f8d pipewire-low-latency: Remove
Not sure it every really did anything useful, and even if it did, my
current streaming setup doesn't need it any more
2025-03-17 03:00:24 +00:00
d8e85815bd users: custom property to define users with root 2025-03-17 02:57:15 +00:00
55000c365a web-redirect: init new service for simple domain redirects 2025-03-17 02:25:28 +00:00
addbf7ac3e orm: move actual.qenya.tel -> actual.unspecified.systems 2025-03-17 02:01:22 +00:00
a658c88fc0 flake.lock: Update
Flake lock file updates:

• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/0b95936d94ea2a3ce66538f299351cf0b491aa15?dir=pkgs/firefox-addons' (2025-03-07)
  → 'gitlab:rycee/nur-expressions/5a0ac85616aa6b166ea715a41bc1255bb802b189?dir=pkgs/firefox-addons' (2025-03-16)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/95711f926676018d279ba09fe7530d03b5d5b3e2' (2025-03-07)
  → 'github:nix-community/home-manager/4e12151c9e014e2449e0beca2c0e9534b96a26b4' (2025-03-14)
• Updated input 'lix-module':
    'git+https://git.lix.systems/lix-project/nixos-module?ref=stable&rev=a3573779c9ba3d55b90aee6e9b4e70e23d34c1ba' (2025-01-18)
  → 'git+https://git.lix.systems/lix-project/nixos-module?ref=stable&rev=ed7a2fa83145868ecb830d6b3c73ebfd81a9e911' (2025-03-13)
• Updated input 'lix-module/lix':
    'https://git.lix.systems/api/v1/repos/lix-project/lix/archive/2837da71ec1588c1187d2e554719b15904a46c8b.tar.gz?narHash=sha256-CCKIAE84dzkrnlxJCKFyffAxP3yfsOAbdvydUGqq24g%3D&rev=2837da71ec1588c1187d2e554719b15904a46c8b' (2025-01-18)
  → 'https://git.lix.systems/api/v1/repos/lix-project/lix/archive/079528098f5998ba13c88821a2eca1005c1695de.tar.gz?narHash=sha256-pgDJZjj4jpzkFxsqBTI/9Yb0n3gW%2BDvDtuv9SwQZZcs%3D&rev=079528098f5998ba13c88821a2eca1005c1695de' (2025-01-18)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/20755fa05115c84be00b04690630cb38f0a203ad' (2025-03-07)
  → 'github:NixOS/nixpkgs/cdd2ef009676ac92b715ff26630164bb88fec4e0' (2025-03-13)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/9290fda826610430b3fc8cc98443c3a2faaaf151' (2025-03-07)
  → 'github:NixOS/nixpkgs/f182029bf7f08a57762b4c762d0917b6803ceff4' (2025-03-15)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/10069ef4cf863633f57238f179a0297de84bd8d3' (2025-03-06)
  → 'github:NixOS/nixpkgs/c80f6a7e10b39afcc1894e02ef785b1ad0b0d7e5' (2025-03-15)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/f104cca31ba6c0403b678ad9428726476b503782' (2025-03-07)
  → 'github:NixOS/nixpkgs/f985965fff9d4e5df55df0489ef113d09a6ee08d' (2025-03-16)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/814314b94a4d44197d2708d4b48d9df1d14892e2' (2025-03-07)
  → 'github:randomnetcat/nix-configs/a448b9a9ce66f8e1d1a1de1205f384da25574c7b' (2025-03-16)
2025-03-16 15:09:01 +00:00
df688efb79 Update README.md 2025-03-15 19:58:34 +00:00
c14b57b186 Update README 2025-03-15 19:55:30 +00:00
6c7bdfa061 qenya/vscode: minor CSS default formatter changes 2025-03-15 19:55:22 +00:00
424de492d7 yevaud: move git.qenya.tel -> git.unspecified.systems 2025-03-15 12:29:30 +00:00
24faa7cc26 orm: add missing postgresql auth method 2025-03-08 00:02:07 +00:00
1b66df659e elucredassa: add missing dataset for backups from kalessin 2025-03-07 23:51:51 +00:00
d1b1e0f0ca orm: temporarily disable SSL on postgres 2025-03-07 23:39:34 +00:00
00ce03ae11 flake.lock: Update
Flake lock file updates:

• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/9a8a0914000e4453c99a4c12e9862a0a40075851?dir=pkgs/firefox-addons' (2025-02-22)
  → 'gitlab:rycee/nur-expressions/0b95936d94ea2a3ce66538f299351cf0b491aa15?dir=pkgs/firefox-addons' (2025-03-07)
• Updated input 'flake-parts':
    'github:hercules-ci/flake-parts/32ea77a06711b758da0ad9bd6a844c5740a87abd' (2025-02-01)
  → 'github:hercules-ci/flake-parts/f4330d22f1c5d2ba72d3d22df5597d123fdb60a9' (2025-03-07)
• Updated input 'flake-parts/nixpkgs-lib':
    'https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz?narHash=sha256-vJzFZGaCpnmo7I6i416HaBLpC%2BhvcURh/BQwROcGIp8%3D' (2025-02-01)
  → 'github:nix-community/nixpkgs.lib/147dee35aab2193b174e4c0868bd80ead5ce755c' (2025-03-02)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/74f0a8546e3f2458c870cf90fc4b38ac1f498b17' (2025-02-25)
  → 'github:nix-community/home-manager/95711f926676018d279ba09fe7530d03b5d5b3e2' (2025-03-07)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/04ef94c4c1582fd485bbfdb8c4a8ba250e359195' (2025-02-23)
  → 'github:NixOS/nixpkgs/20755fa05115c84be00b04690630cb38f0a203ad' (2025-03-07)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/3133e42e3ef45fd6ae93da6e8ac337f6f3317b5a' (2025-02-24)
  → 'github:NixOS/nixpkgs/9290fda826610430b3fc8cc98443c3a2faaaf151' (2025-03-07)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/0196c0175e9191c474c26ab5548db27ef5d34b05' (2025-02-24)
  → 'github:NixOS/nixpkgs/10069ef4cf863633f57238f179a0297de84bd8d3' (2025-03-06)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/d4d7eaf04bb369b178ad6eab68e356056aeaa952' (2025-02-25)
  → 'github:NixOS/nixpkgs/f104cca31ba6c0403b678ad9428726476b503782' (2025-03-07)
• Updated input 'plasma-manager':
    'github:nix-community/plasma-manager/1f3e1f38dedbbb8aad77e184fb54ec518e2d9522' (2025-02-14)
  → 'github:nix-community/plasma-manager/5eeb0172fb74392053b66a8149e61b5e191b2845' (2025-02-26)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/f6a2aa7f496bf225c8e5434382619a93b7c1cb20' (2025-02-26)
  → 'github:randomnetcat/nix-configs/814314b94a4d44197d2708d4b48d9df1d14892e2' (2025-03-07)
2025-03-07 22:06:20 +00:00
789324923b orm: install postgres 2025-03-07 22:02:34 +00:00
9760d4d3bc actual: hardcode domain 2025-03-04 19:46:37 +00:00
86f77d2564 kalessin: add new state dataset 2025-03-04 19:45:03 +00:00
d36c87220b orm: don't snapshot the empty root dataset for /var/lib 2025-03-04 19:44:50 +00:00
373bd88e1b backup: hoist variable definitions, add source to target's knownHosts 2025-03-04 18:12:44 +00:00
fefc7bd20d backup: init as a reusable module 2025-03-04 14:43:03 +00:00
691c180ac1 flake: define flake-parts options for colmena
This allows us to define options on the top level, so that we can write
modules to generate config for multiple hosts.

Idea from
1c51514586
2025-03-03 21:26:32 +00:00
c70b287890 treewide: define fqdn, use as default deployment target host 2025-03-03 19:54:32 +00:00
a700ee2445 flake: Use flake-parts to define devShells cross-system 2025-02-26 21:03:57 +00:00
17402985b6 qenya/zsh: use direnv to load local dev shells 2025-02-26 11:07:53 +00:00
8e4b0d26b3 qenya/vscode: settings for python formatting and linting 2025-02-26 11:07:21 +00:00
befc4ac699 flake.lock: Update
Flake lock file updates:

• Updated input 'actual':
    'git+https://git.xeno.science/xenofem/actual-nix?ref=main&rev=8d04125d902637c54a6278cf8d10954b2ed95d61' (2025-01-07)
  → 'git+https://git.xeno.science/xenofem/actual-nix?ref=main&rev=f64adb78f15981d60af97e7aa691d2ebdf48ceaa' (2025-02-06)
• Updated input 'birdsong':
    'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=007130e869f1223713d588ba0f125c586ca13623' (2025-02-04)
  → 'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=a40220a4b977bc04cbe9e13ff5c667ed6f252677' (2025-02-05)
• Updated input 'colmena':
    'github:zhaofengli/colmena/a6b51f5feae9bfb145daa37fd0220595acb7871e' (2024-12-22)
  → 'github:zhaofengli/colmena/2370d4336eda2a9ef29fce10fa7076ae011983ab' (2025-02-18)
• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/727fbb76627296cdeab0f2367930fb1f663b2113?dir=pkgs/firefox-addons' (2025-02-04)
  → 'gitlab:rycee/nur-expressions/9a8a0914000e4453c99a4c12e9862a0a40075851?dir=pkgs/firefox-addons' (2025-02-22)
• Updated input 'home-manager':
    'github:nix-community/home-manager/bd65bc3cde04c16755955630b344bc9e35272c56' (2025-01-08)
  → 'github:nix-community/home-manager/9d3d080aec2a35e05a15cedd281c2384767c2cfe' (2025-02-17)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/7abcf59a365430b36f84eaa452a466b11e469e33' (2025-02-04)
  → 'github:nix-community/home-manager/74f0a8546e3f2458c870cf90fc4b38ac1f498b17' (2025-02-25)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/fecfeb86328381268e29e998ddd3ebc70bbd7f7c' (2025-02-03)
  → 'github:NixOS/nixpkgs/04ef94c4c1582fd485bbfdb8c4a8ba250e359195' (2025-02-23)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/11e2214d91f0d06ea8575087e3cd8e246c550bd8' (2025-02-04)
  → 'github:NixOS/nixpkgs/3133e42e3ef45fd6ae93da6e8ac337f6f3317b5a' (2025-02-24)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/c6e957d81b96751a3d5967a0fd73694f303cc914' (2025-02-03)
  → 'github:NixOS/nixpkgs/0196c0175e9191c474c26ab5548db27ef5d34b05' (2025-02-24)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/a1e849ff441fa1315afa27e1fd18c791f61de06b' (2025-02-04)
  → 'github:NixOS/nixpkgs/d4d7eaf04bb369b178ad6eab68e356056aeaa952' (2025-02-25)
• Updated input 'plasma-manager':
    'github:nix-community/plasma-manager/a53af7f1514ef4cce8620a9d6a50f238cdedec8b' (2025-01-10)
  → 'github:nix-community/plasma-manager/1f3e1f38dedbbb8aad77e184fb54ec518e2d9522' (2025-02-14)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/efff66f0e1b27a4f0894d1cfde02d0892a9bfe9d' (2025-02-04)
  → 'github:randomnetcat/nix-configs/f6a2aa7f496bf225c8e5434382619a93b7c1cb20' (2025-02-26)
2025-02-26 02:36:18 +00:00
1bdb16c788 orm, elucredassa: minor cleanup to backup prototype 2025-02-08 03:45:17 +00:00
3ec0a2fcb9 orm, elucredassa: prototype backups for actual 2025-02-08 03:04:57 +00:00
0c327b20ea flake.lock: Update
Flake lock file updates:

• Updated input 'birdsong':
    'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=4e461f83a84aba32bdf640163375f1e31b699111' (2025-01-21)
  → 'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=007130e869f1223713d588ba0f125c586ca13623' (2025-02-04)
2025-02-04 19:59:04 +00:00
2d42894fa7 nix: add @wheel to trusted-users everywhere 2025-02-04 17:20:19 +00:00
b04e6d1313 elucredassa, kilgharrah: set up remote builds for elucredassa 2025-02-04 16:42:33 +00:00
716d10da36 flake.lock: Update
Flake lock file updates:

• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/acdea85582887f189e7fb80e2f80e424a39f779f?dir=pkgs/firefox-addons' (2025-01-21)
  → 'gitlab:rycee/nur-expressions/727fbb76627296cdeab0f2367930fb1f663b2113?dir=pkgs/firefox-addons' (2025-02-04)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/bb14224f51ae4caed12a7b26f245d042c8cf8553' (2025-01-21)
  → 'github:nix-community/home-manager/7abcf59a365430b36f84eaa452a466b11e469e33' (2025-02-04)
• Updated input 'lix-module':
    'git+https://git.lix.systems/lix-project/nixos-module?ref=stable&rev=96824d606a6656650bbe436366bc89d5ee3a6573' (2024-11-26)
  → 'git+https://git.lix.systems/lix-project/nixos-module?ref=stable&rev=a3573779c9ba3d55b90aee6e9b4e70e23d34c1ba' (2025-01-18)
• Updated input 'lix-module/flake-utils':
    'github:numtide/flake-utils/c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a' (2024-09-17)
  → 'github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b' (2024-11-13)
• Updated input 'lix-module/lix':
    'https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?narHash=sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U%3D&rev=ad9d06f7838a25beec425ff406fe68721fef73be' (2024-10-19)
  → 'https://git.lix.systems/api/v1/repos/lix-project/lix/archive/2837da71ec1588c1187d2e554719b15904a46c8b.tar.gz?narHash=sha256-CCKIAE84dzkrnlxJCKFyffAxP3yfsOAbdvydUGqq24g%3D&rev=2837da71ec1588c1187d2e554719b15904a46c8b' (2025-01-18)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/107d5ef05c0b1119749e381451389eded30fb0d5' (2025-01-19)
  → 'github:NixOS/nixpkgs/fecfeb86328381268e29e998ddd3ebc70bbd7f7c' (2025-02-03)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/6b90f6de986555ac39fc69c438d1192a397bf686' (2025-01-20)
  → 'github:NixOS/nixpkgs/11e2214d91f0d06ea8575087e3cd8e246c550bd8' (2025-02-04)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/5df43628fdf08d642be8ba5b3625a6c70731c19c' (2025-01-16)
  → 'github:NixOS/nixpkgs/c6e957d81b96751a3d5967a0fd73694f303cc914' (2025-02-03)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/886a2858d36245806197fd8b836b4cc52fbb05b0' (2025-01-21)
  → 'github:NixOS/nixpkgs/a1e849ff441fa1315afa27e1fd18c791f61de06b' (2025-02-04)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/dc1e0ac59b8c462aed7f37579e22912e83a21f97' (2025-01-08)
  → 'github:randomnetcat/nix-configs/efff66f0e1b27a4f0894d1cfde02d0892a9bfe9d' (2025-02-04)
2025-02-04 15:32:03 +00:00
07c49c3d37 elucredassa: Restrict WireGuard's MTU to fit through 6in4 tunnel
Includes a workaround for https://github.com/NixOS/nixpkgs/issues/375960
2025-01-23 14:24:39 +00:00
6c3a225666 flake: Add address for elucredassa 2025-01-22 00:27:30 +00:00
8f3b3adac1 elucredassa: Get IPv6 connectivity through HE.net tunnel broker 2025-01-21 23:19:15 +00:00
19561f0e69 nix: permit "insecure" electron-31 2025-01-21 19:55:15 +00:00
4788c84cd9 elucredassa: connect to birdsong 2025-01-21 18:06:54 +00:00
c109d8e7e7 kilgharrah: explicitly enable zfs userspace utils
this has occasionally come in handy while shuffling drives around
2025-01-21 17:59:23 +00:00
7fe71d559c flake.lock: Update
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41' (2024-08-10)
  → 'github:ryantm/agenix/e600439ec4c273cf11e06fe4d9d906fb98fa097c' (2025-01-15)
• Updated input 'birdsong':
    'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=54c8b67a44ed58f92b6233934387b6e568151336' (2024-12-27)
  → 'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=4e461f83a84aba32bdf640163375f1e31b699111' (2025-01-21)
• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/dfc28c64131d651a0b9c560b298c712d5a79c6a0?dir=pkgs/firefox-addons' (2025-01-08)
  → 'gitlab:rycee/nur-expressions/acdea85582887f189e7fb80e2f80e424a39f779f?dir=pkgs/firefox-addons' (2025-01-21)
• Updated input 'home-manager':
    'github:nix-community/home-manager/613691f285dad87694c2ba1c9e6298d04736292d' (2024-12-28)
  → 'github:nix-community/home-manager/bd65bc3cde04c16755955630b344bc9e35272c56' (2025-01-08)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/45bcdbc910dc5131943bb6f7edb156617898fd1a' (2025-01-08)
  → 'github:nix-community/home-manager/bb14224f51ae4caed12a7b26f245d042c8cf8553' (2025-01-21)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/3f0a8ac25fb674611b98089ca3a5dd6480175751' (2025-01-06)
  → 'github:NixOS/nixpkgs/107d5ef05c0b1119749e381451389eded30fb0d5' (2025-01-19)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/aedc34a0abc375a413d16802ee5172b4247d20db' (2025-01-08)
  → 'github:NixOS/nixpkgs/6b90f6de986555ac39fc69c438d1192a397bf686' (2025-01-20)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/8f3e1f807051e32d8c95cd12b9b421623850a34d' (2025-01-04)
  → 'github:NixOS/nixpkgs/5df43628fdf08d642be8ba5b3625a6c70731c19c' (2025-01-16)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/da76b6311eb169eb526de6feeae7492283fe1f8b' (2025-01-08)
  → 'github:NixOS/nixpkgs/886a2858d36245806197fd8b836b4cc52fbb05b0' (2025-01-21)
• Updated input 'plasma-manager':
    'github:nix-community/plasma-manager/d16bbded0ae452bc088489e7dca3ef58d8d1830b' (2024-12-24)
  → 'github:nix-community/plasma-manager/a53af7f1514ef4cce8620a9d6a50f238cdedec8b' (2025-01-10)
2025-01-21 17:52:44 +00:00
0665be0db9 elucredassa: don't sleep when lid shut 2025-01-21 13:59:21 +00:00
c021f4dc3d elucredassa: enable swap 2025-01-20 20:32:37 +00:00
30bdb5dd7f elucredassa: set timezone to UTC 2025-01-20 18:39:36 +00:00
2a7baa9b62 elucredassa: init 2025-01-20 18:30:48 +00:00
ba8fc5fef6 flake.lock: Update
Flake lock file updates:

• Updated input 'actual':
    'git+https://git.xeno.science/xenofem/actual-nix?ref=main&rev=7f041ffa7f204deb0fc2e36908b382804f2e108d' (2024-12-07)
  → 'git+https://git.xeno.science/xenofem/actual-nix?ref=main&rev=8d04125d902637c54a6278cf8d10954b2ed95d61' (2025-01-07)
• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/b93d8cdf12139da45146a6c3cf53141a437c41ec?dir=pkgs/firefox-addons' (2025-01-04)
  → 'gitlab:rycee/nur-expressions/dfc28c64131d651a0b9c560b298c712d5a79c6a0?dir=pkgs/firefox-addons' (2025-01-08)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/5ad12b6ea06b84e48f6b677957c74f32d47bdee0' (2025-01-05)
  → 'github:nix-community/home-manager/45bcdbc910dc5131943bb6f7edb156617898fd1a' (2025-01-08)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d29ab98cd4a70a387b8ceea3e930b3340d41ac5a' (2025-01-03)
  → 'github:NixOS/nixpkgs/3f0a8ac25fb674611b98089ca3a5dd6480175751' (2025-01-06)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/beaa880fbe02536b66d5361dd3e61c1abf44155f' (2025-01-05)
  → 'github:NixOS/nixpkgs/aedc34a0abc375a413d16802ee5172b4247d20db' (2025-01-08)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/6df24922a1400241dae323af55f30e4318a6ca65' (2025-01-02)
  → 'github:NixOS/nixpkgs/8f3e1f807051e32d8c95cd12b9b421623850a34d' (2025-01-04)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/e554bf17658bd1bfe393dcaca8b8eee6014ddfa1' (2025-01-05)
  → 'github:NixOS/nixpkgs/da76b6311eb169eb526de6feeae7492283fe1f8b' (2025-01-08)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/5c508fbe33f4fec253589f442e3869afb5632186' (2025-01-05)
  → 'github:randomnetcat/nix-configs/dc1e0ac59b8c462aed7f37579e22912e83a21f97' (2025-01-08)
2025-01-08 15:11:21 +00:00
08e09ce55b tohru: re-enable nix gc (but not nix optimise) 2025-01-05 15:43:49 +00:00
2cad2dd614 qenya/vscode: reformat to separate golang config 2025-01-05 15:42:57 +00:00
6b2871b27f qenya/vscode: insert newline at eof on save 2025-01-05 15:37:18 +00:00
286368b754 flake.lock: Update
Flake lock file updates:

• Updated input 'firefox-addons':
    'gitlab:rycee/nur-expressions/fe816609e68ee1887ee89e43c9ca1aad75362477?dir=pkgs/firefox-addons' (2024-12-26)
  → 'gitlab:rycee/nur-expressions/b93d8cdf12139da45146a6c3cf53141a437c41ec?dir=pkgs/firefox-addons' (2025-01-04)
• Updated input 'home-manager':
    'github:nix-community/home-manager/80b0fdf483c5d1cb75aaad909bd390d48673857f' (2024-12-16)
  → 'github:nix-community/home-manager/613691f285dad87694c2ba1c9e6298d04736292d' (2024-12-28)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/35b98d20ca8f4ca1f6a2c30b8a2c8bb305a36d84' (2024-12-24)
  → 'github:nix-community/home-manager/5ad12b6ea06b84e48f6b677957c74f32d47bdee0' (2025-01-05)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/4005c3ff7505313cbc21081776ad0ce5dfd7a3ce' (2024-12-25)
  → 'github:NixOS/nixpkgs/d29ab98cd4a70a387b8ceea3e930b3340d41ac5a' (2025-01-03)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/1dd8f51e62c0ff199e551744ab46fc4fbe6f827a' (2024-12-26)
  → 'github:NixOS/nixpkgs/beaa880fbe02536b66d5361dd3e61c1abf44155f' (2025-01-05)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/d70bd19e0a38ad4790d3913bf08fcbfc9eeca507' (2024-12-19)
  → 'github:NixOS/nixpkgs/6df24922a1400241dae323af55f30e4318a6ca65' (2025-01-02)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/7cc0bff31a3a705d3ac4fdceb030a17239412210' (2024-12-27)
  → 'github:NixOS/nixpkgs/e554bf17658bd1bfe393dcaca8b8eee6014ddfa1' (2025-01-05)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/b4b1967ea9d09d7ff64d77c48261fb0f290e7a0c' (2024-12-27)
  → 'github:randomnetcat/nix-configs/5c508fbe33f4fec253589f442e3869afb5632186' (2025-01-05)
2025-01-05 15:02:56 +00:00
db74ab7f42 flake: make colmena perform evaluation with lix instead of cppNix 2025-01-05 15:01:34 +00:00
96d16a8830 tohru: disable automatic nix store maintenance 2025-01-05 14:28:28 +00:00
eb557507d0 misc: garbage-collect nixos profiles older than 30 days 2025-01-05 14:27:55 +00:00
473e113c4f kilgharrah: replace failed HDD 2025-01-04 19:28:02 +00:00
e078b80e24 qenya/packages: install eza, hexyl 2025-01-04 19:27:09 +00:00
6a47840cd7 packages: rename from environment, install smartmontools 2025-01-04 19:26:36 +00:00
fc245b4619 kilgharrah: disable services related to failing HDD 2024-12-30 19:49:30 +00:00
6168cd0f30 nginx, yevaud/birdsong-dns: use monitoring email
Closes #1
2024-12-27 14:09:14 +00:00
905cacc84f flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/1807c2b91223227ad5599d7067a61665c52d1295' (2024-12-22)
  → 'github:NixOS/nixpkgs/4005c3ff7505313cbc21081776ad0ce5dfd7a3ce' (2024-12-25)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/7fb8b8de039a0269c26f79129260cc029473d576' (2024-12-24)
  → 'github:NixOS/nixpkgs/1dd8f51e62c0ff199e551744ab46fc4fbe6f827a' (2024-12-26)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/e905913c43d0547a131ca9c7917fa9089b627e01' (2024-12-24)
  → 'github:NixOS/nixpkgs/7cc0bff31a3a705d3ac4fdceb030a17239412210' (2024-12-27)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/21b3f66c1a7bd94c3f00e12c0b80b53aeab69c25' (2024-12-24)
  → 'github:randomnetcat/nix-configs/b4b1967ea9d09d7ff64d77c48261fb0f290e7a0c' (2024-12-27)
2024-12-27 13:55:57 +00:00
0ffdc3de71 flake: remove dependency on NUR
Closes #16
2024-12-27 13:53:31 +00:00
39edcc3801 qenya/firefox: get firefox addons direct from rycee instead of NUR 2024-12-27 13:51:25 +00:00
7b7e8683b3 tohru: get scoutshonour games from their own repo instead of NUR 2024-12-27 13:09:22 +00:00
e31fb0fc24 yevaud: disable pennykettle experiment as it breaks external IPv6 2024-12-27 03:35:30 +00:00
2b9514444f flake.lock: Update
Flake lock file updates:

• Updated input 'birdsong':
    'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=fd3965ddee060739fb5b63b14e48ba4bb8c8588d' (2024-12-25)
  → 'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=54c8b67a44ed58f92b6233934387b6e568151336' (2024-12-27)
2024-12-27 03:07:41 +00:00
43a3d42406 flake.lock: Update
Flake lock file updates:

• Updated input 'birdsong':
    'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=881078abf8bdc5f7e8bff63288714c6ec245c758' (2024-12-25)
  → 'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=fd3965ddee060739fb5b63b14e48ba4bb8c8588d' (2024-12-25)
2024-12-27 01:38:19 +00:00
c6a16f25ef qenya/dconf: allow sound over 100% 2024-12-27 01:38:14 +00:00
644df7986a flake.lock: Update
Flake lock file updates:

• Updated input 'birdsong':
    'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=91ed1abe655ac270be4e6f6c006af6fa4edd25bf' (2024-12-25)
  → 'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=881078abf8bdc5f7e8bff63288714c6ec245c758' (2024-12-25)
2024-12-25 03:04:12 +00:00
ccf07affd6 kalessin: allow login from randomcat 2024-12-25 03:03:56 +00:00
569b7bb812 kilgharrah: update nvidia driver config for 24.11 2024-12-25 02:35:32 +00:00
0d52d2ab5c flake: switch back to birdsong main branch 2024-12-25 02:34:20 +00:00
1eaa7d2287 flake: colmena compat with CppNix 2.24 2024-12-25 00:03:49 +00:00
f51721aae1 flake.lock: Update
Flake lock file updates:

• Updated input 'actual':
    'git+https://git.xeno.science/xenofem/actual-nix?ref=main&rev=32894dcff264ee50e56f58130ac59bd86a7afb45' (2024-11-04)
  → 'git+https://git.xeno.science/xenofem/actual-nix?ref=main&rev=7f041ffa7f204deb0fc2e36908b382804f2e108d' (2024-12-07)
• Updated input 'agenix/home-manager':
    'github:nix-community/home-manager/3bfaacf46133c037bb356193bd2f1765d9dc82c1' (2023-12-20)
  → follows ''
• Removed input 'agenix/home-manager/nixpkgs'
• Updated input 'birdsong':
    'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=ffe25bd95a49d6595edec6caa432703a48b7a8fd' (2024-11-05)
  → 'git+https://git.qenya.tel/qenya/birdsong?ref=compat-24.11&rev=fa0f559d3b41d5fff49ef081f95830270b4662ae' (2024-11-11)
• Updated input 'colmena':
    'github:zhaofengli/colmena/e3ad42138015fcdf2524518dd564a13145c72ea1' (2024-11-13)
  → 'github:zhaofengli/colmena/a6b51f5feae9bfb145daa37fd0220595acb7871e' (2024-12-22)
• Updated input 'colmena/flake-compat':
    'github:edolstra/flake-compat/b4a34015c698c7793d592d66adbab377907a2be8' (2022-04-19)
  → follows ''
• Updated input 'colmena/nix-github-actions':
    'github:nix-community/nix-github-actions/e04df33f62cdcf93d73e9a04142464753a16db67' (2024-10-24)
  → follows ''
• Removed input 'colmena/nix-github-actions/nixpkgs'
• Updated input 'colmena/stable':
    'github:NixOS/nixpkgs/dba414932936fde69f0606b4f1d87c5bc0003ede' (2024-11-06)
  → follows ''
• Updated input 'home-manager':
    'github:nix-community/home-manager/2f23fa308a7c067e52dfcc30a0758f47043ec176' (2024-09-22)
  → 'github:nix-community/home-manager/80b0fdf483c5d1cb75aaad909bd390d48673857f' (2024-12-16)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/1d0862ee2d7c6f6cd720d6f32213fa425004be10' (2024-11-14)
  → 'github:nix-community/home-manager/35b98d20ca8f4ca1f6a2c30b8a2c8bb305a36d84' (2024-12-24)
• Updated input 'lix-module':
    'git+https://git.lix.systems/lix-project/nixos-module?ref=stable&rev=2bbdcd73b9a464f8acf45a7100feb979883ba485' (2024-10-19)
  → 'git+https://git.lix.systems/lix-project/nixos-module?ref=stable&rev=96824d606a6656650bbe436366bc89d5ee3a6573' (2024-11-26)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/689fed12a013f56d4c4d3f612489634267d86529' (2024-11-12)
  → 'github:NixOS/nixpkgs/1807c2b91223227ad5599d7067a61665c52d1295' (2024-12-22)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/035d434d48f4375ac5d3a620954cf5fda7dd7c36' (2024-11-15)
  → 'github:NixOS/nixpkgs/7fb8b8de039a0269c26f79129260cc029473d576' (2024-12-24)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/dc460ec76cbff0e66e269457d7b728432263166c' (2024-11-11)
  → 'github:NixOS/nixpkgs/d70bd19e0a38ad4790d3913bf08fcbfc9eeca507' (2024-12-19)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/effe68307bf3d891d069293b88a0d8910276b2bb' (2024-11-15)
  → 'github:NixOS/nixpkgs/e905913c43d0547a131ca9c7917fa9089b627e01' (2024-12-24)
• Updated input 'plasma-manager':
    'github:nix-community/plasma-manager/f33173b9d22e554a6f869626bc01808d35995257' (2024-11-09)
  → 'github:nix-community/plasma-manager/d16bbded0ae452bc088489e7dca3ef58d8d1830b' (2024-12-24)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/3ef27a946f220e7ef45733e315f61646e13ef0e8' (2024-11-15)
  → 'github:randomnetcat/nix-configs/21b3f66c1a7bd94c3f00e12c0b80b53aeab69c25' (2024-12-24)
2024-12-24 23:23:21 +00:00
c3f990478c flake: update to 24.11 and zero out some unused dependencies 2024-12-24 23:23:21 +00:00
3b5348edc3 yevaud, orm: force build with remote builder 2024-12-24 23:19:01 +00:00
ee7ccef96c flake: switch to building on target by default 2024-12-24 17:59:04 +00:00
345bf13b0d treewide: snapshot important datasets with sanoid 2024-12-24 17:47:34 +00:00
715b3f799a qenya/vscode: pin golang-ci 2024-12-10 22:59:44 +00:00
a206f63e68 yevaud: add experimental container with networking over vpn 2024-12-04 19:46:22 +00:00
61288d4675 yevaud: move dns experiment to separate file 2024-12-04 19:46:22 +00:00
efa2ce3940 nix: use same nixpkgs flake for imperative commands as for build 2024-12-04 14:34:01 +00:00
98b43911f0 users: add gaelan 2024-11-25 18:56:00 +00:00
c573da7c34 misc: tone down aggression on nix garbage collector 2024-11-24 15:36:30 +00:00
c5472892d8 tohru, kilgharrah: add HP printer drivers 2024-11-18 07:13:54 +00:00
fa6465e563 qenya/xdg-mime-apps: file association for .pdf 2024-11-17 21:43:05 +00:00
7a0f60f828 switch from CppNix to Lix 2024-11-16 01:57:58 +00:00
05864180db treewide: rationalise distributed builds 2024-11-16 01:54:41 +00:00
b25aa75d37 kilgharrah: use as remote builder 2024-11-16 01:40:17 +00:00
8ec6f47367 yevaud, orm: remote builds on kalessin 2024-11-15 23:48:29 +00:00
6277e955ef flake.lock: Update
Flake lock file updates:

• Updated input 'colmena':
    'github:zhaofengli/colmena/a2193487bcf70bbb998ad1a25a4ff02b8d55db7a' (2024-11-10)
  → 'github:zhaofengli/colmena/e3ad42138015fcdf2524518dd564a13145c72ea1' (2024-11-13)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/60bb110917844d354f3c18e05450606a435d2d10' (2024-11-10)
  → 'github:nix-community/home-manager/1d0862ee2d7c6f6cd720d6f32213fa425004be10' (2024-11-14)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/9256f7c71a195ebe7a218043d9f93390d49e6884' (2024-11-10)
  → 'github:NixOS/nixpkgs/689fed12a013f56d4c4d3f612489634267d86529' (2024-11-12)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/d3c490e9c812d0a9dcb0593663d9430451fb8f96' (2024-11-11)
  → 'github:NixOS/nixpkgs/035d434d48f4375ac5d3a620954cf5fda7dd7c36' (2024-11-15)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/76612b17c0ce71689921ca12d9ffdc9c23ce40b2' (2024-11-09)
  → 'github:NixOS/nixpkgs/dc460ec76cbff0e66e269457d7b728432263166c' (2024-11-11)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/d30293dc9854f57d9d5ae1f2e18b6a9506852a93' (2024-11-12)
  → 'github:NixOS/nixpkgs/effe68307bf3d891d069293b88a0d8910276b2bb' (2024-11-15)
• Updated input 'nur':
    'github:nix-community/NUR/33f52fb5eb91a1736e371ba6f47f34cec0a50f2a' (2024-11-12)
  → 'github:nix-community/NUR/6e17acc00a48253a4d25e5ee4e6c215b8950c039' (2024-11-15)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/7cc4488ea39e6ba5c97e9cf688aaf6d9d1680206' (2024-11-12)
  → 'github:randomnetcat/nix-configs/3ef27a946f220e7ef45733e315f61646e13ef0e8' (2024-11-15)
2024-11-15 22:45:49 +00:00
ea5b59bbe9 secrets: rekey all 2024-11-15 18:33:11 +00:00
c60b753c5c set up distributed builds 2024-11-15 18:28:08 +00:00
d69e1dcc16 users: enable users per-host 2024-11-14 13:42:36 +00:00
80fcd62ba4 kilgharrah/networking: enable keepalive to help with NAT 2024-11-12 20:42:35 +00:00
5cfd5a7a7c kilgharrah: install obs-studio 2024-11-12 11:14:20 +00:00
f9f262a856 qenya/vscode: use golangci-lint to lint go files 2024-11-12 11:14:08 +00:00
024bf2b990 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/5354a00f3cdbab47090bdc51aedbe13d1e2aa9b1' (2024-11-10)
  → 'github:NixOS/nixpkgs/d3c490e9c812d0a9dcb0593663d9430451fb8f96' (2024-11-11)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/3a7266fcefcb9ce353df49ba3f292d06443760bb' (2024-11-11)
  → 'github:NixOS/nixpkgs/d30293dc9854f57d9d5ae1f2e18b6a9506852a93' (2024-11-12)
• Updated input 'nur':
    'github:nix-community/NUR/805985e00d71b467b1af5491d4c04eff182f70f8' (2024-11-11)
  → 'github:nix-community/NUR/33f52fb5eb91a1736e371ba6f47f34cec0a50f2a' (2024-11-12)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/b5c9e7e5cd82be8be28b8b29aa35eea45e8d2ca2' (2024-11-11)
  → 'github:randomnetcat/nix-configs/7cc4488ea39e6ba5c97e9cf688aaf6d9d1680206' (2024-11-12)
2024-11-12 10:51:14 +00:00
2207c5cf26 flake.lock: Update
Flake lock file updates:

• Updated input 'actual':
    'git+https://git.xeno.science/xenofem/actual-nix?ref=main&rev=befcf0b6e2b9540f01b5caaafcbe62fcf36a063a' (2024-10-10)
  → 'git+https://git.xeno.science/xenofem/actual-nix?ref=main&rev=32894dcff264ee50e56f58130ac59bd86a7afb45' (2024-11-04)
• Updated input 'birdsong':
    'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=b4e7b0ca3e466f3d211590ecc422bb74f61875e6' (2024-11-05)
  → 'git+https://git.qenya.tel/qenya/birdsong?ref=main&rev=ffe25bd95a49d6595edec6caa432703a48b7a8fd' (2024-11-05)
• Updated input 'colmena':
    'github:zhaofengli/colmena/b0a62f234fae02a006123e661ff70e62af16106b' (2024-10-07)
  → 'github:zhaofengli/colmena/a2193487bcf70bbb998ad1a25a4ff02b8d55db7a' (2024-11-10)
• Added input 'colmena/nix-github-actions':
    'github:nix-community/nix-github-actions/e04df33f62cdcf93d73e9a04142464753a16db67' (2024-10-24)
• Added input 'colmena/nix-github-actions/nixpkgs':
    follows 'colmena/nixpkgs'
• Updated input 'colmena/stable':
    'github:NixOS/nixpkgs/797f7dc49e0bc7fab4b57c021cdf68f595e47841' (2024-08-22)
  → 'github:NixOS/nixpkgs/dba414932936fde69f0606b4f1d87c5bc0003ede' (2024-11-06)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/1743615b61c7285976f85b303a36cdf88a556503' (2024-11-01)
  → 'github:nix-community/home-manager/60bb110917844d354f3c18e05450606a435d2d10' (2024-11-10)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/080166c15633801df010977d9d7474b4a6c549d7' (2024-10-30)
  → 'github:NixOS/nixpkgs/9256f7c71a195ebe7a218043d9f93390d49e6884' (2024-11-10)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/38edd08881ce4dc24056eec173b43587a93c990f' (2024-11-01)
  → 'github:NixOS/nixpkgs/5354a00f3cdbab47090bdc51aedbe13d1e2aa9b1' (2024-11-10)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/807e9154dcb16384b1b765ebe9cd2bba2ac287fd' (2024-10-29)
  → 'github:NixOS/nixpkgs/76612b17c0ce71689921ca12d9ffdc9c23ce40b2' (2024-11-09)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/ab464abbeb3a2833288c6e907488c49c2e599f88' (2024-11-01)
  → 'github:NixOS/nixpkgs/3a7266fcefcb9ce353df49ba3f292d06443760bb' (2024-11-11)
• Updated input 'nur':
    'github:nix-community/NUR/c7dd9f07d3e3c2abf03aac70ebd21d658037f0c4' (2024-11-02)
  → 'github:nix-community/NUR/805985e00d71b467b1af5491d4c04eff182f70f8' (2024-11-11)
• Updated input 'plasma-manager':
    'github:nix-community/plasma-manager/6cb0aedf6160725eee50425b4e8d908c09dcb7a3' (2024-11-01)
  → 'github:nix-community/plasma-manager/f33173b9d22e554a6f869626bc01808d35995257' (2024-11-09)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/00bacafc2d4d74ca96b02ea34488ab36977a9812' (2024-11-02)
  → 'github:randomnetcat/nix-configs/b5c9e7e5cd82be8be28b8b29aa35eea45e8d2ca2' (2024-11-11)
2024-11-11 19:21:48 +00:00
9b63a5e56f audiobookshelf: fix websockets and CSP 2024-11-09 01:05:55 +00:00
b893da35be kalessin, kilgharrah: add to wireguard network 2024-11-05 19:23:53 +00:00
052b0c1c4f yevaud, orm, kalessin: split networking to separate file 2024-11-05 19:05:27 +00:00
9cfe6e2c4c treewide: migrate networking to systemd-networkd 2024-11-05 18:31:39 +00:00
955409c8ef qenya: install zip/unzip 2024-11-05 14:31:17 +00:00
f56a5389de qenya/vscode: settle on a colour scheme 2024-11-04 22:22:03 +00:00
8690b4f610 qenya/vscode: pin more go dev dependencies 2024-11-04 22:21:46 +00:00
ee33352462 base-graphical: enable avahi for printer autodiscovery 2024-11-03 09:48:48 +00:00
87e602fd9f flake.lock: Update
Flake lock file updates:

• Updated input 'actual':
    'git+https://git.xeno.science/xenofem/actual-nix?ref=main&rev=4cc6a8289f809ec4470eb01429aa6ed548349a56' (2024-09-03)
  → 'git+https://git.xeno.science/xenofem/actual-nix?ref=main&rev=befcf0b6e2b9540f01b5caaafcbe62fcf36a063a' (2024-10-10)
• Updated input 'colmena':
    'github:zhaofengli/colmena/cd65ef7a25cdc75052fbd04b120aeb066c3881db' (2024-03-25)
  → 'github:zhaofengli/colmena/b0a62f234fae02a006123e661ff70e62af16106b' (2024-10-07)
• Updated input 'colmena/stable':
    'github:NixOS/nixpkgs/32dcb45f66c0487e92db8303a798ebc548cadedc' (2023-09-30)
  → 'github:NixOS/nixpkgs/797f7dc49e0bc7fab4b57c021cdf68f595e47841' (2024-08-22)
• Updated input 'home-manager-unstable':
    'github:nix-community/home-manager/c124568e1054a62c20fbe036155cc99237633327' (2024-09-26)
  → 'github:nix-community/home-manager/1743615b61c7285976f85b303a36cdf88a556503' (2024-11-01)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/759537f06e6999e141588ff1c9be7f3a5c060106' (2024-09-25)
  → 'github:NixOS/nixpkgs/080166c15633801df010977d9d7474b4a6c549d7' (2024-10-30)
• Updated input 'nixpkgs-small':
    'github:NixOS/nixpkgs/37df9bcf93431c7f9f9358aec2d7ed0a52d7ba1d' (2024-09-25)
  → 'github:NixOS/nixpkgs/38edd08881ce4dc24056eec173b43587a93c990f' (2024-11-01)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/30439d93eb8b19861ccbe3e581abf97bdc91b093' (2024-09-23)
  → 'github:NixOS/nixpkgs/807e9154dcb16384b1b765ebe9cd2bba2ac287fd' (2024-10-29)
• Updated input 'nixpkgs-unstable-small':
    'github:NixOS/nixpkgs/ea2838e1ce0a9da2abf88275843aca29d9f82b30' (2024-09-26)
  → 'github:NixOS/nixpkgs/ab464abbeb3a2833288c6e907488c49c2e599f88' (2024-11-01)
• Updated input 'nur':
    'github:nix-community/NUR/936785778bca86332d6b201dda67a38585cab885' (2024-09-26)
  → 'github:nix-community/NUR/c7dd9f07d3e3c2abf03aac70ebd21d658037f0c4' (2024-11-02)
• Updated input 'plasma-manager':
    'github:nix-community/plasma-manager/a02fef2ece8084aff0b41700bb57d24d73574cd1' (2024-09-24)
  → 'github:nix-community/plasma-manager/6cb0aedf6160725eee50425b4e8d908c09dcb7a3' (2024-11-01)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/7458a718acedf2590cbfc212e7070afdd3b8c4dc' (2024-09-26)
  → 'github:randomnetcat/nix-configs/00bacafc2d4d74ca96b02ea34488ab36977a9812' (2024-11-02)
2024-11-02 13:14:57 +00:00
65884ecbfd qenya/vscode: don't leak runtime dependencies into general PATH 2024-10-21 19:18:39 +01:00
390a60f598 kilgharrah: add commented-out custom nvidia driver
keeping in the repo for future testing
2024-10-21 12:43:34 +01:00
0ef661aae7 kilgharrah: serve audiobookshelf 2024-10-15 22:51:46 +01:00
21fa41876a qenya: don't depend on nixos modules defined here
fixes build issue in randomcat's repo
2024-10-15 18:03:12 +01:00
8823cd9b36 kilgharrah: move all zfs dataset declarations to one place 2024-10-08 10:54:02 +01:00
acf451a1c9 tohru: move qenya home-manager config into default.nix 2024-10-08 10:53:44 +01:00
84fb7727da qenya/packages: rename from cli, include common graphical packages 2024-10-08 10:46:05 +01:00
ecd98229ff kilgharrah, tohru: install feishin 2024-10-08 01:29:30 +01:00
82787cea45 kilgharrah: serve navidrome 2024-10-08 01:28:49 +01:00
2a2f1674a3 qenya/xdg-mime-apps: file association for .zip 2024-10-07 23:31:55 +01:00
5c7d371ea5 misc: init with fstrim and nix store optimisation 2024-10-07 21:29:25 +01:00
bb2b59cd20 kilgharrah/networking: switch on systemd-networkd debugging
hoping this will help diagnose an issue
2024-10-06 19:07:20 +01:00
cdcdccb465 qenya/zsh: don't clobber with mv or rename 2024-10-02 17:04:27 +01:00
5a617f9cb3 kilgharrah: set up jellyfin 2024-10-02 17:02:35 +01:00
4f85fb54d8 kilgharrah: enable fstrim and nvidia drivers 2024-10-01 19:44:31 +01:00
5e1cfc3997 boot: fix attempt to install memtest86+ on non-x86 hardware 2024-10-01 19:30:21 +01:00
cd84be16be treewide: refactor bootloader config to common file 2024-10-01 19:20:34 +01:00
1b18133585 kilgharrah: install gimp-with-plugins, jellyfin-media-player 2024-09-29 17:59:31 +01:00
4e7ec3d571 tohru: install nicotine-plus 2024-09-28 07:42:19 +01:00
56bdf36abd keys: add kalessin, shaw; update trungle 2024-09-28 07:42:07 +01:00
ab035dcd5b kilgharrah: set up ftp server 2024-09-28 05:08:12 +01:00
309e44aa8a flake.nix: rationalise nixpkgs versions 2024-09-26 13:40:33 +01:00
3fc692f0c2 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/23cbb250f3bf4f516a2d0bf03c51a30900848075' (2024-09-22)
  → 'github:NixOS/nixpkgs/759537f06e6999e141588ff1c9be7f3a5c060106' (2024-09-25)
• Updated input 'nixpkgsSmall':
    'github:NixOS/nixpkgs/7ca0f93c530406c1610defff0b9bf643333cf992' (2024-09-23)
  → 'github:NixOS/nixpkgs/37df9bcf93431c7f9f9358aec2d7ed0a52d7ba1d' (2024-09-25)
• Updated input 'nur':
    'github:nix-community/NUR/0d7209843407825066ccf9743c40d50b6d68674f' (2024-09-24)
  → 'github:nix-community/NUR/936785778bca86332d6b201dda67a38585cab885' (2024-09-26)
• Updated input 'plasma-manager':
    'github:nix-community/plasma-manager/6f1db348fcb89fd6b0b9c32e279d29ee6b4d1272' (2024-09-22)
  → 'github:nix-community/plasma-manager/a02fef2ece8084aff0b41700bb57d24d73574cd1' (2024-09-24)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/2a6bd13e96db07e2e904fcc1b93faf5484725c91' (2024-09-24)
  → 'github:randomnetcat/nix-configs/7458a718acedf2590cbfc212e7070afdd3b8c4dc' (2024-09-26)
2024-09-26 12:48:03 +01:00
7ce034f2d0 flake.nix: only expose self to nixos modules, not all inputs 2024-09-26 12:36:09 +01:00
8b04d9039e orm: serve actual 2024-09-26 12:16:33 +01:00
59bbcc165e nginx: expand default CSP
this is required to run wasm and web workers
2024-09-26 12:15:49 +01:00
d1b974b86c yevaud: specify (non-boot-critical) zfs datasets with randomcat's module
Also moves forgejo state directory to the default location
2024-09-24 18:56:27 +01:00
8d2d55e4c4 openssh: disable fail2ban
We've always had password authentication disabled, so it's not really
doing much except periodically locking us out of our own servers when we
misconfigure something
2024-09-24 18:41:17 +01:00
3195af88ef nginx: improve hardening, tweak headers
Still not quite where I want it to be but it's better
2024-09-24 05:31:17 +01:00
26900a5973 steam: lightly refactor 2024-09-24 05:29:21 +01:00
2951f948b4 kilgharrah: set up zfs datasets using randomcat's module 2024-09-24 04:49:25 +01:00
7e1f688699 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/2ab00f89dd3ecf8012f5090e6d7ca1a7ea30f594' (2024-09-17)
  → 'github:nix-community/home-manager/2f23fa308a7c067e52dfcc30a0758f47043ec176' (2024-09-22)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/086b448a5d54fd117f4dc2dee55c9f0ff461bdc1' (2024-09-16)
  → 'github:NixOS/nixpkgs/23cbb250f3bf4f516a2d0bf03c51a30900848075' (2024-09-22)
• Updated input 'nixpkgsSmall':
    'github:NixOS/nixpkgs/a51a2cef87fc37c7e31d3a5345bc493e5f7a5f6e' (2024-09-17)
  → 'github:NixOS/nixpkgs/7ca0f93c530406c1610defff0b9bf643333cf992' (2024-09-23)
• Updated input 'nur':
    'github:nix-community/NUR/59c5c2575c0cae6bc98b9de8161731cfb8cdc1f0' (2024-09-18)
  → 'github:nix-community/NUR/0d7209843407825066ccf9743c40d50b6d68674f' (2024-09-24)
• Updated input 'plasma-manager':
    'github:nix-community/plasma-manager/5a0c70a007837e2db01e0bb68971792e8653d32c' (2024-09-16)
  → 'github:nix-community/plasma-manager/6f1db348fcb89fd6b0b9c32e279d29ee6b4d1272' (2024-09-22)
• Updated input 'randomcat':
    'github:randomnetcat/nix-configs/5d5d5c706fcb6d3f2d5ddd864ab07cd69a35b9d3' (2024-09-24)
  → 'github:randomnetcat/nix-configs/2a6bd13e96db07e2e904fcc1b93faf5484725c91' (2024-09-24)
2024-09-24 03:15:53 +01:00
f4912efaaa switch to agenix trunk 2024-09-23 23:58:36 +01:00
5ef9816a34 kilgharrah: enable zfs, luksdev 2024-09-23 23:22:48 +01:00
4f99cc5102 fix agenix pathspec 2024-09-23 23:22:32 +01:00
002b136ae8 qenya: install units 2024-09-20 15:58:24 +01:00
4dbe61e97a yevaud: add experimental BIND config 2024-09-19 23:25:35 +01:00
58109130e6 base-graphical/desktop: refactor 2024-09-19 23:23:46 +01:00
d7142d8619 qenya/xdg-mime-apps: open mailto links in evolution 2024-09-19 23:21:42 +01:00
9813aaf27b kilgharrah: disable autosuspend 2024-09-19 23:06:40 +01:00
8cbfb51930 move deployment config 2024-09-19 23:06:08 +01:00
bbb3bd3c16 kilgharrah: fix networking 2024-09-19 21:55:22 +01:00
0b6d72a4b6 qenya/vscode: disable automatic flake input evaluation
Unfortunately the memory requirements are too high to meet realistically
(tested with 8 GiB; still failed).
2024-09-18 19:45:18 +01:00
6a1597aee8 Update README.md 2024-09-18 19:38:59 +01:00
e713fe3b2c nix, home-manager: move common config out of flake.nix 2024-09-18 19:38:20 +01:00
a47d1f47e8 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/e1391fb22e18a36f57e6999c7a9f966dc80ac073' (2024-07-03)
  → 'github:nix-community/home-manager/2ab00f89dd3ecf8012f5090e6d7ca1a7ea30f594' (2024-09-17)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/6e99f2a27d600612004fbd2c3282d614bfee6421' (2024-08-30)
  → 'github:NixOS/nixpkgs/086b448a5d54fd117f4dc2dee55c9f0ff461bdc1' (2024-09-16)
• Updated input 'nur':
    'github:nix-community/NUR/444e1f3fdf23aa476489b0038e0738c6f4d9df85' (2024-09-04)
  → 'github:nix-community/NUR/59c5c2575c0cae6bc98b9de8161731cfb8cdc1f0' (2024-09-18)
• Updated input 'plasma-manager':
    'github:nix-community/plasma-manager/60becd0e994e25b372c8d0500fc944396f6c1085' (2024-09-09)
  → 'github:nix-community/plasma-manager/5a0c70a007837e2db01e0bb68971792e8653d32c' (2024-09-16)
2024-09-18 19:05:11 +01:00
28698d1a60 yevaud, orm, kalessin: switch to nixpkgs-small 2024-09-18 19:03:35 +01:00
ad1f4d2cc5 deduplicate flake outputs 2024-09-18 18:58:04 +01:00
a938b33679 export nixos configurations as standard flake outputs 2024-09-18 03:49:56 +01:00
f6010a968c treewide: specify hostname in host configs 2024-09-18 03:13:34 +01:00
9f6d0fbaf8 treewide: move all deployment keys to flake.nix 2024-09-18 03:06:48 +01:00
32dabca83f don't import universal config in host-specific homeManagerModules 2024-09-17 19:11:57 +01:00
3849eeb37b export homeManagerModules."qenya@shaw" 2024-09-17 18:57:02 +01:00
d881607cb0 Revert "qenya: plasma: workaround for issue in randomcat's config"
This reverts commit 7189fae109.

This didn't actually fix the issue, as it turns out mkIf still
resolves the children of its attrset recursively. The longer-term
solution is to export my home-manager config as a flake output,
which I'm moving towards.
2024-09-17 18:44:50 +01:00
a6359fdd36 export home-manager config from homeManagerModules 2024-09-17 18:40:15 +01:00
f4da07c4e6 move all host-specific configuration to hosts directory 2024-09-17 17:22:58 +01:00
7189fae109 qenya: plasma: workaround for issue in randomcat's config 2024-09-15 17:40:19 +01:00
cbb44fd11d tohru: install amberol 2024-09-15 16:40:16 +01:00
3658b0073c qenya: xdg-mime-apps: open text files in DE text editor 2024-09-15 16:40:16 +01:00
f4228d9926 correct flake-compat hash 2024-09-15 16:37:30 +01:00
251560f761 qenya: declaratively define more of GNOME config
Closes #3
2024-09-12 15:41:43 +01:00
752fce2538 qenya: zsh: automatically run nix-shell when necessary
Closes #9
2024-09-12 13:55:15 +01:00
4a9e6b5f3c move tooling to dev environment 2024-09-12 13:35:35 +01:00
a0a94b86ff home-manager: rearrange config 2024-09-12 12:56:30 +01:00
9fa74d52c1 qenya: xdg-mime-apps: make default app configuration declarative 2024-09-12 12:44:58 +01:00
afb16a55f3 home-manager: automatically back up overwritten files 2024-09-12 12:44:42 +01:00
19f0d81b9b qenya: vscode: automatically fetch new flake inputs in nix repos 2024-09-12 12:22:44 +01:00
b18e50fd4a add plasma-manager for plasma config 2024-09-12 11:42:31 +01:00
cb6d7f7837 firefox: disable built-in password management 2024-09-12 11:40:24 +01:00
a2cb35148c pipewire-low-latency: split to reusable module 2024-09-12 11:38:17 +01:00
c5261caa21 base-graphical: include settings for fonts, libinput, printing 2024-09-11 15:06:41 +01:00
9e638c009f base-graphical: add desktop manager config 2024-09-11 06:36:21 +01:00
aeab801602 base-graphical: init with pipewire config 2024-09-11 05:43:35 +01:00
3fc4efab9c rename sysadmin module to base-server 2024-09-11 05:17:19 +01:00
5fefab9707 kilgharrah: switch from pulseaudio to pipewire 2024-09-10 22:40:07 +01:00
5a71df020e kilgharrah: install zoom 2024-09-08 20:58:53 +01:00
9a27610757 kilgharrah: install firefox, steam 2024-09-06 02:51:58 +01:00
5290f25062 steam: move to common config 2024-09-06 02:50:40 +01:00
4bb4780186 firefox: declaratively define important settings & extensions
Closes #4
2024-09-06 02:38:28 +01:00
48a5083a02 nixpkgs, home-manager: return nixpkgs config to flake.nix 2024-09-06 02:37:34 +01:00
39d73b4ed7 kilgharrah: disallow remote deployment 2024-09-05 00:20:49 +01:00
324638baa9 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/224042e9a3039291f22f4f2ded12af95a616cca0' (2024-08-21)
  → 'github:NixOS/nixpkgs/6e99f2a27d600612004fbd2c3282d614bfee6421' (2024-08-30)
• Updated input 'nur':
    'github:nix-community/NUR/0891674223deb1262d8a96a46598fca0840c8271' (2024-08-29)
  → 'github:nix-community/NUR/444e1f3fdf23aa476489b0038e0738c6f4d9df85' (2024-09-04)
2024-09-04 23:51:04 +01:00
92f5b74584 kilgharrah: update deprecated option name 2024-09-04 23:43:56 +01:00
5e2e28cbe9 kilgharrah: networking: switch from networkmanager to systemd-networkd 2024-09-04 23:38:58 +01:00
09087ba199 kilgharrah: rearrange and split up configuration 2024-09-04 23:31:02 +01:00
84e44962ee kilgharrah: install bitwarden, discord, tor-browser-bundle-bin 2024-09-04 20:57:32 +01:00
0978b62de6 keys: add kilgharrah@tohru 2024-09-04 19:39:31 +01:00
5e756c82e7 kilgharrah: init 2024-09-04 19:14:47 +01:00
d112e705f1 tohru: rearrange and split up configuration 2024-08-30 18:22:13 +01:00
444c69edd3 zsh: condition on user qenya being present 2024-08-29 19:59:13 +01:00
12a4c20625 qenya: vscode: add gitlens 2024-08-29 19:58:13 +01:00
4c07feb21a nixpkgs: init config as separate file 2024-08-29 19:27:45 +01:00
4ed696e5b1 sysadmin: specify UTC timezone 2024-08-29 19:26:57 +01:00
96f4062991 tohru: install zoom-us 2024-08-29 18:37:37 +01:00
766aa146df users: change to immutable users 2024-08-29 18:27:43 +01:00
66cc74e388 users: define extraGroups per-host 2024-08-29 17:56:13 +01:00
f5191640f5 home-manager: move all config together, allow for multiple users 2024-08-29 17:55:43 +01:00
8076f91738 sysadmin: init, replacing deployment directory 2024-08-29 16:00:50 +01:00
b4b879a87b entirely migrate from npins to flake inputs 2024-08-29 11:47:12 +01:00
6d83a07556 vscode: install eslint extension 2024-08-29 10:39:57 +01:00
43f85cf2c0 git: rebase on pull by default 2024-08-23 12:58:11 +01:00
84417c27da Update README.md 2024-08-22 13:29:04 +01:00
6968e1b955 flake update 2024-08-22 13:28:56 +01:00
eb499ec8c1 vscode: switch to extensions from nixpkgs 2024-08-22 12:34:56 +01:00
2fcba2b35f purify package overrides 2024-08-22 12:34:52 +01:00
119 changed files with 4639 additions and 826 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
use_nix

View file

@ -2,18 +2,19 @@
My NixOS configuration files. My NixOS configuration files.
The canonical location for this repository is https://git.qenya.tel/qenya/nixfiles. If you're viewing it elsewhere, it is a mirror and may not be up-to-date. The canonical location for this repository is https://git.unspecified.systems/qenya/nixfiles. If you're viewing it elsewhere, it is a mirror and may not be up-to-date.
## Machines ## Machines
### Managed ### Managed
* `kilgharrah`: Custom-built personal desktop; also currently running Jellyfin, Navidrome and Audiobookshelf servers (and an FTP server, for shits and giggles)
* `tohru`: Dell Latitude 5300, personal laptop * `tohru`: Dell Latitude 5300, personal laptop
* `elucredassa`: Acer Aspire A315-53, old laptop with a broken keyboard that now sits in a corner being a backup server
* `yevaud`: Oracle Cloud free AMD VM, hosts a Forgejo instance and WireGuard server for the other machines in the network * `yevaud`: Oracle Cloud free AMD VM, hosts a Forgejo instance and WireGuard server for the other machines in the network
* `orm`: Oracle Cloud free AMD VM, currently idling * `orm`: Oracle Cloud free AMD VM, hosts an instance of Actual Budget and a PostgreSQL server for other services that need one
* `kalessin`: Oracle Cloud free ARM VM, currently idling * `kalessin`: Oracle Cloud free ARM VM, currently idling
### Referenced only ### Referenced only
* `kilgharrah`: Custom-built personal desktop, currently running Arch
* `shaw`: [My girlfriend's NAS](https://github.com/randomnetcat/nix-configs/tree/main/hosts/shaw) * `shaw`: [My girlfriend's NAS](https://github.com/randomnetcat/nix-configs/tree/main/hosts/shaw)
* `latias`: My Steam Deck * `latias`: My Steam Deck
@ -21,7 +22,7 @@ The canonical location for this repository is https://git.qenya.tel/qenya/nixfil
### Building ### Building
To build locally, run `colmena apply-local` as root. To build locally, run `nixos-rebuild switch --flake .#[hostname]` as root.
To build the remote machines, run `colmena apply`. See the [colmena documentation](https://colmena.cli.rs/) for command-line options. Notable options include: To build the remote machines, run `colmena apply`. See the [colmena documentation](https://colmena.cli.rs/) for command-line options. Notable options include:
* `--on [hostname]`: build a specific machine only * `--on [hostname]`: build a specific machine only
@ -29,14 +30,4 @@ To build the remote machines, run `colmena apply`. See the [colmena documentatio
### Updating ### Updating
Run `npins update` to update the dependencies within the currently selected upgrade channels. `nix flake update --commit-lock-file`
To upgrade to a new major version of a dependency, simply re-add it and the old version will be overwritten, e.g.:
```sh
npins add --name nixpkgs channel nixos-unstable
```
In either case, commit the changes to `npins/sources.json`.
See the [npins documentation](https://github.com/andir/npins) for more details.

View file

@ -0,0 +1,29 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.qenya.base-graphical;
in
{
imports = [
./gnome.nix
./sound.nix
];
options.qenya.base-graphical.enable = mkEnableOption "Base configuration for graphical environments";
config = mkIf cfg.enable {
services.xserver.enable = true;
services.libinput.enable = true;
services.printing.enable = true;
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
fonts.packages = with pkgs; [
corefonts
];
};
}

View file

@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkOption types;
cfg = config.qenya.base-graphical;
in
{
config = mkIf cfg.enable {
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
# TODO: agree on this with randomcat as it affects her too, since for some reason this is system-wide
# environment.gnome.excludePackages = with pkgs.gnome; [
# pkgs.gnome-tour
# epiphany # GNOME Web
# geary
# gnome-calendar
# gnome-contacts
# gnome-music
# ];
};
}

View file

@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.qenya.base-graphical;
in
{
config = mkIf cfg.enable {
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
services.pulseaudio.enable = false; # this theoretically defaults to false but something else seems to be flipping it
environment.systemPackages = with pkgs; [ helvum ]; # patchbay
};
}

View file

@ -0,0 +1,17 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.qenya.base-server;
in
{
options.qenya.base-server.enable = mkEnableOption "Base configuration for headless servers";
config = mkIf cfg.enable {
time.timeZone = "Etc/UTC";
# Allow remote deployment with colmena
deployment.targetUser = null;
security.sudo.wheelNeedsPassword = false;
};
}

22
common/boot.nix Normal file
View file

@ -0,0 +1,22 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf;
in
{
boot.loader = {
systemd-boot.enable = true;
systemd-boot.editor = false;
systemd-boot.memtest86.enable = mkIf config.nixpkgs.hostPlatform.isx86 true;
efi.canTouchEfiVariables = true;
};
services.resolved = {
enable = true;
fallbackDns = [ ];
dnsovertls = "true";
extraConfig = ''
DNS=2a07:e340::4#base.dns.mullvad.net 194.242.2.4#base.dns.mullvad.net
'';
};
}

View file

@ -1,10 +1,19 @@
{ {
imports = [ imports = [
./base-graphical
./base-server
./users ./users
./environment.nix ./boot.nix
./gpg.nix
./home-manager.nix
./misc.nix
./nginx.nix ./nginx.nix
./openssh.nix ./nix.nix
./packages.nix
./sanoid.nix
./security.nix ./security.nix
./zsh.nix ./ssh.nix
./steam.nix
./tailscale.nix
]; ];
} }

8
common/gpg.nix Normal file
View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
};
}

12
common/home-manager.nix Normal file
View file

@ -0,0 +1,12 @@
{ config, lib, pkgs, inputs, ... }:
{
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
backupFileExtension = "backup";
extraSpecialArgs = {
inherit inputs;
};
};
}

12
common/misc.nix Normal file
View file

@ -0,0 +1,12 @@
{ config, lib, pkgs, ... }:
{
nix.gc = {
automatic = true;
dates = "weekly";
randomizedDelaySec = "45min";
options = "--delete-older-than 30d";
};
nix.optimise.automatic = true;
services.fstrim.enable = true;
}

View file

@ -7,23 +7,19 @@
recommendedProxySettings = true; recommendedProxySettings = true;
recommendedTlsSettings = true; recommendedTlsSettings = true;
sslCiphers = "AES256+EECDH:AES256+EDH:!aNULL";
appendHttpConfig = '' appendHttpConfig = ''
map $scheme $hsts_header { add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload" always;
https "max-age=31536000; includeSubdomains; preload"; add_header Content-Security-Policy "default-src https: data: blob: ws: 'unsafe-inline' 'wasm-unsafe-eval'; object-src 'none'; base-uri 'self';" always;
} add_header Referrer-Policy strict-origin-when-cross-origin;
add_header Strict-Transport-Security $hsts_header;
#add_header Content-Security-Policy "script-src 'self'; object-src 'none'; base-uri 'none';" always;
add_header 'Referrer-Policy' 'strict-origin-when-cross-origin';
add_header X-Frame-Options SAMEORIGIN; add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff; add_header X-Content-Type-Options nosniff;
add_header X-Clacks-Overhead "GNU Terry Pratchett" always;
proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict"; proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";
''; '';
}; };
security.acme = { security.acme = {
acceptTerms = true; acceptTerms = true;
defaults.email = "accounts@katherina.rocks"; # TODO: replace with more appropriate email defaults.email = "auto@qenya.tel";
}; };
} }

12
common/nix.nix Normal file
View file

@ -0,0 +1,12 @@
{ config, lib, pkgs, ... }:
{
nix.settings.experimental-features = "nix-command flakes";
nixpkgs.flake = {
source = lib.cleanSource pkgs.path;
setNixPath = true;
setFlakeRegistry = true;
};
nixpkgs.config.allowUnfree = true;
nix.settings.trusted-users = [ "@wheel" ];
}

View file

@ -1,13 +0,0 @@
{ config, lib, pkgs, ... }:
{
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
PermitRootLogin = "no";
};
};
services.fail2ban.enable = true;
}

View file

@ -2,21 +2,21 @@
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
btop
git git
wget
# hardware troubleshooting
lshw lshw
parted parted
wget smartmontools
# network troubleshooting # network troubleshooting
inetutils inetutils
lsof lsof
tcpdump tcpdump
netcat # <3 netcat # <3
wireguard-tools
# used for nix config
npins
colmena
agenix
]; ];
environment.wordlist.enable = true; environment.wordlist.enable = true;

35
common/sanoid.nix Normal file
View file

@ -0,0 +1,35 @@
{ config, pkgs, inputs, ... }:
{
config = {
services.sanoid = {
enable = true;
extraArgs = [ "--verbose" ];
# Local snapshots for important datasets
templates."production" = {
yearly = 0;
monthly = 3;
daily = 30;
hourly = 36;
autosnap = true;
autoprune = true;
};
# Reduced-retention version for datasets that are backed up to the NAS
templates."safe" = {
yearly = 0;
monthly = 0;
daily = 7;
hourly = 24;
autosnap = true;
autoprune = true;
};
# datasets."rpool_sggau1/reese/system" = {
# useTemplate = [ "safe" ];
# recursive = "zfs";
# };
};
};
}

21
common/ssh.nix Normal file
View file

@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) concatMapAttrs;
keys = import ../keys.nix;
in
{
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
PermitRootLogin = "no";
};
};
programs.ssh.knownHosts = concatMapAttrs
(host: key: {
"${host}.birdsong.network".publicKey = key;
})
keys.machines;
}

17
common/steam.nix Normal file
View file

@ -0,0 +1,17 @@
{ config, lib, pkgs, ... }:
{
config = lib.mkIf config.programs.steam.enable {
programs.steam = {
package = pkgs.steam.override {
extraArgs = "-pipewire"; # for remote play with PipeWire
};
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
};
services.joycond.enable = true;
};
}

23
common/tailscale.nix Normal file
View file

@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
{
services.tailscale = {
enable = true;
openFirewall = true;
extraUpFlags = [ "--login-server" "https://headscale.unspecified.systems" ];
extraDaemonFlags = [ "--no-logs-no-support" ]; # disable telemetry
};
systemd.services.tailscaled-autoconnect = {
after = [ "tailscaled.service" "network-online.target" ];
wants = [ "tailscaled.service" "network-online.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig.Type = "oneshot";
script = ''
sleep 2 # wait for tailscaled to settle
${lib.getExe config.services.tailscale.package} up --reset ${lib.escapeShellArgs config.services.tailscale.extraUpFlags}
'';
};
networking.domain = "birdsong.network";
}

View file

@ -1,7 +1,32 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkOption types genAttrs;
cfg = config.fountain;
in
{ {
# TODO: consider DRY-ing these
imports = [ imports = [
./gaelan.nix
./qenya.nix ./qenya.nix
./randomcat.nix ./randomcat.nix
./richard.nix ./trungle.nix
]; ];
}
options.fountain = {
admins = mkOption {
type = types.listOf types.str;
default = [ ];
description = "List of users who should have root on this system";
};
};
config = {
users.mutableUsers = false;
users.users = genAttrs cfg.admins
(name: {
extraGroups = [ "wheel" ];
});
};
}

23
common/users/gaelan.nix Normal file
View file

@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkEnableOption;
keys = import ../../keys.nix;
cfg = config.fountain.users.gaelan;
in
{
options.fountain.users.gaelan = {
enable = mkEnableOption "user gaelan";
};
config = mkIf cfg.enable {
users.users.gaelan = {
uid = 1003;
isNormalUser = true;
group = "gaelan";
openssh.authorizedKeys.keys = keys.users.gaelan;
};
users.groups.gaelan.gid = config.users.users.gaelan.uid;
};
}

View file

@ -1,25 +1,28 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, self, ... }:
let keys = import ../../keys.nix; let
in { inherit (lib) mkIf mkEnableOption;
users.users.qenya = { keys = import ../../keys.nix;
isNormalUser = true; cfg = config.fountain.users.qenya;
home = "/home/qenya"; in
extraGroups = [ {
"wheel" # sudo options.fountain.users.qenya = {
"networkmanager" # UI wifi configuration enable = mkEnableOption "user qenya";
"dialout" # access to serial ports
];
shell = pkgs.zsh;
openssh.authorizedKeys.keys = keys.users.qenya;
uid = 1001;
}; };
home-manager.users.qenya = { config, lib, pkgs, osConfig, ... }: { config = mkIf cfg.enable {
home.homeDirectory = osConfig.users.users.qenya.home; users.users.qenya = {
uid = 1001;
isNormalUser = true;
group = "qenya";
shell = pkgs.zsh;
openssh.authorizedKeys.keys = keys.users.qenya;
};
imports = [ users.groups.qenya.gid = config.users.users.qenya.uid;
../../home
]; programs.zsh.enable = true;
home-manager.users."qenya" = self.homeManagerModules."qenya";
}; };
} }

View file

@ -1,12 +1,23 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let keys = import ../../keys.nix; let
inherit (lib) mkIf mkEnableOption;
keys = import ../../keys.nix;
cfg = config.fountain.users.randomcat;
in in
{ {
users.users.randomcat = { options.fountain.users.randomcat = {
isNormalUser = true; enable = mkEnableOption "user randomcat";
home = "/home/randomcat";
openssh.authorizedKeys.keys = keys.users.randomcat;
uid = 1003;
}; };
}
config = mkIf cfg.enable {
users.users.randomcat = {
uid = 1000;
isNormalUser = true;
group = "randomcat";
openssh.authorizedKeys.keys = keys.users.randomcat;
};
users.groups.randomcat.gid = config.users.users.randomcat.uid;
};
}

View file

@ -1,12 +0,0 @@
{ config, lib, pkgs, ... }:
let keys = import ../../keys.nix;
in
{
users.users.richard = {
isNormalUser = true;
home = "/home/richard";
openssh.authorizedKeys.keys = keys.users.richard;
uid = 1002;
};
}

23
common/users/trungle.nix Normal file
View file

@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkEnableOption;
keys = import ../../keys.nix;
cfg = config.fountain.users.trungle;
in
{
options.fountain.users.trungle = {
enable = mkEnableOption "user trungle";
};
config = mkIf cfg.enable {
users.users.trungle = {
uid = 1002;
isNormalUser = true;
group = "trungle";
openssh.authorizedKeys.keys = keys.users.trungle;
};
users.groups.trungle.gid = config.users.users.trungle.uid;
};
}

View file

@ -1,5 +0,0 @@
{ config, lib, pkgs,... }:
{
programs.zsh.enable = true;
}

View file

@ -1,9 +0,0 @@
{ name, nodes, config, lib, pkgs, ... }:
{
deployment = {
allowLocalDeployment = true;
targetHost = null;
tags = [ "local" ];
};
}

View file

@ -1,12 +0,0 @@
{ name, nodes, config, lib, pkgs, ... }:
{
deployment = {
targetHost = "${name}.birdsong.network";
targetUser = "qenya";
tags = [ "remote" ];
};
security.sudo.wheelNeedsPassword = false;
nix.settings.trusted-users = [ "@wheel" ];
}

353
flake.lock generated
View file

@ -3,18 +3,18 @@
"agenix": { "agenix": {
"inputs": { "inputs": {
"darwin": [], "darwin": [],
"home-manager": "home-manager", "home-manager": [],
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1723293904, "lastModified": 1750173260,
"narHash": "sha256-b+uqzj+Wa6xgMS9aNbX4I+sXeb5biPDi39VgvSFqFvU=", "narHash": "sha256-9P1FziAwl5+3edkfFcr5HeGtQUtrSdk/MksX39GieoA=",
"owner": "ryantm", "owner": "ryantm",
"repo": "agenix", "repo": "agenix",
"rev": "f6291c5935fdc4e0bef208cfc0dcab7e3f7a1c41", "rev": "531beac616433bac6f9e2a19feb8e99a22a66baf",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -23,35 +23,152 @@
"type": "github" "type": "github"
} }
}, },
"birdsong": { "colmena": {
"inputs": {
"flake-compat": [],
"flake-utils": "flake-utils",
"nix-github-actions": [],
"nixpkgs": [
"nixpkgs"
],
"stable": []
},
"locked": { "locked": {
"lastModified": 1722971137, "lastModified": 1749739748,
"narHash": "sha256-1x0vaUy/uFCfoDn0a4K55+MNseAqLQmv1GPP6GQFFIA=", "narHash": "sha256-csQQPoCA5iv+Nd9yCOCQNKflP7qUKEe7D27wsz+LPKM=",
"ref": "main", "owner": "zhaofengli",
"rev": "2fd6d96a00ef69a2afe72a2fe9d18d759c1cc8f3", "repo": "colmena",
"revCount": 7, "rev": "c61641b156dfa3e82fc0671e77fccf7d7ccfaa3b",
"type": "git", "type": "github"
"url": "https://git.qenya.tel/qenya/birdsong"
}, },
"original": { "original": {
"ref": "main", "owner": "zhaofengli",
"type": "git", "repo": "colmena",
"url": "https://git.qenya.tel/qenya/birdsong" "type": "github"
}
},
"firefox-addons": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1750737804,
"narHash": "sha256-wClGd2PhxdjjphR6wIgoiDcR+Gfg4/+FyseSOjIIzVU=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "aaaf4fec792bad465ea4a35c0be5bc2a54f33095",
"type": "gitlab"
},
"original": {
"dir": "pkgs/firefox-addons",
"owner": "rycee",
"ref": "master",
"repo": "nur-expressions",
"type": "gitlab"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1749398372,
"narHash": "sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"locked": {
"lastModified": 1659877975,
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flakey-profile": {
"locked": {
"lastModified": 1712898590,
"narHash": "sha256-FhGIEU93VHAChKEXx905TSiPZKga69bWl1VB37FK//I=",
"owner": "lf-",
"repo": "flakey-profile",
"rev": "243c903fd8eadc0f63d205665a92d4df91d42d9d",
"type": "github"
},
"original": {
"owner": "lf-",
"repo": "flakey-profile",
"type": "github"
} }
}, },
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"agenix",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1703113217, "lastModified": 1750792728,
"narHash": "sha256-7ulcXOk63TIT2lVDSExj7XzFx09LpdSAPtvgtM7yQPE=", "narHash": "sha256-Lh3dopA8DdY+ZoaAJPrtkZOZaFEJGSYjOdAYYgOPgE4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "3bfaacf46133c037bb356193bd2f1765d9dc82c1", "rev": "366f00797b1efb70f2882d3da485e3c10fd3d557",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.05",
"repo": "home-manager",
"type": "github"
}
},
"home-manager-unstable": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1750798083,
"narHash": "sha256-DTCCcp6WCFaYXWKFRA6fiI2zlvOLCf5Vwx8+/0R8Wc4=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "ff31a4677c1a8ae506aa7e003a3dba08cb203f82",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -60,49 +177,196 @@
"type": "github" "type": "github"
} }
}, },
"home-manager_2": { "lix": {
"flake": false,
"locked": {
"lastModified": 1750762203,
"narHash": "sha256-LmQhjQ7c+AOkwhvR9GFgJOy8oHW35MoQRELtrwyVnPw=",
"rev": "38b358ce27203f972faa2973cf44ba80c758f46e",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/38b358ce27203f972faa2973cf44ba80c758f46e.tar.gz?rev=38b358ce27203f972faa2973cf44ba80c758f46e"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/lix/archive/release-2.93.tar.gz"
}
},
"lix-module": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_2",
"flakey-profile": "flakey-profile",
"lix": "lix",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1720042825, "lastModified": 1750776670,
"narHash": "sha256-A0vrUB6x82/jvf17qPCpxaM+ulJnD8YZwH9Ci0BsAzE=", "narHash": "sha256-EfA5K5EZAnspmraJrXQlziffVpaT+QDBiE6yKmuaNNQ=",
"owner": "nix-community", "rev": "c3c78a32273e89d28367d8605a4c880f0b6607e3",
"repo": "home-manager", "type": "tarball",
"rev": "e1391fb22e18a36f57e6999c7a9f966dc80ac073", "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/c3c78a32273e89d28367d8605a4c880f0b6607e3.tar.gz?rev=c3c78a32273e89d28367d8605a4c880f0b6607e3"
"type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "type": "tarball",
"ref": "release-24.05", "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.93.1.tar.gz"
"repo": "home-manager",
"type": "github"
} }
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1723688146, "lastModified": 1750622754,
"narHash": "sha256-sqLwJcHYeWLOeP/XoLwAtYjr01TISlkOfz+NG82pbdg=", "narHash": "sha256-kMhs+YzV4vPGfuTpD3mwzibWUE6jotw5Al2wczI0Pv8=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c3d4ac725177c030b1e289015989da2ad9d56af0", "rev": "c7ab75210cb8cb16ddd8f290755d9558edde7ee1",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-24.05", "ref": "nixos-25.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs-lib": {
"locked": {
"lastModified": 1748740939,
"narHash": "sha256-rQaysilft1aVMwF14xIdGS3sj1yHlI6oKQNBRTF40cc=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "656a64127e9d791a334452c6b6606d17539476e2",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-small": {
"locked": {
"lastModified": 1750784235,
"narHash": "sha256-IYCCkKerO3lMUcMaDRLfwnfyPopQbGWF8iHRd0XcCBc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "a5e9291e97f5ba0b4ba7d657ddedd5f86d11acfd",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05-small",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1750506804,
"narHash": "sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4206c4cb56751df534751b058295ea61357bbbaa",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable-small": {
"locked": {
"lastModified": 1750776346,
"narHash": "sha256-sWw7gz2B02fHQkmPSutVcoawLuiPT0hpztL0ldCnIy0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "4396a137499b6cc9f9fe9f3c266577bd52d455a4",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable-small",
"repo": "nixpkgs",
"type": "github"
}
},
"plasma-manager": {
"inputs": {
"home-manager": [
"home-manager-unstable"
],
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1748196248,
"narHash": "sha256-1iHjsH6/5UOerJEoZKE+Gx1BgAoge/YcnUsOA4wQ/BU=",
"owner": "nix-community",
"repo": "plasma-manager",
"rev": "b7697abe89967839b273a863a3805345ea54ab56",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "plasma-manager",
"type": "github"
}
},
"randomcat": {
"flake": false,
"locked": {
"lastModified": 1750730821,
"narHash": "sha256-U5uW9mRSuA2dRaOyswmz2I0fUVQbGRSZROXIe2WKS+8=",
"owner": "randomnetcat",
"repo": "nix-configs",
"rev": "1a2a536f5550c3b323e19f46d166340ad01745fd",
"type": "github"
},
"original": {
"owner": "randomnetcat",
"repo": "nix-configs",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"agenix": "agenix", "agenix": "agenix",
"birdsong": "birdsong", "colmena": "colmena",
"home-manager": "home-manager_2", "firefox-addons": "firefox-addons",
"nixpkgs": "nixpkgs" "flake-parts": "flake-parts",
"home-manager": "home-manager",
"home-manager-unstable": "home-manager-unstable",
"lix-module": "lix-module",
"nixpkgs": "nixpkgs",
"nixpkgs-small": "nixpkgs-small",
"nixpkgs-unstable": "nixpkgs-unstable",
"nixpkgs-unstable-small": "nixpkgs-unstable-small",
"plasma-manager": "plasma-manager",
"randomcat": "randomcat",
"scoutshonour": "scoutshonour"
}
},
"scoutshonour": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1735301893,
"narHash": "sha256-d95MCTUYMCcOQv4LpmWxPuVnx7McezXYs2Idw8u8ngI=",
"ref": "main",
"rev": "f447cd380ea1fb81a0ff8f292b6bbdf0be9c9520",
"revCount": 23,
"type": "git",
"url": "https://git.qenya.tel/qenya/nix-scoutshonour"
},
"original": {
"ref": "main",
"type": "git",
"url": "https://git.qenya.tel/qenya/nix-scoutshonour"
} }
}, },
"systems": { "systems": {
@ -119,6 +383,21 @@
"repo": "default", "repo": "default",
"type": "github" "type": "github"
} }
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

240
flake.nix
View file

@ -1,103 +1,169 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
nixpkgs-small.url = "github:NixOS/nixpkgs/nixos-25.05-small";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-unstable-small.url = "github:NixOS/nixpkgs/nixos-unstable-small";
home-manager = { lix-module = {
url = "github:nix-community/home-manager/release-24.05"; # lix haven't figured out automatic updates yet: https://git.lix.systems/lix-project/nixos-module/issues/39
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.1.tar.gz";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
home-manager = {
url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager-unstable = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
plasma-manager = {
url = "github:nix-community/plasma-manager";
inputs.nixpkgs.follows = "nixpkgs-unstable";
inputs.home-manager.follows = "home-manager-unstable";
};
flake-parts.url = "github:hercules-ci/flake-parts";
agenix = { agenix = {
url = "github:ryantm/agenix?tag=0.15.0"; url = "github:ryantm/agenix";
inputs = { inputs.nixpkgs.follows = "nixpkgs";
nixpkgs.follows = "nixpkgs"; inputs.darwin.follows = "";
darwin.follows = ""; inputs.home-manager.follows = "";
};
}; };
birdsong.url = "git+https://git.qenya.tel/qenya/birdsong?ref=main";
};
outputs = inputs@{ self, nixpkgs, home-manager, agenix, birdsong, ... }: {
colmena = { colmena = {
meta.nixpkgs = import nixpkgs { system = "x86_64-linux"; }; url = "github:zhaofengli/colmena";
meta.nodeNixpkgs.kalessin = import nixpkgs { system = "aarch64-linux"; }; # TODO: this should be generated from the host config somehow inputs.nixpkgs.follows = "nixpkgs";
inputs.stable.follows = "";
inputs.nix-github-actions.follows = "";
inputs.flake-compat.follows = "";
};
defaults = { name, nodes, config, lib, pkgs, ... }: { randomcat = {
deployment.replaceUnknownProfiles = lib.mkDefault false; url = "github:randomnetcat/nix-configs";
networking.hostName = name; flake = false;
};
nix.settings.experimental-features = "nix-command flakes"; firefox-addons = {
nixpkgs.flake.source = nixpkgs; url = "gitlab:rycee/nur-expressions?ref=master&dir=pkgs/firefox-addons";
nix.nixPath = [ "nixpkgs=flake:nixpkgs" ]; inputs.nixpkgs.follows = "nixpkgs-unstable";
};
nixpkgs.config = { scoutshonour = {
allowUnfree = true; url = "git+https://git.qenya.tel/qenya/nix-scoutshonour?ref=main";
packageOverrides = pkgs: inputs.nixpkgs.follows = "nixpkgs-unstable";
let sources = import ./npins;
in {
agenix = agenix.packages.${config.nixpkgs.hostPlatform.system}.default;
nur = (import sources.nur { inherit pkgs; });
};
};
home-manager = {
useUserPackages = true;
useGlobalPkgs = true;
};
imports = [
home-manager.nixosModules.home-manager
agenix.nixosModules.default
birdsong.nixosModules.default
./common
./services
];
};
tohru = { name, nodes, ... }: {
networking.hostId = "31da19c1";
time.timeZone = "Europe/London";
imports = [
./deployment/local.nix
./hosts/tohru/configuration.nix
];
};
yevaud = { name, nodes, ... }: {
networking.hostId = "09673d65";
time.timeZone = "Etc/UTC";
imports = [
./deployment/remote.nix
./hosts/yevaud/configuration.nix
];
};
orm = { name, nodes, ... }: {
networking.hostId = "00000000";
time.timeZone = "Etc/UTC";
imports = [
./deployment/remote.nix
./hosts/orm/configuration.nix
];
};
kalessin = { name, nodes, ... }: {
networking.hostId = "534b538e";
time.timeZone = "Etc/UTC";
deployment = {
buildOnTarget = true;
replaceUnknownProfiles = true;
};
imports = [
./deployment/remote.nix
./hosts/kalessin/configuration.nix
];
};
}; };
}; };
outputs = inputs@{ self, nixpkgs, nixpkgs-small, nixpkgs-unstable, flake-parts, colmena, ... }:
flake-parts.lib.mkFlake { inherit inputs; } {
imports = [ ./flake ];
systems = [ "x86_64-linux" "aarch64-linux" ];
perSystem = { pkgs, system, ... }: {
devShells.default = pkgs.mkShell {
packages = [
inputs.colmena.packages.${system}.colmena
inputs.agenix.packages.${system}.default
inputs.plasma-manager.packages.${system}.rc2nix
];
};
};
flake.nixosConfigurations = self.outputs.colmenaHive.nodes;
flake.colmenaHive = colmena.lib.makeHive self.outputs.colmena;
# The name of this output type is not standardised. I have picked
# "homeManagerModules" as the discussion here suggests it's the most common:
# https://github.com/nix-community/home-manager/issues/1783
#
# However, note CppNix >= 2.22.3, >= 2.24 has blessed "homeModules":
# https://github.com/NixOS/nix/pull/10858
flake.homeManagerModules = {
"qenya".imports = [ ./home/qenya ];
"qenya@shaw".imports = [ ./hosts/shaw/home.nix ];
};
fountain.backup = {
keys = {
elucredassa = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOFa3hjej6KGmS2aQ4s46Y7U8pN4yyR2FuMofpHRwXNk syncoid@elucredassa" ];
};
sync = {
"orm-state" = {
dataset = "state";
sourceHost = "orm";
targetHost = "elucredassa";
source = "rpool_orm";
target = "rpool_elucredassa/backup/orm";
};
"kalessin-state" = {
dataset = "state";
sourceHost = "kalessin";
targetHost = "elucredassa";
source = "rpool_kalessin";
target = "rpool_elucredassa/backup/kalessin";
};
};
};
flake.colmena =
let
home-manager = inputs.home-manager.nixosModules.home-manager;
home-manager-unstable = inputs.home-manager-unstable.nixosModules.home-manager;
in
{
meta = {
nixpkgs = import nixpkgs-unstable {
system = "x86_64-linux";
overlays = [
inputs.lix-module.overlays.default
];
};
nodeNixpkgs = {
kilgharrah = import nixpkgs-unstable { system = "x86_64-linux"; };
tohru = import nixpkgs { system = "x86_64-linux"; };
elucredassa = import nixpkgs-small { system = "x86_64-linux"; };
yevaud = import nixpkgs-small { system = "x86_64-linux"; };
orm = import nixpkgs-small { system = "x86_64-linux"; };
kalessin = import nixpkgs-small { system = "aarch64-linux"; };
tehanu = import nixpkgs-small { system = "aarch64-linux"; };
};
specialArgs = {
inherit self;
inherit inputs;
};
};
defaults = { config, lib, pkgs, ... }: {
deployment.targetHost = lib.mkDefault config.networking.fqdn;
deployment.buildOnTarget = lib.mkDefault true;
imports = [
inputs.lix-module.nixosModules.default
inputs.agenix.nixosModules.default
./common
./services
(builtins.toPath "${inputs.randomcat}/services/default.nix")
];
};
kilgharrah.deployment.targetHost = null; # disable remote deployment
tohru.deployment.targetHost = null; # disable remote deployment
elucredassa.deployment.targetHost = "100.73.34.182"; # TODO: no fqdn yet
kilgharrah.imports = [ ./hosts/kilgharrah home-manager-unstable ];
tohru.imports = [ ./hosts/tohru home-manager ];
elucredassa.imports = [ ./hosts/elucredassa home-manager ];
yevaud.imports = [ ./hosts/yevaud home-manager ];
orm.imports = [ ./hosts/orm home-manager ];
kalessin.imports = [ ./hosts/kalessin home-manager ];
tehanu.imports = [ ./hosts/tehanu home-manager ];
};
};
} }

134
flake/backup.nix Normal file
View file

@ -0,0 +1,134 @@
{ config, lib, pkgs, ... }:
let
cfg = config.fountain.backup;
keys = import ../keys.nix;
syncOptions = {
dataset = lib.mkOption {
type = lib.types.str;
description = ''
The name of the dataset to be synced (not including its parent
datasets, if any). This will be the same on the source and target.
It must already exist on the source, defined with the
{option}`randomcat.services.zfs` module, and not exist on the target.
'';
};
sourceHost = lib.mkOption {
type = lib.types.str;
description = ''
The host from which the dataset should be synced. Must be an entry in
{option}`flake.colmena`.
'';
};
targetHost = lib.mkOption {
type = lib.types.str;
description = ''
The host to which the dataset should be synced. Must be an entry in
{option}`flake.colmena`.
'';
};
source = lib.mkOption {
type = lib.types.str;
description = ''
The path to the synced dataset in the ZFS namespace on the source host,
excluding the component that is the name of the dataset itself.
'';
};
target = lib.mkOption {
type = lib.types.str;
description = ''
The path to the synced dataset in the ZFS namespace on the target host,
excluding the component that is the name of the dataset itself. It must
already exist, defined with the {option}`randomcat.services.zfs`
module.
'';
};
};
in
{
options.fountain.backup = {
keys = lib.mkOption {
type = lib.types.attrsOf (lib.types.listOf lib.types.singleLineStr);
default = { };
description = ''
Lists of verbatim OpenSSH public keys that may be used to identify the
syncoid user on each target host. The key to each list must be the
host's hostname, as listed in {option}`flake.colmena`.
'';
example = {
host = [ "ssh-rsa AAAAB3NzaC1yc2etc/etc/etcjwrsh8e596z6J0l7 example@host" ];
bar = [ "ssh-ed25519 AAAAC3NzaCetcetera/etceteraJZMfk3QPfQ foo@bar" ];
};
};
sync = lib.mkOption {
type = lib.types.attrsOf (lib.types.submodule { options = syncOptions; });
default = { };
description = ''
Details of ZFS datasets whose snapshots should be synced from machine
to machine using syncoid. Syncoid will run hourly at 15 past the hour
and copy all ZFS snapshots from the source dataset to the target
dataset (recursing into child datasets).
See descriptions for the individual options for more details. The name
of each attribute in this set is arbitrary and used to generate systemd
unit names.
This module does not actually cause snapshots to be taken; sanoid must
be configured separately to do this.
'';
example = {
"orm-state" = {
dataset = "state";
sourceHost = "orm";
targetHost = "elucredassa";
source = "rpool_orm";
target = "rpool_elucredassa/backup/orm";
};
};
};
};
# TODO: add some assertions to verify the options
config.flake.colmena = lib.mkMerge (lib.mapAttrsToList
(name: sync:
let
inherit (sync) dataset sourceHost targetHost source target;
sourceFqdn = "${sourceHost}.birdsong.network";
in
{
${sourceHost} = { pkgs, ... }: {
randomcat.services.zfs.datasets."${source}/${dataset}".zfsPermissions.users.backup = [ "hold" "send" ];
users.users.backup = {
group = "backup";
isSystemUser = true;
useDefaultShell = true;
openssh.authorizedKeys.keys = cfg.keys.${targetHost};
packages = with pkgs; [ mbuffer lzop ]; # syncoid uses these if available but doesn't pull them in automatically
};
users.groups.backup = { };
};
${targetHost} = {
randomcat.services.zfs.datasets.${target}.zfsPermissions.users.syncoid = [ "mount" "create" "receive" "recordsize" ];
services.syncoid = {
enable = true;
interval = "*-*-* *:15:00";
commonArgs = [ "--no-sync-snap" ];
commands = {
${name} = {
source = "backup@${sourceFqdn}:${source}/${dataset}";
target = "${target}/${dataset}";
recursive = true;
recvOptions = "ux recordsize o compression=lz4";
};
};
};
};
})
cfg.sync
);
}

19
flake/colmena.nix Normal file
View file

@ -0,0 +1,19 @@
# https://git.lix.systems/the-distro/infra/src/commit/fbb23bf517206175764f154ddfd304b9ec501f87/colmena.nix
{ lib, ... }: {
options.flake.colmena = lib.mkOption {
type = lib.types.submodule {
freeformType = lib.types.attrsOf (lib.mkOptionType {
name = "NixOS module";
description = "module containing NixOS options and/or config";
descriptionClass = "noun";
check = value: builtins.isAttrs value || builtins.isFunction value || builtins.isPath value;
merge = loc: defs: {
imports = map (def: def.value) defs;
};
});
options.meta = lib.mkOption {
type = lib.types.attrs;
};
};
};
}

6
flake/default.nix Normal file
View file

@ -0,0 +1,6 @@
{
imports = [
./backup.nix
./colmena.nix
];
}

View file

@ -1,14 +0,0 @@
{ config, lib, pkgs, ... }:
{
home.packages = with pkgs; [
tree # like `ls -R` but nicer
# Extremely important
fortune
cowsay
lolcat
];
programs.btop.enable = true;
}

View file

@ -1,27 +0,0 @@
{ config, lib, pkgs, ... }:
let inherit (lib) mkIf;
in {
dconf = {
settings =
let
backgroundOptions = {
color-shading-type = "solid";
picture-options = "zoom";
picture-uri = "${config.home.homeDirectory}/.background-image";
primary-color = "#3a4ba0";
secondary-color = "#2f302f";
};
in
{
"org/gnome/desktop/background" = backgroundOptions // {
picture-uri-dark = backgroundOptions.picture-uri;
};
"org/gnome/desktop/screensaver" = backgroundOptions;
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
};
};
home.file.".background-image" = mkIf config.dconf.enable {
source = ./background-image.jpg;
};
}

View file

@ -1,19 +0,0 @@
{ config, lib, pkgs, ... }:
# dconf is the configuration manager for GNOME.
# home-manager, in its infinite wisdom, sets `dconf.enable` to true by default.
# This is a problem because we don't want it to attempt to apply our settings on
# a system that doesn't actually have GNOME installed. So, we override the
# default to false.
let inherit (lib) mkDefault;
in {
dconf.enable = mkDefault false;
imports = [
# TODO: nix-ify other parts of GNOME config
./appearance.nix
./keyboard.nix
];
}

View file

@ -1,14 +0,0 @@
# { config, lib, pkgs, ... }:
{
dconf = {
settings = {
"org/gnome/desktop/wm/keybindings" = {
# These are largely useless on most normal systems
# and conflict with VS Code's default keybinds for "Copy Line Up/Down"
move-to-workspace-up = [ ];
move-to-workspace-down = [ ];
};
};
};
}

1832
home/qenya/.p10k.zsh Normal file

File diff suppressed because it is too large Load diff

View file

Before

Width:  |  Height:  |  Size: 1.3 MiB

After

Width:  |  Height:  |  Size: 1.3 MiB

Before After
Before After

View file

@ -0,0 +1,26 @@
{ config, lib, pkgs, osConfig, ... }:
# dconf is the configuration manager for GNOME.
let
isGnome = osConfig.services.xserver.desktopManager.gnome.enable;
in
{
dconf.enable = isGnome;
dconf.settings = {
"org/gnome/settings-daemon/plugins/color".night-light-enabled = true;
"org/gnome/desktop/sound".event-sounds = false;
"org/gnome/desktop/sound".allow-volume-above-100-percent = true;
"org/gnome/settings-daemon/plugins/power".power-saver-profile-on-low-battery = true;
};
imports = [
./desktop.nix
./keyboard.nix
./mouse-touchpad.nix
./multitasking.nix
./shell.nix
./wellbeing.nix
];
}

View file

@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
let inherit (lib) mkIf;
in {
dconf.settings = {
"org/gnome/desktop/background" = {
picture-options = "zoom";
picture-uri = "${config.home.homeDirectory}/.background-image";
picture-uri-dark = "${config.home.homeDirectory}/.background-image";
};
"org/gnome/desktop/screensaver" = {
picture-options = "zoom";
picture-uri = "${config.home.homeDirectory}/.background-image";
};
"org/gnome/desktop/interface" = {
color-scheme = "prefer-dark";
enable-hot-corners = false;
};
};
home.file.".background-image" = mkIf config.dconf.enable {
source = ./background-image.jpg;
};
}

View file

@ -0,0 +1,12 @@
# { config, lib, pkgs, ... }:
{
dconf.settings = {
"org/gnome/desktop/wm/keybindings" = {
# These are largely useless on most normal systems
# and conflict with VS Code's default keybinds for "Copy Line Up/Down"
move-to-workspace-up = [ ];
move-to-workspace-down = [ ];
};
};
}

View file

@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
{
dconf.settings = {
"org/gnome/desktop/peripherals/mouse" = {
natural-scroll = false;
};
"org/gnome/desktop/peripherals/touchpad" = {
click-method = "fingers";
disable-while-typing = false;
natural-scroll = true; # the correct option, whatever Janet says
tap-to-click = true;
two-finger-scrolling-enabled = true;
};
};
}

View file

@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
dconf.settings = {
"org/gnome/mutter" = {
edge-tiling = true;
dynamic-workspaces = true;
workspaces-only-on-primary = true;
};
};
}

View file

@ -0,0 +1,26 @@
{ config, lib, pkgs, ... }:
{
dconf.settings = {
"org/gnome/shell" = {
disable-user-extensions = true;
# TODO: this is fine for now on tohru (the only GNOME system I use) but shouldn't depend on certain apps being installed
favorite-apps = [
"discord.desktop"
"org.gnome.Evolution.desktop"
"firefox.desktop"
"torbrowser.desktop"
"steam.desktop"
"codium.desktop"
"org.gnome.Console.desktop"
"org.gnome.Nautilus.desktop"
"org.gnome.SystemMonitor.desktop"
];
# TODO: fill this out (needs preinstalled stuff removing first)
# app-picker-layout = [
# ...
# ];
};
};
}

View file

@ -0,0 +1,19 @@
{ config, lib, pkgs, ... }:
# These features are cool and I would like to keep trying them, but they are
# horribly bugged in GNOME 48.1. Consider re-enabling them when 48.2 is
# released. See, e.g.:
# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8289
# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8299
# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8305
# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8376
# https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8398
{
dconf.settings = {
# "org/gnome/desktop/screen-time-limits".daily-limit-enabled = true;
# "org/gnome/desktop/break-reminders".selected-breaks = [ "eyesight" "movement" ];
"org/gnome/desktop/screen-time-limits".daily-limit-enabled = false;
"org/gnome/desktop/break-reminders".selected-breaks = [ ];
};
}

View file

@ -1,10 +1,14 @@
{ {
imports = [ imports = [
./dconf ./dconf
./cli.nix ./feishin.nix
./firefox.nix
./fonts.nix
./git.nix ./git.nix
./packages.nix
./tmux.nix ./tmux.nix
./vscode.nix ./vscode.nix
./xdg-mime-apps.nix
./zsh.nix ./zsh.nix
]; ];

24
home/qenya/feishin.nix Normal file
View file

@ -0,0 +1,24 @@
{ config, lib, pkgs, osConfig, ... }:
# Feishin ideally wants to see mpv at runtime, but this isn't catered for by
# the derivation in nixpkgs as it isn't strictly necessary.
# An easier way to do this would be to write mpv's full nix store path to
# Feishin's config. But Feishin has one JSON file for config and state, and
# we'd rather not overwrite the latter. Until and unless home-manager grows
# support for partially patching files, we live with this.
let
inherit (lib) mkIf;
isGraphical = osConfig.services.xserver.enable;
in
{
home.packages = mkIf isGraphical [
(pkgs.feishin.overrideAttrs (originalAttrs: {
buildInputs = originalAttrs.buildInputs ++ [ pkgs.mpv ];
postFixup = ''
${originalAttrs.postFixup or ""}
wrapProgram $out/bin/feishin --prefix PATH : ${lib.makeBinPath [ pkgs.mpv ]}
'';
}))
];
}

59
home/qenya/firefox.nix Normal file
View file

@ -0,0 +1,59 @@
{ config, lib, pkgs, osConfig, inputs, ... }:
let
inherit (lib) mkIf;
isGraphical = osConfig.services.xserver.enable;
in
{
programs.firefox = lib.mkIf isGraphical {
enable = true;
languagePacks = [ "en-GB" ];
profiles.default = {
extensions.packages = with inputs.firefox-addons.packages.${pkgs.hostPlatform.system}; [
bitwarden
ublock-origin
];
settings = {
"browser.startup.page" = 3; # resume previous session
"browser.newtabpage.activity-stream.showSponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
# disable telemetry
"datareporting.healthreport.uploadEnabled" = false;
"app.shield.optoutstudies.enabled" = false;
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
# disable prefetch?
# DNS over HTTPS
"network.trr.custom_uri" = "https://base.dns.mullvad.net/dns-query";
"network.trr.excluded-domains" = "detectportal.firefox.com";
"network.trr.mode" = 3;
"network.trr.uri" = "https://base.dns.mullvad.net/dns-query";
"browser.search.suggest.enabled" = false;
"browser.urlbar.suggest.searches" = false;
"dom.security.https_only_mode" = true;
"browser.contentblocking.category" = "strict"; # Enhanced Tracking Protection
# I think these are implied by the above
# "privacy.donottrackheader.enabled" = true;
# "privacy.trackingprotection.enabled" = true;
# "privacy.trackingprotection.emailtracking.enabled" = true;
# "privacy.trackingprotection.socialtracking.enabled" = true;
"privacy.sanitize.sanitizeOnShutdown" = true;
"privacy.clearOnShutdown_v2.historyFormDataAndDownloads" = false;
"dom.private-attribution.submission.enabled" = false; # disable "Privacy-Preserving Attribution for Advertising"
"extensions.autoDisableScopes" = 0; # automatically enable extensions installed through nix
# external password manager
"signon.rememberSignons" = false;
"extensions.formautofill.creditCards.enabled" = false;
};
};
};
}

17
home/qenya/fonts.nix Normal file
View file

@ -0,0 +1,17 @@
{ config, lib, pkgs, osConfig, ... }:
let
inherit (lib) mkIf;
isGraphical = osConfig.services.xserver.enable;
in
mkIf isGraphical {
fonts.fontconfig = {
enable = true;
};
home.packages = with pkgs; [
meslo-lgs-nf
];
programs.vscode.profiles.default.userSettings."terminal.integrated.fontFamily" = "MesloLGS NF";
}

View file

@ -6,12 +6,9 @@
userName = "Katherina Walshe-Grey"; userName = "Katherina Walshe-Grey";
userEmail = "git@qenya.tel"; userEmail = "git@qenya.tel";
extraConfig = { extraConfig = {
init = { init.defaultBranch = "main";
defaultBranch = "main"; pull.rebase = true;
}; push.autoSetupRemote = true;
push = {
autoSetupRemote = true;
};
}; };
}; };
} }

40
home/qenya/packages.nix Normal file
View file

@ -0,0 +1,40 @@
{ config, lib, pkgs, osConfig, ... }:
let
inherit (lib) optionals;
isGraphical = osConfig.services.xserver.enable;
isGnome = osConfig.services.xserver.desktopManager.gnome.enable;
isPlasma = osConfig.services.desktopManager.plasma6.enable || osConfig.services.xserver.desktopManager.plasma5.enable;
in
{
home.packages = with pkgs; [
eza # like `ls` but fancier
hexyl # like `xxd` but cooler
ripgrep # like `grep` but faster
tree # like `ls -R` but nicer
units
zip
unzip
# Extremely important
fortune
cowsay
lolcat
] ++ optionals isGraphical [
bitwarden
discord
gimp-with-plugins
jellyfin-media-player
tor-browser-bundle-bin
zoom-us
# libreoffice
libreoffice
hunspell
hunspellDicts.en_GB-ise
] ++ optionals isGnome [
celluloid
] ++ optionals isPlasma [
haruna
];
}

87
home/qenya/vscode.nix Normal file
View file

@ -0,0 +1,87 @@
{ config, lib, pkgs, osConfig, ... }:
let
inherit (lib) mkIf mkDefault;
isGraphical = osConfig.services.xserver.enable;
in
{
programs.vscode = mkIf isGraphical {
enable = true;
package = pkgs.vscodium;
mutableExtensionsDir = false;
profiles.default = {
enableExtensionUpdateCheck = false;
enableUpdateCheck = false;
extensions = with pkgs.vscode-extensions; [
charliermarsh.ruff
dbaeumer.vscode-eslint
eamodio.gitlens
golang.go
jdinhlife.gruvbox
jnoortheen.nix-ide
matangover.mypy
mkhl.direnv
ms-python.black-formatter
ms-python.python
rust-lang.rust-analyzer
vadimcn.vscode-lldb
];
userSettings = {
"css.format.spaceAroundSelectorSeparator" = true;
"css.format.newlineBetweenSelectors" = false;
"debug.allowBreakpointsEverywhere" = true;
"extensions.autoUpdate" = false;
"files.insertFinalNewline" = true;
"git.autofetch" = true;
"git.confirmSync" = false;
"git.enableSmartCommit" = true;
"git.inputValidation" = true;
"git.inputValidationSubjectLength" = null;
"javascript.updateImportsOnFileMove.enabled" = "always";
"nix.enableLanguageServer" = true;
"nix.serverPath" = "${pkgs.nil}/bin/nil";
"nix.serverSettings".nil = {
diagnostics.ignored = [ "unused_binding" "unused_with" ];
formatting.command = [ "${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt" ];
nix.flake.autoArchive = true;
};
"rust-analyzer.check.command" = "clippy";
"terminal.integrated.allowChords" = false;
"terminal.integrated.defaultProfile.linux" = "zsh";
"workbench.colorTheme" = "Gruvbox Dark Medium";
"[go]" = {
"editor.defaultFormatter" = "golang.go";
"editor.formatOnSave" = false;
};
"go.alternateTools" = {
"go" = "${pkgs.go}/bin/go";
"golangci-lint" = "${pkgs.golangci-lint}/bin/golangci-lint";
"gopls" = "${pkgs.gopls}/bin/gopls";
"dlv" = "${pkgs.delve}/bin/dlv";
"staticcheck" = "${pkgs.go-tools}/bin/staticcheck";
};
"go.lintTool" = "golangci-lint";
"go.toolsManagement.checkForUpdates" = "off";
"gopls" = {
"formatting.gofumpt" = true;
"ui.semanticTokens" = true;
};
"[python]" = {
"editor.defaultFormatter" = "ms-python.black-formatter";
"editor.formatOnSave" = true;
"editor.codeActionsOnSave" = {
"source.fixAll" = "explicit";
"source.organizeImports" = "explicit";
};
};
"python.createEnvironment.contentButton" = "show";
"python.defaultInterpreterPath" = "${pkgs.python3}/bin/python";
"ruff.nativeServer" = "on";
"ruff.path" = [ "${pkgs.ruff}/bin/ruff" ];
"mypy.dmypyExecutable" = "${pkgs.mypy}/bin/dmypy";
};
};
};
}

View file

@ -0,0 +1,21 @@
{ config, lib, pkgs, osConfig, ... }:
let
isGraphical = osConfig.services.xserver.enable;
in
{
xdg.mimeApps = {
enable = isGraphical;
defaultApplications = {
"application/pdf" = [ "org.gnome.Evince.desktop" "org.kde.okular.desktop" ];
"application/zip" = [ "org.gnome.FileRoller.desktop" "org.kde.ark.desktop" ];
"image/gif" = [ "org.gnome.Loupe.desktop" "org.kde.gwenview.desktop" ];
"image/jpeg" = [ "org.gnome.Loupe.desktop" "org.kde.gwenview.desktop" ];
"image/png" = [ "org.gnome.Loupe.desktop" "org.kde.gwenview.desktop" ];
"text/plain" = [ "org.gnome.TextEditor.desktop" "org.kde.kate.desktop" ];
"x-scheme-handler/http" = "firefox.desktop";
"x-scheme-handler/https" = "firefox.desktop";
"x-scheme-handler/mailto" = "org.gnome.Evolution.desktop"; # TODO: email on KDE - is Kontact any good?
};
};
}

View file

@ -1,6 +1,7 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
{ {
home.packages = with pkgs; [ direnv ];
programs.zsh = { programs.zsh = {
enable = true; enable = true;
enableCompletion = true; enableCompletion = true;
@ -10,7 +11,12 @@
shellAliases = { shellAliases = {
ll = "ls -l"; ll = "ls -l";
nix-shell = ''nix-shell --command "zsh"''; # TODO: tweak theme to display something when inside nix-shell
# don't clobber
mv = "mv -i";
rename = "rename -i";
nix-shell = ''nix-shell --command "zsh"'';
}; };
history = { history = {
@ -21,10 +27,15 @@
oh-my-zsh = { oh-my-zsh = {
enable = true; enable = true;
plugins = [ "git" "sudo" ]; plugins = [ "git" "sudo" "direnv" ];
theme = "agnoster"; theme = ""; # defer to powerlevel10k
}; };
initContent = ''
source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme
source ${./.p10k.zsh}
'';
envExtra = '' envExtra = ''
DEFAULT_USER=qenya DEFAULT_USER=qenya
''; '';

View file

@ -1,63 +0,0 @@
{ config, lib, pkgs, osConfig, ... }:
let
inherit (lib) mkIf;
inherit (pkgs) fetchFromGitHub;
inherit (osConfig.nixpkgs.hostPlatform) system;
extensions =
(import (fetchFromGitHub {
# On a stable channel, do NOT keep this up-to-date! VS Code extensions
# have breaking changes more frequently than the NixOS release cadence.
owner = "nix-community";
repo = "nix-vscode-extensions";
rev = "27ce569a199d2da1a8483fe3d69dd41664da3a63";
hash = "sha256-yyB4Kh3EFbYP+1JHza/IEeHwABypcYVi6vvWTmad/rY=";
})).extensions.${system};
in
{
programs.vscode = {
enableExtensionUpdateCheck = false;
enableUpdateCheck = false;
package = pkgs.vscodium;
extensions = with extensions.open-vsx; [
golang.go
jdinhlife.gruvbox
jnoortheen.nix-ide
ms-python.python
];
mutableExtensionsDir = false;
userSettings = {
"[go]" = {
"editor.defaultFormatter" = "golang.go";
"editor.formatOnSave" = false;
};
"extensions.autoUpdate" = false;
"git.autofetch" = true;
"git.confirmSync" = false;
"git.enableSmartCommit" = true;
"git.inputValidation" = true;
"git.inputValidationSubjectLength" = null;
"gopls" = {
"formatting.gofumpt" = true;
"ui.semanticTokens" = true;
};
"javascript.updateImportsOnFileMove.enabled" = "always";
"nix.enableLanguageServer" = true;
"nix.serverPath" = "nil";
"nix.serverSettings".nil = {
diagnostics.ignored = [ "unused_binding" "unused_with" ];
formatting.command = [ "nixpkgs-fmt" ];
};
"terminal.integrated.allowChords" = false;
"terminal.integrated.defaultProfile.linux" = "zsh";
"workbench.colorTheme" = "Gruvbox Dark Hard";
};
};
# Language servers etc
home.packages = mkIf config.programs.vscode.enable (with pkgs; [
gopls
nil
nixpkgs-fmt
]);
}

View file

@ -0,0 +1,43 @@
{ config, lib, pkgs, inputs, ... }:
let
inherit (lib) mkForce;
in
{
imports = [
./filesystems.nix
./hardware.nix
./networking.nix
];
nixpkgs.hostPlatform = "x86_64-linux";
networking.hostName = "elucredassa";
networking.hostId = "a8ec6755";
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" "rtsx_pci_sdmmc" ];
boot.kernelModules = [ "kvm-intel" ];
qenya.base-server.enable = true;
i18n.defaultLocale = "en_GB.UTF-8";
console.keyMap = "uk";
services.xserver.xkb.layout = "gb";
# These are populated by fountain.backup
randomcat.services.zfs.datasets = {
"rpool_elucredassa/backup" = { mountpoint = "none"; };
"rpool_elucredassa/backup/kalessin" = { mountpoint = "none"; };
"rpool_elucredassa/backup/orm" = { mountpoint = "none"; };
};
qenya.services.distributed-builds = {
enable = true;
keyFile = "/etc/ssh/ssh_host_ed25519_key";
builders = [ "kilgharrah" ];
};
fountain.users.qenya.enable = true;
fountain.admins = [ "qenya" ];
system.stateVersion = "24.11";
}

View file

@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
{
boot.initrd.luks.devices = {
"luks-rpool-elucredassa".device = "/dev/disk/by-uuid/5ece5b58-c57a-41ae-b086-03707c39c9a7";
};
fileSystems = {
"/" = {
device = "rpool_elucredassa/root";
fsType = "zfs";
};
"/boot" = {
device = "/dev/disk/by-uuid/2519-E2D6";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
};
swapDevices = [{ device = "/dev/disk/by-uuid/c7c48325-e90d-414d-b579-84cb45616ee9"; }];
boot.supportedFilesystems = [ "ntfs" ]; # for USB drives
}

View file

@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
hardware.enableAllFirmware = true;
hardware.cpu.intel.updateMicrocode = true;
services.fwupd.enable = true;
# this is an old laptop
services.logind.lidSwitch = "ignore";
}

View file

@ -0,0 +1,36 @@
{ config, lib, pkgs, ... }:
{
systemd.network.enable = true;
networking.useDHCP = false;
systemd.network.networks."10-wan" = {
matchConfig.Name = "enp1s0f1";
networkConfig = {
DHCP = "ipv4";
IPv6AcceptRA = true;
Tunnel = "sit-he-ipv6";
};
linkConfig.RequiredForOnline = "routable";
};
systemd.network.netdevs."25-he-ipv6" = {
netdevConfig = {
Name = "sit-he-ipv6";
Kind = "sit";
Description = "Hurricane Electric IPv6 Tunnel";
MTUBytes = 1480;
};
tunnelConfig = {
Remote = "216.66.88.98";
TTL = 255;
};
};
systemd.network.networks."25-he-ipv6" = {
matchConfig.Name = "sit-he-ipv6";
networkConfig.Address = [ "2001:470:1f1c:3e::2/64" ];
routes = [{ Destination = [ "::/0" ]; }];
};
}

View file

@ -1,12 +0,0 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
system.stateVersion = "23.11";
}

View file

@ -0,0 +1,52 @@
{ config, lib, pkgs, ... }:
let
keys = import ../../keys.nix;
in
{
imports = [
./hardware-configuration.nix
./networking.nix
];
nixpkgs.hostPlatform = "aarch64-linux";
networking.hostName = "kalessin";
networking.hostId = "534b538e";
fountain.users.qenya.enable = true;
fountain.users.randomcat.enable = true;
fountain.users.trungle.enable = true;
fountain.admins = [ "qenya" "randomcat" ];
qenya.base-server.enable = true;
qenya.services.remote-builder = {
enable = true;
authorizedKeys.keys = [ ];
};
randomcat.services.zfs.datasets = {
"rpool_kalessin/state" = { mountpoint = "none"; };
"rpool_kalessin/state/headscale" = { mountpoint = "/var/lib/headscale"; };
"rpool_kalessin/state/owncast" = { mountpoint = "/var/lib/owncast"; };
};
services.sanoid.datasets."rpool_kalessin/state" = {
useTemplate = [ "production" ];
recursive = "zfs";
};
qenya.services.owncast = {
enable = true;
domain = "live.qenya.tel";
dataDir = "/var/lib/owncast";
};
qenya.services.headscale = {
enable = true;
domain = "headscale.unspecified.systems";
dataDir = "/var/lib/headscale";
};
system.stateVersion = "23.11";
}

View file

@ -35,13 +35,4 @@
}; };
swapDevices = [ ]; swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.enp0s6.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "aarch64-linux";
} }

View file

@ -0,0 +1,6 @@
{ config, lib, pkgs, ... }:
{
networking.useNetworkd = true;
networking.interfaces.enp0s6.useDHCP = true;
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
services.sanoid.datasets."rpool_albion/state" = {
useTemplate = [ "production" ];
recursive = "zfs";
};
}

View file

@ -0,0 +1,66 @@
{ config, lib, pkgs, ... }:
let
keys = import ../../keys.nix;
in
{
imports = [
./backup.nix
./filesystems.nix
./hardware.nix
./networking.nix
./plasma.nix
./ftp.nix
];
nixpkgs.hostPlatform = "x86_64-linux";
networking.hostName = "kilgharrah";
networking.hostId = "72885bb5";
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "usbhid" "sd_mod" ];
boot.kernelModules = [ "kvm-intel" ];
qenya.base-graphical.enable = true;
time.timeZone = "Europe/London";
i18n.defaultLocale = "en_GB.UTF-8";
console.keyMap = "uk";
services.xserver.xkb.layout = "gb";
fountain.users.qenya.enable = true;
age.secrets.user-password-kilgharrah-qenya.file = ../../secrets/user-password-kilgharrah-qenya.age;
users.users.qenya.hashedPasswordFile = config.age.secrets.user-password-kilgharrah-qenya.path;
fountain.admins = [ "qenya" ];
home-manager.users.qenya = { pkgs, ... }: {
home.packages = with pkgs; [ obs-studio ];
};
qenya.services.remote-builder = {
enable = true;
authorizedKeys.keys = [
keys.machines.yevaud
keys.machines.orm
keys.machines.tohru
keys.machines.elucredassa
];
};
programs.steam.enable = true;
qenya.services.audiobookshelf = {
enable = true;
domain = "audiobookshelf.qenya.tel";
};
qenya.services.jellyfin = {
enable = true;
domain = "jellyfin.qenya.tel";
};
qenya.services.navidrome = {
enable = true;
domain = "music.qenya.tel";
dataDir = "/srv/music";
};
system.stateVersion = "24.05";
}

View file

@ -0,0 +1,93 @@
{ config, lib, pkgs, ... }:
{
# SSD on board
boot.initrd.luks.devices = {
"cryptroot".device = "/dev/disk/by-uuid/b414aaba-0a36-4135-a7e1-dc9489286acd";
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/ad4cbc18-8849-40ed-b0bf-097f8f46346b";
fsType = "btrfs";
options = [ "subvol=@" "compress=zstd" ];
};
"/home" = {
device = "/dev/disk/by-uuid/ad4cbc18-8849-40ed-b0bf-097f8f46346b";
fsType = "btrfs";
options = [ "subvol=@home" "compress=zstd" ];
};
"/nix" = {
device = "/dev/disk/by-uuid/ad4cbc18-8849-40ed-b0bf-097f8f46346b";
fsType = "btrfs";
options = [ "subvol=@nix" "compress=zstd" "noatime" ];
};
"/swap" = {
device = "/dev/disk/by-uuid/ad4cbc18-8849-40ed-b0bf-097f8f46346b";
fsType = "btrfs";
options = [ "subvol=@swap" "noatime" ];
};
"/root" = {
device = "/dev/disk/by-uuid/ad4cbc18-8849-40ed-b0bf-097f8f46346b";
fsType = "btrfs";
options = [ "subvol=@root" "compress=zstd" ];
};
"/srv" = {
device = "/dev/disk/by-uuid/ad4cbc18-8849-40ed-b0bf-097f8f46346b";
fsType = "btrfs";
options = [ "subvol=@srv" "compress=zstd" ];
};
"/var/cache" = {
device = "/dev/disk/by-uuid/ad4cbc18-8849-40ed-b0bf-097f8f46346b";
fsType = "btrfs";
options = [ "subvol=@cache" "compress=zstd" "noatime" ];
};
"/var/tmp" = {
device = "/dev/disk/by-uuid/ad4cbc18-8849-40ed-b0bf-097f8f46346b";
fsType = "btrfs";
options = [ "subvol=@tmp" "compress=zstd" "noatime" ];
};
"/var/log" = {
device = "/dev/disk/by-uuid/ad4cbc18-8849-40ed-b0bf-097f8f46346b";
fsType = "btrfs";
options = [ "subvol=@log" "compress=zstd" "noatime" ];
};
"/boot" = {
device = "/dev/disk/by-uuid/9582-E78D";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
};
swapDevices = [{
device = "/swap/swapfile";
size = 32 * 1024;
}];
# HDD in bay
environment.etc.crypttab.text = ''
albion UUID=8a924f24-9b65-4f05-aeda-5b4080cc7aa1 /root/luks-albion.key
'';
randomcat.services.zfs.datasets = {
"rpool_albion/data" = { mountpoint = "none"; };
"rpool_albion/data/steam" = { mountpoint = "/home/qenya/.local/share/Steam"; };
"rpool_albion/state" = { mountpoint = "none"; };
"rpool_albion/state/audiobookshelf" = { mountpoint = "/var/lib/audiobookshelf"; };
"rpool_albion/state/jellyfin" = { mountpoint = "/var/lib/jellyfin"; };
"rpool_albion/state/navidrome" = { mountpoint = "/var/lib/navidrome"; };
"rpool_albion/srv" = { mountpoint = "none"; };
"rpool_albion/srv/audiobookshelf" = { mountpoint = "/srv/audiobookshelf"; };
"rpool_albion/srv/ftp" = { mountpoint = "/srv/ftp"; };
"rpool_albion/srv/jellyfin" = { mountpoint = "/srv/jellyfin"; };
"rpool_albion/srv/music" = { mountpoint = "/srv/music"; };
};
# Other
boot.supportedFilesystems = [ "ntfs" "zfs" ];
}

70
hosts/kilgharrah/ftp.nix Normal file
View file

@ -0,0 +1,70 @@
{ config, lib, pkgs, ... }:
{
age.secrets.ftp-userDb-qenya = {
# To update this, see the nixos docs for services.vsftpd.userDbPath. Note
# that the command it gives to create a userDb, if applied to an *existing*
# userDb, will *add* the entries from the source file, overwriting any
# entries with the same username but leaving other existing entries intact.
# Also note the database format does not salt hashes.
file = ../../secrets/ftp-userDb-qenya.age;
# we have to specify this manually because pam_userdb strips the extension
path = "/etc/vsftpd/userDb.db";
};
services.vsftpd = {
enable = true;
localUsers = true;
forceLocalLoginsSSL = true;
forceLocalDataSSL = true;
rsaCertFile = "${config.security.acme.certs."ftp.qenya.tel".directory}/fullchain.pem";
rsaKeyFile = "${config.security.acme.certs."ftp.qenya.tel".directory}/key.pem";
enableVirtualUsers = true;
userlistDeny = false; # turn userlist from a denylist into an allowlist
userlist = [ "qenya" ]; # this is just a list of the users in the userDb
userDbPath = "/etc/vsftpd/userDb";
localRoot = "/srv/ftp";
extraConfig = ''
# nothing in the default cipher suite is enabled in modern ssl clients!
ssl_ciphers=HIGH
# set this to something firewallable
pasv_min_port=51000
pasv_max_port=51099
# don't bother with upgrading to TLS, just listen on FTPS only
implicit_ssl=YES
listen_port=990
'';
};
services.nginx = {
enable = true;
virtualHosts = {
"ftp.qenya.tel" = {
forceSSL = true;
useACMEHost = "ftp.qenya.tel";
locations."/".return = "503";
};
};
};
security.acme.certs = {
"ftp.qenya.tel" = {
webroot = "/var/lib/acme/acme-challenge";
group = "acme_ftp.qenya.tel";
};
};
users.groups."acme_ftp.qenya.tel".members = [
"vsftpd" # not configurable in the vsftpd nixos module
config.services.nginx.group
];
networking.firewall.allowedTCPPorts = [ 990 80 443 ];
networking.firewall.allowedTCPPortRanges = [{ from = 51000; to = 51099; }];
}

View file

@ -0,0 +1,51 @@
{ config, lib, pkgs, ... }:
{
hardware.enableAllFirmware = true;
hardware.cpu.intel.updateMicrocode = true;
services.fwupd.enable = true;
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia.open = false;
# # Downgrade to driver version 535 as 550 has problems with Wayland
# hardware.nvidia.package =
# let
# rcu_patch = pkgs.fetchpatch {
# url = "https://github.com/gentoo/gentoo/raw/c64caf53/x11-drivers/nvidia-drivers/files/nvidia-drivers-470.223.02-gpl-pfn_valid.patch";
# hash = "sha256-eZiQQp2S/asE7MfGvfe6dA/kdCvek9SYa/FFGp24dVg=";
# };
# in
# config.boot.kernelPackages.nvidiaPackages.mkDriver {
# version = "535.154.05";
# sha256_64bit = "sha256-fpUGXKprgt6SYRDxSCemGXLrEsIA6GOinp+0eGbqqJg=";
# sha256_aarch64 = "sha256-G0/GiObf/BZMkzzET8HQjdIcvCSqB1uhsinro2HLK9k=";
# openSha256 = "sha256-wvRdHguGLxS0mR06P5Qi++pDJBCF8pJ8hr4T8O6TJIo=";
# settingsSha256 = "sha256-9wqoDEWY4I7weWW05F4igj1Gj9wjHsREFMztfEmqm10=";
# persistencedSha256 = "sha256-d0Q3Lk80JqkS1B54Mahu2yY/WocOqFFbZVBh+ToGhaE=";
# patches = [ rcu_patch ];
# };
services.printing.drivers = [ pkgs.hplip ];
# enable playing from bluray drive
boot.kernelModules = [ "sg" ];
environment.systemPackages = [
((pkgs.vlc.override {
libbluray = (pkgs.libbluray.override {
withJava = true;
withAACS = true;
withBDplus = true;
});
}).overrideAttrs (originalAttrs: {
buildInputs = originalAttrs.buildInputs ++ [ pkgs.libdvdcss ];
# TODO: nixpkgs bug: libbluray needs patching to look at the nix store path of jdk17 when searching for a jdk
# as a workaround, wrap vlc and set JAVA_HOME, which it uses instead of searching when specified
nativeBuildInputs = originalAttrs.nativeBuildInputs ++ [ pkgs.makeWrapper ];
postFixup = ''
${originalAttrs.postFixup or ""}
wrapProgram $out/bin/vlc --set JAVA_HOME ${pkgs.jdk17.home}
'';
}))
];
}

View file

@ -0,0 +1,15 @@
{ config, lib, pkgs, ... }:
{
systemd.network.enable = true;
networking.useDHCP = false;
systemd.network.networks."10-wan" = {
matchConfig.Name = "enp2s0";
networkConfig = {
DHCP = "ipv4";
IPv6AcceptRA = true;
};
linkConfig.RequiredForOnline = "routable";
};
}

109
hosts/kilgharrah/plasma.nix Normal file
View file

@ -0,0 +1,109 @@
{ config, lib, pkgs, inputs, ... }:
let
inherit (lib) mkForce;
in
{
services.xserver.displayManager.gdm.enable = mkForce false;
services.xserver.desktopManager.gnome.enable = mkForce false;
services.displayManager.sddm.enable = true;
services.displayManager.sddm.wayland.enable = true;
services.desktopManager.plasma6.enable = true;
environment.systemPackages = with pkgs; [
(catppuccin-kde.override {
flavour = [ "mocha" ];
accents = [ "mauve" ];
winDecStyles = [ "modern" ];
})
];
home-manager.users.qenya = { pkgs, ... }: {
imports = [
inputs.plasma-manager.homeManagerModules.plasma-manager
];
programs.plasma = {
enable = true;
overrideConfig = true;
workspace = {
lookAndFeel = "Catppuccin-Mocha-Mauve";
colorScheme = "CatppuccinMochaMauve";
splashScreen.engine = "KSplashQML";
splashScreen.theme = "Catppuccin-Mocha-Mauve";
windowDecorations.library = "org.kde.kwin.aurorae";
windowDecorations.theme = "__aurorae__svg__CatppuccinMocha-Modern";
};
# For the moment, this hosts some network-accessible services, so we want it on 24/7
powerdevil.AC.autoSuspend.action = "nothing";
panels = [
# Dock
{
height = 49; # 41 * 1.2
lengthMode = "fit";
location = "bottom";
alignment = "center";
hiding = "dodgewindows";
widgets = [{
name = "org.kde.plasma.icontasks";
config.General = {
fill = false;
iconSpacing = 2;
launchers = lib.concatStringsSep "," [
"applications:firefox.desktop"
"applications:codium.desktop"
"applications:steam.desktop"
"applications:discord.desktop"
"applications:com.obsproject.Studio.desktop"
"applications:org.kde.dolphin.desktop"
"applications:org.kde.konsole.desktop"
"applications:org.kde.plasma-systemmonitor.desktop"
];
maxStripes = 1;
showOnlyCurrentDesktop = false;
showOnlyCurrentScreen = false;
};
}];
screen = "all";
}
# Top bar
{
height = 29; # 24 * 1.2
location = "top";
alignment = "left";
floating = false;
widgets = [
{
name = "org.kde.plasma.kickoff";
config.General = {
lengthFirstMargin = 7;
};
}
{ name = "org.kde.plasma.panelspacer"; }
{
name = "org.kde.plasma.digitalclock";
config.Appearance = {
autoFontAndSize = false;
customDateFormat = "dddd, d MMM";
dateDisplayFormat = "BesideTime";
dateFormat = "custom";
fontFamily = "Inter";
fontStyleName = "Bold";
fontWeight = 700;
boldText = true;
showWeekNumbers = true;
};
}
{ name = "org.kde.plasma.panelspacer"; }
{ name = "org.kde.plasma.systemtray"; }
];
screen = "all";
}
];
};
};
}

View file

@ -1,19 +0,0 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
age.secrets.wireguard-peer-orm.file = ../../secrets/wireguard-peer-orm.age;
birdsong.peering = {
enable = true;
privateKeyFile = config.age.secrets.wireguard-peer-orm.path;
};
system.stateVersion = "23.11";
}

69
hosts/orm/default.nix Normal file
View file

@ -0,0 +1,69 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./networking.nix
];
nixpkgs.hostPlatform = "x86_64-linux";
networking.hostName = "orm";
networking.hostId = "00000000";
fountain.users.qenya.enable = true;
fountain.admins = [ "qenya" ];
qenya.base-server.enable = true;
qenya.services.distributed-builds = {
enable = true;
keyFile = "/etc/ssh/ssh_host_ed25519_key";
builders = [ "kilgharrah" ];
};
nix.settings.max-jobs = 0;
randomcat.services.zfs.datasets = {
"rpool_orm/state" = { mountpoint = "none"; };
"rpool_orm/state/actual" = { mountpoint = "/var/lib/private/actual"; };
"rpool_orm/state/postgresql" = { mountpoint = "/var/lib/postgresql"; };
};
services.sanoid.datasets."rpool_orm/state" = {
useTemplate = [ "production" ];
recursive = "zfs";
};
services.postgresql = {
enable = true;
package = pkgs.postgresql_17;
dataDir = "/var/lib/postgresql/17";
# managing imperatively instead of using ensureDatabases/ensureUsers
enableTCPIP = true;
settings = {
port = 5432;
# TODO: fix SSL
# ssl = true;
};
# only allow remote connections from within Tailscale
authentication = pkgs.lib.mkOverride 10 ''
#type database DBuser auth-method
local all all trust # used by nixos for local monitoring
host sameuser all 100.64.0.0/10 scram-sha-256
host sameuser all fd7a:115c:a1e0::/48 scram-sha-256
'';
};
networking.firewall.interfaces."tailscale0".allowedTCPPorts = [ 5432 ];
qenya.services.actual = {
enable = true;
domain = "actual.unspecified.systems";
};
fountain.services.web-redirect = {
enable = true;
domains = {
"actual.qenya.tel" = "actual.unspecified.systems";
};
};
system.stateVersion = "23.11";
}

View file

@ -37,13 +37,4 @@
swapDevices = swapDevices =
[ { device = "/dev/disk/by-uuid/a0ac8f60-25f9-4dec-af70-e3f4cd36c575"; } [ { device = "/dev/disk/by-uuid/a0ac8f60-25f9-4dec-af70-e3f4cd36c575"; }
]; ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
} }

6
hosts/orm/networking.nix Normal file
View file

@ -0,0 +1,6 @@
{ config, lib, pkgs, ... }:
{
networking.useNetworkd = true;
networking.interfaces.ens3.useDHCP = true;
}

19
hosts/tehanu/default.nix Normal file
View file

@ -0,0 +1,19 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./networking.nix
];
nixpkgs.hostPlatform = "aarch64-linux";
networking.hostName = "tehanu";
networking.hostId = "8e1185ab";
fountain.users.qenya.enable = true;
fountain.admins = [ "qenya" ];
qenya.base-server.enable = true;
system.stateVersion = "23.11";
}

View file

@ -0,0 +1,38 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_scsi" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "rpool_tehanu/root";
fsType = "zfs";
};
fileSystems."/nix" =
{ device = "rpool_tehanu/nix";
fsType = "zfs";
};
fileSystems."/var" =
{ device = "rpool_tehanu/var";
fsType = "zfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/629B-BA09";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
}

View file

@ -0,0 +1,6 @@
{ config, lib, pkgs, ... }:
{
networking.useNetworkd = true;
networking.interfaces.enp0s6.useDHCP = true;
}

View file

@ -1,59 +0,0 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./syncthing.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.systemd-boot.editor = false;
age.secrets.wireguard-peer-tohru.file = ../../secrets/wireguard-peer-tohru.age;
birdsong.peering = {
enable = true;
privateKeyFile = config.age.secrets.wireguard-peer-tohru.path;
persistentKeepalive = 23;
};
programs.evolution.enable = true;
qenya.services.fonts.enable = true;
qenya.services.steam.enable = true;
home-manager.users.qenya = { pkgs, ... }: {
imports = [
./home.nix
];
};
networking.networkmanager.enable = true;
i18n.defaultLocale = "en_GB.UTF-8";
console.keyMap = "uk";
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
services.xserver.xkb.layout = "gb";
services.printing.enable = true;
sound.enable = true;
hardware.pulseaudio.enable = true;
# USB drives
boot.supportedFilesystems = [ "ntfs" ];
hardware.enableAllFirmware = true;
services.fwupd.enable = true;
services.fstrim.enable = true;
boot.initrd.luks.devices = {
"rpool".device = "/dev/nvme0n1p2";
};
system.stateVersion = "23.11";
}

69
hosts/tohru/default.nix Normal file
View file

@ -0,0 +1,69 @@
{ config, lib, pkgs, inputs, ... }:
let
inherit (lib) mkForce;
in
{
imports = [
./filesystems.nix
./hardware.nix
./networking.nix
./syncthing.nix
];
nixpkgs.hostPlatform = "x86_64-linux";
networking.hostName = "tohru";
networking.hostId = "31da19c1";
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "rtsx_pci_sdmmc" ];
boot.kernelModules = [ "kvm-intel" ];
qenya.base-graphical.enable = true;
time.timeZone = "Europe/London";
i18n.defaultLocale = "en_GB.UTF-8";
console.keyMap = "uk";
services.xserver.xkb.layout = "gb";
# tohru does not have the resources to run this under other load and is generally powered off when not in use.
# instead, just run `nix-store --optimise` every so often.
nix.optimise.automatic = mkForce false;
fountain.users.qenya.enable = true;
fountain.admins = [ "qenya" ];
age.secrets.user-password-tohru-qenya.file = ../../secrets/user-password-tohru-qenya.age;
users.users.qenya.hashedPasswordFile = config.age.secrets.user-password-tohru-qenya.path;
users.users.qenya.extraGroups = [
"networkmanager" # UI wifi configuration
"dialout" # access to serial ports
];
nixpkgs.overlays = [ inputs.scoutshonour.overlays.default ];
home-manager.users.qenya = { pkgs, ... }: {
home.packages = with pkgs; [
keepassxc
apostrophe
foliate
nicotine-plus
tuba
# games
openttd
prismlauncher
scoutshonour.digital-a-love-story
scoutshonour.dont-take-it-personally-babe
];
};
qenya.services.distributed-builds = {
enable = true;
keyFile = "/etc/ssh/ssh_host_ed25519_key";
builders = [ "kilgharrah" ];
};
programs.evolution.enable = true; # not in home-manager yet; not declaratively configurable yet
programs.steam.enable = true;
system.stateVersion = "23.11";
}

View file

@ -0,0 +1,51 @@
{ config, lib, pkgs, ... }:
{
boot.initrd.luks.devices = {
"rpool".device = "/dev/nvme0n1p2";
};
boot.supportedFilesystems = [ "ntfs" ]; # for USB drives
fileSystems = {
"/" = {
device = "rpool/root";
fsType = "zfs";
};
"/nix" = {
device = "rpool/nix";
fsType = "zfs";
};
"/var" = {
device = "rpool/var";
fsType = "zfs";
};
"/config" = {
device = "rpool/config";
fsType = "zfs";
};
"/home" = {
device = "rpool/home";
fsType = "zfs";
};
"/data" = {
device = "rpool/data";
fsType = "zfs";
};
"/data/syncthing" = {
device = "rpool/data/syncthing";
fsType = "zfs";
};
"/data/steam" = {
device = "rpool/data/steam";
fsType = "zfs";
};
"/boot" = {
device = "/dev/disk/by-uuid/7DD4-487E";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
};
swapDevices = [{ device = "/dev/disk/by-uuid/a066313e-2467-4e07-ad0c-aeb7ff3f8d97"; }];
}

View file

@ -1,76 +0,0 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "rtsx_pci_sdmmc" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "rpool/root";
fsType = "zfs";
};
fileSystems."/nix" =
{ device = "rpool/nix";
fsType = "zfs";
};
fileSystems."/var" =
{ device = "rpool/var";
fsType = "zfs";
};
fileSystems."/config" =
{ device = "rpool/config";
fsType = "zfs";
};
fileSystems."/home" =
{ device = "rpool/home";
fsType = "zfs";
};
fileSystems."/data" =
{ device = "rpool/data";
fsType = "zfs";
};
fileSystems."/data/syncthing" =
{ device = "rpool/data/syncthing";
fsType = "zfs";
};
fileSystems."/data/steam" =
{ device = "rpool/data/steam";
fsType = "zfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/7DD4-487E";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/a066313e-2467-4e07-ad0c-aeb7ff3f8d97"; }
];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.eno2.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

10
hosts/tohru/hardware.nix Normal file
View file

@ -0,0 +1,10 @@
{ config, lib, pkgs, ... }:
{
hardware.enableAllFirmware = true;
hardware.cpu.intel.updateMicrocode = true;
services.fwupd.enable = true;
services.printing.drivers = [ pkgs.hplip ];
}

View file

@ -1,31 +0,0 @@
{ config, lib, pkgs, ... }:
{
dconf.enable = true;
programs = {
firefox.enable = true; # TODO: config is not yet nix-ified
vscode.enable = true;
};
home.packages = with pkgs; [
bitwarden
discord
foliate
gimp-with-plugins
jellyfin-media-player
keepassxc
tor-browser-bundle-bin
# libreoffice
libreoffice
hunspell
hunspellDicts.en_GB-ise
# games
openttd
prismlauncher
nur.repos.qenya.digital-a-love-story
nur.repos.qenya.dont-take-it-personally-babe
];
}

View file

@ -0,0 +1,8 @@
{ config, lib, pkgs, ... }:
{
networking.useNetworkd = true;
systemd.network.wait-online.enable = false;
networking.networkmanager.enable = true;
}

View file

@ -1,41 +0,0 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
age.secrets.wireguard-peer-yevaud.file = ../../secrets/wireguard-peer-yevaud.age;
birdsong.peering = {
enable = true;
privateKeyFile = config.age.secrets.wireguard-peer-yevaud.path;
};
qenya.services.forgejo = {
enable = true;
domain = "git.qenya.tel";
stateDir = "/data/forgejo";
};
services.nginx = {
enable = true;
virtualHosts = {
"git.katherina.rocks" = {
forceSSL = true;
enableACME = true;
locations."/".return = "301 https://git.qenya.tel$request_uri";
};
"birdsong.network" = {
forceSSL = true;
enableACME = true;
locations."/".return = "301 https://git.qenya.tel/qenya/birdsong/";
};
};
};
system.stateVersion = "23.11";
}

49
hosts/yevaud/default.nix Normal file
View file

@ -0,0 +1,49 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./networking.nix
./experiments/pennykettle.nix
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
networking.hostName = "yevaud";
networking.hostId = "09673d65";
fountain.users.qenya.enable = true;
fountain.admins = [ "qenya" ];
qenya.base-server.enable = true;
qenya.services.distributed-builds = {
enable = true;
keyFile = "/etc/ssh/ssh_host_ed25519_key";
builders = [ "kilgharrah" ];
};
nix.settings.max-jobs = 0;
randomcat.services.zfs.datasets = {
"rpool/state" = { mountpoint = "none"; };
"rpool/state/forgejo" = { mountpoint = "/var/lib/forgejo"; };
};
services.sanoid.datasets."rpool/state" = {
useTemplate = [ "production" ];
recursive = "zfs";
};
qenya.services.forgejo = {
enable = true;
domain = "git.unspecified.systems";
};
fountain.services.web-redirect = {
enable = true;
domains = {
"git.katherina.rocks" = "git.unspecified.systems";
"git.qenya.tel" = "git.unspecified.systems";
};
};
system.stateVersion = "23.11";
}

View file

@ -0,0 +1,66 @@
{ config, lib, pkgs, ... }:
{
networking.firewall.allowedUDPPorts = [ 51820 ];
networking.firewall.interfaces."tailscale0".allowedTCPPorts = config.networking.firewall.allowedTCPPorts ++ [ 1080 ];
environment.systemPackages = [ pkgs.wireguard-tools ];
networking.wireguard.interfaces."wg-protonvpn" = {
ips = [ "10.2.0.2/32" ];
peers = [{
allowedIPs = [ "0.0.0.0/0" "::/0" ];
endpoint = "217.138.216.162:51820";
publicKey = "C+u+eQw5yWI2APCfVJwW6Ovj3g4IrTOfe+tMZnNz43s=";
}];
privateKeyFile = config.age.secrets.protonvpn-pennykettle1.path;
listenPort = 51820;
table = "957851094"; # randomly generated
};
networking.localCommands = ''
ip rule add from 10.2.0.2/32 table 957851094
'';
networking.firewall.checkReversePath = "loose";
age.secrets.protonvpn-pennykettle1 = {
file = ../../../secrets/protonvpn-pennykettle1.age;
owner = "root";
group = "systemd-network";
mode = "640";
};
services.dante = {
enable = true;
config = ''
debug: 2
internal: tailscale0
external: wg-protonvpn
# auth/tls handled by tailscale
clientmethod: none
socksmethod: none
# allow connections from tailscale
# "0/0" matches any v4 or v6 address
client pass {
from: 100.64.0.0/10 to: 0/0
log: error connect disconnect
}
client pass {
from: fd7a:115c:a1e0::/48 to: 0/0
log: error connect disconnect
}
socks pass {
from: 0/0 to: 0/0
protocol: tcp udp
log: error connect disconnect iooperation
}
'';
};
systemd.services.dante = {
wants = [ "tailscaled-autoconnect.service" ];
after = [ "tailscaled-autoconnect.service" ];
};
}

View file

@ -28,11 +28,6 @@
fsType = "zfs"; fsType = "zfs";
}; };
fileSystems."/data/forgejo" =
{ device = "rpool/forgejo";
fsType = "zfs";
};
fileSystems."/boot" = fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/107D-5AB3"; { device = "/dev/disk/by-uuid/107D-5AB3";
fsType = "vfat"; fsType = "vfat";
@ -42,13 +37,4 @@
swapDevices = swapDevices =
[ { device = "/dev/disk/by-uuid/f8b6eb35-33ad-4e19-bf3d-cac5ec38a8dc"; } [ { device = "/dev/disk/by-uuid/f8b6eb35-33ad-4e19-bf3d-cac5ec38a8dc"; }
]; ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
} }

View file

@ -0,0 +1,5 @@
{ config, lib, pkgs, ... }:
{
networking.interfaces.ens3.useDHCP = true;
}

View file

@ -1,19 +1,34 @@
{ {
machines = { machines = {
reese = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPd0qGxvcMLDwX1bqYpwOUL5c/CIgBllMFr+bGkwiwAn root@reese";
bear = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIZ9Kn1CIcDHaleKHf7zO6O30Rbxs/FwL0/Ie+mEjZJr root@bear";
shaw = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMC0AomCZZiUV/BCpImiV4p/vGvFaz5QNc+fJLXmS5p root@shaw";
groves = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPQNZ/Q+x7mDYfYXftpZpWkfPByyMBbYmVFobM4vSDW2 root@groves";
tohru = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOk8wuGzF0Y7SaH9aimo3SmCz99MTQwL+rEVhx0jsueU root@tohru"; tohru = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOk8wuGzF0Y7SaH9aimo3SmCz99MTQwL+rEVhx0jsueU root@tohru";
yevaud = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICHUAgyQhl390yUObLUI+jEbuNrZ2U6+8px628DolD+T root@yevaud"; yevaud = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICHUAgyQhl390yUObLUI+jEbuNrZ2U6+8px628DolD+T root@yevaud";
orm = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGc9rkcdOVWozBFj3kLVnSyUQQbyyH+UG+bLawanQkRQ root@orm"; orm = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGc9rkcdOVWozBFj3kLVnSyUQQbyyH+UG+bLawanQkRQ root@orm";
kalessin = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOPt3iSSmgnlsv1/jafgZgI7o8UuXzcAL45hID2ThfS8 root@kalessin";
tehanu = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ1fNylfLo7Z8m/DroRlj7cHMLhYL7boP3r/upVrtMJQ root@tehanu";
kilgharrah = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOgGF3gzzlMbxxk3UAAgHJ7sDdjqtrw7UW16M1XhXtz2 root@kilgharrah";
elucredassa = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA+Y/vqGNc1wXUAg4XMAAcLupkggywj2LpYDwA16ONbH root@elucredassa";
carter = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEHHHYG6A995Po05+JXQsvB79ZoIiSOJnW6AiJgVYPic root@carter";
}; };
users = { users = {
qenya = [ qenya = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjBuuxo+w3yED0aPnsNb8S90p/GgBqFEG9K4ETZ5Wkq qenya@kilgharrah"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJEmkV9arotms79lJPsLHkdzAac4eu3pYS08ym0sB/on qenya@tohru" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJEmkV9arotms79lJPsLHkdzAac4eu3pYS08ym0sB/on qenya@tohru"
]; ];
randomcat = [ randomcat = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDHagOaeTR+/7FL9sErciMw30cmV/VW8HU7J3ZFU5nj9 janet@randomcat.org" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDHagOaeTR+/7FL9sErciMw30cmV/VW8HU7J3ZFU5nj9 janet@randomcat.org"
]; ];
richard = [ trungle = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAA57legzdIcYTVVri4Wc0CvgWefbRhmUqhu0F/5f8FB reuben@glenda-artix"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHAuYWPfYVKdjBY/gBMt2n11Seb+hMqjui1PQ6C4ph8i richard@tress" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHAuYWPfYVKdjBY/gBMt2n11Seb+hMqjui1PQ6C4ph8i richard@tress"
]; ];
gaelan = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDFbDvPKnPXe+58QgdgK8yZ3Ac9dkJdtHJ3pQwWhszM7McwCzCEO/b940K0orLjfeUruC+hGJZO8heIh0J6JwSK907aS2wpHofU9q7bMT0PYeuHrSb2iFrOFIkTIWpO8hnWad8TGKOlOdNTKEdB9zwxXEKTFb9QW1Z27Zql79W44jUvaOTb7gKUps37O77lHEJDModaRsXS2523pSbrTZKDwZ73+S0ECeNUwwzLUyOOUHfENEXnM18hWm8mV0iU7kxFcmS33z9rWlWPNiCXnBnSi5LPgBarYOAqQf56f9OisafKqvc3uX+yn0kGCDWglVGUkbhfSIP9+w+yv/h/NJWIJlJC92ndbktAqAQW4gb7lXYxpbdoWcmqEy97q0e2vyBdhcVXwZ+0q+U8I74m8trq36ieHDtLKYkiFBX6zvrLP4I5OZU+EecdV2HcMoU8HNa5u1mvG+oHaEgkR70a5cQtrPzWLS/OMLqvWL39vO7RNskzwWCSuWScxDGitr+BunRRbL4aKNkkPjdDlIqb/SfSrFikOo75f5Ku4I32nbM7SNpIjA4cHe50rx1UB8lT+RwHdxL99OdoxIPCe6OLA5uT8VGPXkvqd/ZIFOL2HaM+uPLaYbjwLrHlwSOLgGbehmsSD369EXv6NAc5wbzsSLJQhJ66d5unnzGjn4dRt9sbDw== gbs@canishe.com"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHId+2dJYiZK++p8lu9Bax0J29JjeuU4qcIBdLwEz3lm gbs@canishe.com"
];
}; };
} }

View file

@ -1,80 +0,0 @@
# Generated by npins. Do not modify; will be overwritten regularly
let
data = builtins.fromJSON (builtins.readFile ./sources.json);
version = data.version;
mkSource =
spec:
assert spec ? type;
let
path =
if spec.type == "Git" then
mkGitSource spec
else if spec.type == "GitRelease" then
mkGitSource spec
else if spec.type == "PyPi" then
mkPyPiSource spec
else if spec.type == "Channel" then
mkChannelSource spec
else
builtins.throw "Unknown source type ${spec.type}";
in
spec // { outPath = path; };
mkGitSource =
{
repository,
revision,
url ? null,
hash,
branch ? null,
...
}:
assert repository ? type;
# At the moment, either it is a plain git repository (which has an url), or it is a GitHub/GitLab repository
# In the latter case, there we will always be an url to the tarball
if url != null then
(builtins.fetchTarball {
inherit url;
sha256 = hash; # FIXME: check nix version & use SRI hashes
})
else
assert repository.type == "Git";
let
urlToName =
url: rev:
let
matched = builtins.match "^.*/([^/]*)(\\.git)?$" repository.url;
short = builtins.substring 0 7 rev;
appendShort = if (builtins.match "[a-f0-9]*" rev) != null then "-${short}" else "";
in
"${if matched == null then "source" else builtins.head matched}${appendShort}";
name = urlToName repository.url revision;
in
builtins.fetchGit {
url = repository.url;
rev = revision;
inherit name;
# hash = hash;
};
mkPyPiSource =
{ url, hash, ... }:
builtins.fetchurl {
inherit url;
sha256 = hash;
};
mkChannelSource =
{ url, hash, ... }:
builtins.fetchTarball {
inherit url;
sha256 = hash;
};
in
if version == 3 then
builtins.mapAttrs (_: mkSource) data.pins
else
throw "Unsupported format version ${toString version} in sources.json. Try running `npins upgrade`"

View file

@ -1,17 +0,0 @@
{
"pins": {
"nur": {
"type": "Git",
"repository": {
"type": "GitHub",
"owner": "nix-community",
"repo": "NUR"
},
"branch": "master",
"revision": "6cbb9fb9c5d55fa2af9a5b0d3185d56c90ad62aa",
"url": "https://github.com/nix-community/NUR/archive/6cbb9fb9c5d55fa2af9a5b0d3185d56c90ad62aa.tar.gz",
"hash": "1w1n56p4hbq1zlz8hiw3169kxsw4cn5maahlk8vdzprs498f69kg"
}
},
"version": 3
}

View file

@ -1,19 +1,18 @@
let let
keys = import ./keys.nix; keys = import ./keys.nix;
commonKeys = keys.users.qenya;
secrets = with keys; { secrets = with keys; {
wireguard-peer-orm = [ machines.orm ]; ftp-userDb-qenya = [ machines.kilgharrah ] ++ keys.users.qenya;
wireguard-peer-tohru = [ machines.tohru ]; user-password-kilgharrah-qenya = [ machines.kilgharrah ] ++ keys.users.qenya;
wireguard-peer-yevaud = [ machines.yevaud ]; user-password-tohru-qenya = [ machines.tohru ] ++ keys.users.qenya;
protonvpn-pennykettle1 = [ machines.yevaud ] ++ keys.users.qenya;
}; };
in in
builtins.listToAttrs ( builtins.listToAttrs (
map map
(secretName: { (secretName: {
name = "secrets/${secretName}.age"; name = "secrets/${secretName}.age";
value.publicKeys = secrets."${secretName}" ++ commonKeys; value.publicKeys = secrets."${secretName}";
}) })
(builtins.attrNames secrets) (builtins.attrNames secrets)
) )

Binary file not shown.

View file

@ -0,0 +1,9 @@
age-encryption.org/v1
-> ssh-ed25519 uJfgGw +h4WiWyMlQZ5iaMFTl/whUD0vJnIN0GYeqRbZ0MIH0o
eKio4DsSJlrvSAjmR0naDO/lmB78o7cy7QC9WZjHUa0
-> ssh-ed25519 seJ9Iw xov8WY0TxEj5/wkWg1T0kmrbpXsNhDLnZwqyIg0eExA
wu5QApQk6K8Fu5XMTrWY2veoYbJVuQmn3DJXewVB860
-> ssh-ed25519 900ILw N6RbpHr4Vwgm0BUCuMXzVo3VEgrl29NF8ZJU5Far7yk
KdA1dZXmcSF3cH9bVdmIbj7iZO3uuSY+isjswDzSu+Y
--- YtnS9FqXVat2hi9BLvX+71HEZDw3zcxIQ7Dp5+iao4c
¢¼ða'þš|<7C>‡N7N”†ÊT5]O¤0Säm<-1ë»ëª:d®„g¡^/ä†u7µïNû?XþMçûìÄì~Þs.9c¾C

Binary file not shown.

Binary file not shown.

View file

@ -1,10 +0,0 @@
age-encryption.org/v1
-> ssh-ed25519 l/RSAw +h2Jz8m9ZEklGxWK8HcixO3+D4AVATPI3m3wE1ITviM
US+J+FDPJ/nmLT1ylRGfXyfjiJRgLpdgCg1L3IPrmrc
-> ssh-ed25519 900ILw bX/KdX53EFQCmWI0MU/wKfzqKmAw+/fMs4/955iYOlw
7epwHu5g+p6BHe/ksaA9MAvpneZBwHeqnMtSc1m3FFY
-> !V-grease &x6T2i d0B}!
tkT/G8gEKyx280vDO1QgG5ERBCkR9XCgk8IIE1AeBONi9eo+Z0sGfNHv2DXFx14B
TcKX31wDmUbtv8j+4d7722YeZ4jvKiSuQA38zLREOGJyhA
--- TR/GFMXQ4N6AMuScg8LSednd6jAJugxgCJLegPtFmgI
4>?(Yë×Ã|R5V¡×ù«  ôן4<C5B8>Å'æ[¤K<5F>ë,ϧ —ÅT²Ïkº5öåTC~c×*D[N䃼Þá<ê

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