Compare commits

...

351 commits

Author SHA1 Message Date
Katherina Walshe-Grey 4f82380855 Remove rudimentary netbox module
Accidentally committed a while ago
2025-04-08 17:22:10 +01:00
Katherina Walshe-Grey 8f8f2556a0 Revert "kanidm: init"
This reverts commit 9968717824.
2025-04-07 15:21:14 +01:00
Katherina Walshe-Grey 61d86b7f57 flake: pin lix version 2025-04-07 15:20:17 +01:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 9968717824 kanidm: init 2025-04-03 08:04:22 +01:00
Katherina Walshe-Grey dc7fdfb7ea gpg: init 2025-03-19 17:17:51 +00:00
Katherina Walshe-Grey 780a18f627 qenya/vscode: rust-analyzer support 2025-03-18 13:14:50 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey d8e85815bd users: custom property to define users with root 2025-03-17 02:57:15 +00:00
Katherina Walshe-Grey 55000c365a web-redirect: init new service for simple domain redirects 2025-03-17 02:25:28 +00:00
Katherina Walshe-Grey addbf7ac3e orm: move actual.qenya.tel -> actual.unspecified.systems 2025-03-17 02:01:22 +00:00
Katherina Walshe-Grey 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':
    '2837da71ec.tar.gz?narHash=sha256-CCKIAE84dzkrnlxJCKFyffAxP3yfsOAbdvydUGqq24g%3D&rev=2837da71ec1588c1187d2e554719b15904a46c8b' (2025-01-18)
  → '079528098f.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
Katherina Walshe-Grey df688efb79 Update README.md 2025-03-15 19:58:34 +00:00
Katherina Walshe-Grey c14b57b186 Update README 2025-03-15 19:55:30 +00:00
Katherina Walshe-Grey 6c7bdfa061 qenya/vscode: minor CSS default formatter changes 2025-03-15 19:55:22 +00:00
Katherina Walshe-Grey 424de492d7 yevaud: move git.qenya.tel -> git.unspecified.systems 2025-03-15 12:29:30 +00:00
Katherina Walshe-Grey 24faa7cc26 orm: add missing postgresql auth method 2025-03-08 00:02:07 +00:00
Katherina Walshe-Grey 1b66df659e elucredassa: add missing dataset for backups from kalessin 2025-03-07 23:51:51 +00:00
Katherina Walshe-Grey d1b1e0f0ca orm: temporarily disable SSL on postgres 2025-03-07 23:39:34 +00:00
Katherina Walshe-Grey 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':
    '072a6db25e.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
Katherina Walshe-Grey 789324923b orm: install postgres 2025-03-07 22:02:34 +00:00
Katherina Walshe-Grey 9760d4d3bc actual: hardcode domain 2025-03-04 19:46:37 +00:00
Katherina Walshe-Grey 86f77d2564 kalessin: add new state dataset 2025-03-04 19:45:03 +00:00
Katherina Walshe-Grey d36c87220b orm: don't snapshot the empty root dataset for /var/lib 2025-03-04 19:44:50 +00:00
Katherina Walshe-Grey 373bd88e1b backup: hoist variable definitions, add source to target's knownHosts 2025-03-04 18:12:44 +00:00
Katherina Walshe-Grey fefc7bd20d backup: init as a reusable module 2025-03-04 14:43:03 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey c70b287890 treewide: define fqdn, use as default deployment target host 2025-03-03 19:54:32 +00:00
Katherina Walshe-Grey a700ee2445 flake: Use flake-parts to define devShells cross-system 2025-02-26 21:03:57 +00:00
Katherina Walshe-Grey 17402985b6 qenya/zsh: use direnv to load local dev shells 2025-02-26 11:07:53 +00:00
Katherina Walshe-Grey 8e4b0d26b3 qenya/vscode: settings for python formatting and linting 2025-02-26 11:07:21 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 1bdb16c788 orm, elucredassa: minor cleanup to backup prototype 2025-02-08 03:45:17 +00:00
Katherina Walshe-Grey 3ec0a2fcb9 orm, elucredassa: prototype backups for actual 2025-02-08 03:04:57 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 2d42894fa7 nix: add @wheel to trusted-users everywhere 2025-02-04 17:20:19 +00:00
Katherina Walshe-Grey b04e6d1313 elucredassa, kilgharrah: set up remote builds for elucredassa 2025-02-04 16:42:33 +00:00
Katherina Walshe-Grey 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':
    'ad9d06f783.tar.gz?narHash=sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U%3D&rev=ad9d06f7838a25beec425ff406fe68721fef73be' (2024-10-19)
  → '2837da71ec.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
Katherina Walshe-Grey 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
Katherina Walshe-Grey 6c3a225666 flake: Add address for elucredassa 2025-01-22 00:27:30 +00:00
Katherina Walshe-Grey 8f3b3adac1 elucredassa: Get IPv6 connectivity through HE.net tunnel broker 2025-01-21 23:19:15 +00:00
Katherina Walshe-Grey 19561f0e69 nix: permit "insecure" electron-31 2025-01-21 19:55:15 +00:00
Katherina Walshe-Grey 4788c84cd9 elucredassa: connect to birdsong 2025-01-21 18:06:54 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 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
Katherina Walshe-Grey 0665be0db9 elucredassa: don't sleep when lid shut 2025-01-21 13:59:21 +00:00
Katherina Walshe-Grey c021f4dc3d elucredassa: enable swap 2025-01-20 20:32:37 +00:00
Katherina Walshe-Grey 30bdb5dd7f elucredassa: set timezone to UTC 2025-01-20 18:39:36 +00:00
Katherina Walshe-Grey 2a7baa9b62 elucredassa: init 2025-01-20 18:30:48 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 08e09ce55b tohru: re-enable nix gc (but not nix optimise) 2025-01-05 15:43:49 +00:00
Katherina Walshe-Grey 2cad2dd614 qenya/vscode: reformat to separate golang config 2025-01-05 15:42:57 +00:00
Katherina Walshe-Grey 6b2871b27f qenya/vscode: insert newline at eof on save 2025-01-05 15:37:18 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey db74ab7f42 flake: make colmena perform evaluation with lix instead of cppNix 2025-01-05 15:01:34 +00:00
Katherina Walshe-Grey 96d16a8830 tohru: disable automatic nix store maintenance 2025-01-05 14:28:28 +00:00
Katherina Walshe-Grey eb557507d0 misc: garbage-collect nixos profiles older than 30 days 2025-01-05 14:27:55 +00:00
Katherina Walshe-Grey 473e113c4f kilgharrah: replace failed HDD 2025-01-04 19:28:02 +00:00
Katherina Walshe-Grey e078b80e24 qenya/packages: install eza, hexyl 2025-01-04 19:27:09 +00:00
Katherina Walshe-Grey 6a47840cd7 packages: rename from environment, install smartmontools 2025-01-04 19:26:36 +00:00
Katherina Walshe-Grey fc245b4619 kilgharrah: disable services related to failing HDD 2024-12-30 19:49:30 +00:00
Katherina Walshe-Grey 6168cd0f30 nginx, yevaud/birdsong-dns: use monitoring email
Closes #1
2024-12-27 14:09:14 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 0ffdc3de71 flake: remove dependency on NUR
Closes #16
2024-12-27 13:53:31 +00:00
Katherina Walshe-Grey 39edcc3801 qenya/firefox: get firefox addons direct from rycee instead of NUR 2024-12-27 13:51:25 +00:00
Katherina Walshe-Grey 7b7e8683b3 tohru: get scoutshonour games from their own repo instead of NUR 2024-12-27 13:09:22 +00:00
Katherina Walshe-Grey e31fb0fc24 yevaud: disable pennykettle experiment as it breaks external IPv6 2024-12-27 03:35:30 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 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
Katherina Walshe-Grey c6a16f25ef qenya/dconf: allow sound over 100% 2024-12-27 01:38:14 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey ccf07affd6 kalessin: allow login from randomcat 2024-12-25 03:03:56 +00:00
Katherina Walshe-Grey 569b7bb812 kilgharrah: update nvidia driver config for 24.11 2024-12-25 02:35:32 +00:00
Katherina Walshe-Grey 0d52d2ab5c flake: switch back to birdsong main branch 2024-12-25 02:34:20 +00:00
Katherina Walshe-Grey 1eaa7d2287 flake: colmena compat with CppNix 2.24 2024-12-25 00:03:49 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey c3f990478c flake: update to 24.11 and zero out some unused dependencies 2024-12-24 23:23:21 +00:00
Katherina Walshe-Grey 3b5348edc3 yevaud, orm: force build with remote builder 2024-12-24 23:19:01 +00:00
Katherina Walshe-Grey ee7ccef96c flake: switch to building on target by default 2024-12-24 17:59:04 +00:00
Katherina Walshe-Grey 345bf13b0d treewide: snapshot important datasets with sanoid 2024-12-24 17:47:34 +00:00
Katherina Walshe-Grey 715b3f799a qenya/vscode: pin golang-ci 2024-12-10 22:59:44 +00:00
Katherina Walshe-Grey a206f63e68 yevaud: add experimental container with networking over vpn 2024-12-04 19:46:22 +00:00
Katherina Walshe-Grey 61288d4675 yevaud: move dns experiment to separate file 2024-12-04 19:46:22 +00:00
Katherina Walshe-Grey efa2ce3940 nix: use same nixpkgs flake for imperative commands as for build 2024-12-04 14:34:01 +00:00
Katherina Walshe-Grey 98b43911f0 users: add gaelan 2024-11-25 18:56:00 +00:00
Katherina Walshe-Grey c573da7c34 misc: tone down aggression on nix garbage collector 2024-11-24 15:36:30 +00:00
Katherina Walshe-Grey c5472892d8 tohru, kilgharrah: add HP printer drivers 2024-11-18 07:13:54 +00:00
Katherina Walshe-Grey fa6465e563 qenya/xdg-mime-apps: file association for .pdf 2024-11-17 21:43:05 +00:00
Katherina Walshe-Grey 7a0f60f828 switch from CppNix to Lix 2024-11-16 01:57:58 +00:00
Katherina Walshe-Grey 05864180db treewide: rationalise distributed builds 2024-11-16 01:54:41 +00:00
Katherina Walshe-Grey b25aa75d37 kilgharrah: use as remote builder 2024-11-16 01:40:17 +00:00
Katherina Walshe-Grey 8ec6f47367 yevaud, orm: remote builds on kalessin 2024-11-15 23:48:29 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey ea5b59bbe9 secrets: rekey all 2024-11-15 18:33:11 +00:00
Katherina Walshe-Grey c60b753c5c set up distributed builds 2024-11-15 18:28:08 +00:00
Katherina Walshe-Grey d69e1dcc16 users: enable users per-host 2024-11-14 13:42:36 +00:00
Katherina Walshe-Grey 80fcd62ba4 kilgharrah/networking: enable keepalive to help with NAT 2024-11-12 20:42:35 +00:00
Katherina Walshe-Grey 5cfd5a7a7c kilgharrah: install obs-studio 2024-11-12 11:14:20 +00:00
Katherina Walshe-Grey f9f262a856 qenya/vscode: use golangci-lint to lint go files 2024-11-12 11:14:08 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 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
Katherina Walshe-Grey 9b63a5e56f audiobookshelf: fix websockets and CSP 2024-11-09 01:05:55 +00:00
Katherina Walshe-Grey b893da35be kalessin, kilgharrah: add to wireguard network 2024-11-05 19:23:53 +00:00
Katherina Walshe-Grey 052b0c1c4f yevaud, orm, kalessin: split networking to separate file 2024-11-05 19:05:27 +00:00
Katherina Walshe-Grey 9cfe6e2c4c treewide: migrate networking to systemd-networkd 2024-11-05 18:31:39 +00:00
Katherina Walshe-Grey 955409c8ef qenya: install zip/unzip 2024-11-05 14:31:17 +00:00
Katherina Walshe-Grey f56a5389de qenya/vscode: settle on a colour scheme 2024-11-04 22:22:03 +00:00
Katherina Walshe-Grey 8690b4f610 qenya/vscode: pin more go dev dependencies 2024-11-04 22:21:46 +00:00
Katherina Walshe-Grey ee33352462 base-graphical: enable avahi for printer autodiscovery 2024-11-03 09:48:48 +00:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 65884ecbfd qenya/vscode: don't leak runtime dependencies into general PATH 2024-10-21 19:18:39 +01:00
Katherina Walshe-Grey 390a60f598 kilgharrah: add commented-out custom nvidia driver
keeping in the repo for future testing
2024-10-21 12:43:34 +01:00
Katherina Walshe-Grey 0ef661aae7 kilgharrah: serve audiobookshelf 2024-10-15 22:51:46 +01:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 8823cd9b36 kilgharrah: move all zfs dataset declarations to one place 2024-10-08 10:54:02 +01:00
Katherina Walshe-Grey acf451a1c9 tohru: move qenya home-manager config into default.nix 2024-10-08 10:53:44 +01:00
Katherina Walshe-Grey 84fb7727da qenya/packages: rename from cli, include common graphical packages 2024-10-08 10:46:05 +01:00
Katherina Walshe-Grey ecd98229ff kilgharrah, tohru: install feishin 2024-10-08 01:29:30 +01:00
Katherina Walshe-Grey 82787cea45 kilgharrah: serve navidrome 2024-10-08 01:28:49 +01:00
Katherina Walshe-Grey 2a2f1674a3 qenya/xdg-mime-apps: file association for .zip 2024-10-07 23:31:55 +01:00
Katherina Walshe-Grey 5c7d371ea5 misc: init with fstrim and nix store optimisation 2024-10-07 21:29:25 +01:00
Katherina Walshe-Grey bb2b59cd20 kilgharrah/networking: switch on systemd-networkd debugging
hoping this will help diagnose an issue
2024-10-06 19:07:20 +01:00
Katherina Walshe-Grey cdcdccb465 qenya/zsh: don't clobber with mv or rename 2024-10-02 17:04:27 +01:00
Katherina Walshe-Grey 5a617f9cb3 kilgharrah: set up jellyfin 2024-10-02 17:02:35 +01:00
Katherina Walshe-Grey 4f85fb54d8 kilgharrah: enable fstrim and nvidia drivers 2024-10-01 19:44:31 +01:00
Katherina Walshe-Grey 5e1cfc3997 boot: fix attempt to install memtest86+ on non-x86 hardware 2024-10-01 19:30:21 +01:00
Katherina Walshe-Grey cd84be16be treewide: refactor bootloader config to common file 2024-10-01 19:20:34 +01:00
Katherina Walshe-Grey 1b18133585 kilgharrah: install gimp-with-plugins, jellyfin-media-player 2024-09-29 17:59:31 +01:00
Katherina Walshe-Grey 4e7ec3d571 tohru: install nicotine-plus 2024-09-28 07:42:19 +01:00
Katherina Walshe-Grey 56bdf36abd keys: add kalessin, shaw; update trungle 2024-09-28 07:42:07 +01:00
Katherina Walshe-Grey ab035dcd5b kilgharrah: set up ftp server 2024-09-28 05:08:12 +01:00
Katherina Walshe-Grey 309e44aa8a flake.nix: rationalise nixpkgs versions 2024-09-26 13:40:33 +01:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 7ce034f2d0 flake.nix: only expose self to nixos modules, not all inputs 2024-09-26 12:36:09 +01:00
Katherina Walshe-Grey 8b04d9039e orm: serve actual 2024-09-26 12:16:33 +01:00
Katherina Walshe-Grey 59bbcc165e nginx: expand default CSP
this is required to run wasm and web workers
2024-09-26 12:15:49 +01:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 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
Katherina Walshe-Grey 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
Katherina Walshe-Grey 26900a5973 steam: lightly refactor 2024-09-24 05:29:21 +01:00
Katherina Walshe-Grey 2951f948b4 kilgharrah: set up zfs datasets using randomcat's module 2024-09-24 04:49:25 +01:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey f4912efaaa switch to agenix trunk 2024-09-23 23:58:36 +01:00
Katherina Walshe-Grey 5ef9816a34 kilgharrah: enable zfs, luksdev 2024-09-23 23:22:48 +01:00
Katherina Walshe-Grey 4f99cc5102 fix agenix pathspec 2024-09-23 23:22:32 +01:00
Katherina Walshe-Grey 002b136ae8 qenya: install units 2024-09-20 15:58:24 +01:00
Katherina Walshe-Grey 4dbe61e97a yevaud: add experimental BIND config 2024-09-19 23:25:35 +01:00
Katherina Walshe-Grey 58109130e6 base-graphical/desktop: refactor 2024-09-19 23:23:46 +01:00
Katherina Walshe-Grey d7142d8619 qenya/xdg-mime-apps: open mailto links in evolution 2024-09-19 23:21:42 +01:00
Katherina Walshe-Grey 9813aaf27b kilgharrah: disable autosuspend 2024-09-19 23:06:40 +01:00
Katherina Walshe-Grey 8cbfb51930 move deployment config 2024-09-19 23:06:08 +01:00
Katherina Walshe-Grey bbb3bd3c16 kilgharrah: fix networking 2024-09-19 21:55:22 +01:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 6a1597aee8 Update README.md 2024-09-18 19:38:59 +01:00
Katherina Walshe-Grey e713fe3b2c nix, home-manager: move common config out of flake.nix 2024-09-18 19:38:20 +01:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 28698d1a60 yevaud, orm, kalessin: switch to nixpkgs-small 2024-09-18 19:03:35 +01:00
Katherina Walshe-Grey ad1f4d2cc5 deduplicate flake outputs 2024-09-18 18:58:04 +01:00
Katherina Walshe-Grey a938b33679 export nixos configurations as standard flake outputs 2024-09-18 03:49:56 +01:00
Katherina Walshe-Grey f6010a968c treewide: specify hostname in host configs 2024-09-18 03:13:34 +01:00
Katherina Walshe-Grey 9f6d0fbaf8 treewide: move all deployment keys to flake.nix 2024-09-18 03:06:48 +01:00
Katherina Walshe-Grey 32dabca83f don't import universal config in host-specific homeManagerModules 2024-09-17 19:11:57 +01:00
Katherina Walshe-Grey 3849eeb37b export homeManagerModules."qenya@shaw" 2024-09-17 18:57:02 +01:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey a6359fdd36 export home-manager config from homeManagerModules 2024-09-17 18:40:15 +01:00
Katherina Walshe-Grey f4da07c4e6 move all host-specific configuration to hosts directory 2024-09-17 17:22:58 +01:00
Katherina Walshe-Grey 7189fae109 qenya: plasma: workaround for issue in randomcat's config 2024-09-15 17:40:19 +01:00
Katherina Walshe-Grey cbb44fd11d tohru: install amberol 2024-09-15 16:40:16 +01:00
Katherina Walshe-Grey 3658b0073c qenya: xdg-mime-apps: open text files in DE text editor 2024-09-15 16:40:16 +01:00
Katherina Walshe-Grey f4228d9926 correct flake-compat hash 2024-09-15 16:37:30 +01:00
Katherina Walshe-Grey 251560f761 qenya: declaratively define more of GNOME config
Closes #3
2024-09-12 15:41:43 +01:00
Katherina Walshe-Grey 752fce2538 qenya: zsh: automatically run nix-shell when necessary
Closes #9
2024-09-12 13:55:15 +01:00
Katherina Walshe-Grey 4a9e6b5f3c move tooling to dev environment 2024-09-12 13:35:35 +01:00
Katherina Walshe-Grey a0a94b86ff home-manager: rearrange config 2024-09-12 12:56:30 +01:00
Katherina Walshe-Grey 9fa74d52c1 qenya: xdg-mime-apps: make default app configuration declarative 2024-09-12 12:44:58 +01:00
Katherina Walshe-Grey afb16a55f3 home-manager: automatically back up overwritten files 2024-09-12 12:44:42 +01:00
Katherina Walshe-Grey 19f0d81b9b qenya: vscode: automatically fetch new flake inputs in nix repos 2024-09-12 12:22:44 +01:00
Katherina Walshe-Grey b18e50fd4a add plasma-manager for plasma config 2024-09-12 11:42:31 +01:00
Katherina Walshe-Grey cb6d7f7837 firefox: disable built-in password management 2024-09-12 11:40:24 +01:00
Katherina Walshe-Grey a2cb35148c pipewire-low-latency: split to reusable module 2024-09-12 11:38:17 +01:00
Katherina Walshe-Grey c5261caa21 base-graphical: include settings for fonts, libinput, printing 2024-09-11 15:06:41 +01:00
Katherina Walshe-Grey 9e638c009f base-graphical: add desktop manager config 2024-09-11 06:36:21 +01:00
Katherina Walshe-Grey aeab801602 base-graphical: init with pipewire config 2024-09-11 05:43:35 +01:00
Katherina Walshe-Grey 3fc4efab9c rename sysadmin module to base-server 2024-09-11 05:17:19 +01:00
Katherina Walshe-Grey 5fefab9707 kilgharrah: switch from pulseaudio to pipewire 2024-09-10 22:40:07 +01:00
Katherina Walshe-Grey 5a71df020e kilgharrah: install zoom 2024-09-08 20:58:53 +01:00
Katherina Walshe-Grey 9a27610757 kilgharrah: install firefox, steam 2024-09-06 02:51:58 +01:00
Katherina Walshe-Grey 5290f25062 steam: move to common config 2024-09-06 02:50:40 +01:00
Katherina Walshe-Grey 4bb4780186 firefox: declaratively define important settings & extensions
Closes #4
2024-09-06 02:38:28 +01:00
Katherina Walshe-Grey 48a5083a02 nixpkgs, home-manager: return nixpkgs config to flake.nix 2024-09-06 02:37:34 +01:00
Katherina Walshe-Grey 39d73b4ed7 kilgharrah: disallow remote deployment 2024-09-05 00:20:49 +01:00
Katherina Walshe-Grey 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
Katherina Walshe-Grey 92f5b74584 kilgharrah: update deprecated option name 2024-09-04 23:43:56 +01:00
Katherina Walshe-Grey 5e2e28cbe9 kilgharrah: networking: switch from networkmanager to systemd-networkd 2024-09-04 23:38:58 +01:00
Katherina Walshe-Grey 09087ba199 kilgharrah: rearrange and split up configuration 2024-09-04 23:31:02 +01:00
Katherina Walshe-Grey 84e44962ee kilgharrah: install bitwarden, discord, tor-browser-bundle-bin 2024-09-04 20:57:32 +01:00
Katherina Walshe-Grey 0978b62de6 keys: add kilgharrah@tohru 2024-09-04 19:39:31 +01:00
Katherina Walshe-Grey 5e756c82e7 kilgharrah: init 2024-09-04 19:14:47 +01:00
Katherina Walshe-Grey d112e705f1 tohru: rearrange and split up configuration 2024-08-30 18:22:13 +01:00
Katherina Walshe-Grey 444c69edd3 zsh: condition on user qenya being present 2024-08-29 19:59:13 +01:00
Katherina Walshe-Grey 12a4c20625 qenya: vscode: add gitlens 2024-08-29 19:58:13 +01:00
Katherina Walshe-Grey 4c07feb21a nixpkgs: init config as separate file 2024-08-29 19:27:45 +01:00
Katherina Walshe-Grey 4ed696e5b1 sysadmin: specify UTC timezone 2024-08-29 19:26:57 +01:00
Katherina Walshe-Grey 96f4062991 tohru: install zoom-us 2024-08-29 18:37:37 +01:00
Katherina Walshe-Grey 766aa146df users: change to immutable users 2024-08-29 18:27:43 +01:00
Katherina Walshe-Grey 66cc74e388 users: define extraGroups per-host 2024-08-29 17:56:13 +01:00
Katherina Walshe-Grey f5191640f5 home-manager: move all config together, allow for multiple users 2024-08-29 17:55:43 +01:00
Katherina Walshe-Grey 8076f91738 sysadmin: init, replacing deployment directory 2024-08-29 16:00:50 +01:00
Katherina Walshe-Grey b4b879a87b entirely migrate from npins to flake inputs 2024-08-29 11:47:12 +01:00
Katherina Walshe-Grey 6d83a07556 vscode: install eslint extension 2024-08-29 10:39:57 +01:00
Katherina Walshe-Grey 43f85cf2c0 git: rebase on pull by default 2024-08-23 12:58:11 +01:00
Katherina Walshe-Grey 84417c27da Update README.md 2024-08-22 13:29:04 +01:00
Katherina Walshe-Grey 6968e1b955 flake update 2024-08-22 13:28:56 +01:00
Katherina Walshe-Grey eb499ec8c1 vscode: switch to extensions from nixpkgs 2024-08-22 12:34:56 +01:00
Katherina Walshe-Grey 2fcba2b35f purify package overrides 2024-08-22 12:34:52 +01:00
Katherina Walshe-Grey 432bc05190 vscode: check host platform for extensions
Closes #11
2024-08-22 04:38:43 +01:00
Katherina Walshe-Grey 1f4c275c98 pin nix-vscode-extensions manually 2024-08-22 04:38:43 +01:00
Katherina Walshe-Grey 07c4e3e8b0 get agenix package from flake 2024-08-22 04:38:39 +01:00
Katherina Walshe-Grey 6f17f67493 move to flake entrypoint 2024-08-22 04:38:22 +01:00
Katherina Walshe-Grey 60a9f59816 vscode: downgrade nix-vscode-extensions
It turns out a typical cadence for breaking changes to the VS Code
plugin API is every two or three months. What the fuck.

Obviously this means it's not practical to pair nixos stable releases
with the rolling-release model of nix-vscode-extensions. So, I'm
downgrading nix-vscode-extensions to the commit that was live as of
24.05's freeze from nixpkgs master, and will just update it once every
six months, unless something else breaks.
2024-08-22 00:55:30 +01:00
Katherina Walshe-Grey b630349c68 git: automatically --set-upstream for new branches 2024-08-20 13:55:38 +01:00
Katherina Walshe-Grey 9231431fa8 kalessin: remove /data dataset 2024-08-18 16:45:35 +01:00
Katherina Walshe-Grey ac57c68724 npins update 2024-08-18 15:37:35 +01:00
Katherina Walshe-Grey 58a4c5ecc0 kalessin: add to readme and allow overwriting profiles for remote builds 2024-08-18 13:31:32 +01:00
Katherina Walshe-Grey e2f5407c75 hosts: add kalessin 2024-08-12 19:37:39 +01:00
Katherina Walshe-Grey 6e2d30751b npins update 2024-08-12 19:31:00 +01:00
Katherina Walshe-Grey a2dc4024e0 syncthing: add extra shares 2024-08-12 16:12:03 +01:00
Katherina Walshe-Grey 2b9b157679 shaw: init, install syncthing 2024-08-05 04:14:33 +01:00
Katherina Walshe-Grey 50b47981c8 tohru: rearrange files 2024-08-05 02:47:42 +01:00
Katherina Walshe-Grey e9f64faa6f deployment: remove redundant import 2024-08-05 02:31:18 +01:00
Katherina Walshe-Grey 9ae5563f83 deployment: rename from colmena (for potential change in stack) 2024-08-05 02:29:28 +01:00
Katherina Walshe-Grey 54dd52b978 zsh: remove redundant config lines 2024-08-05 02:07:17 +01:00
Katherina Walshe-Grey 7f74fdbe87 tohru: install prismlauncher, uninstall thunderbird 2024-08-02 12:03:12 +01:00
Katherina Walshe-Grey 86dc9a5606 vscode: switch theme to gruvbox 2024-08-02 12:01:23 +01:00
Katherina Walshe-Grey 3f8e97366c vscode: don't install language servers if vscode is not installed 2024-08-02 12:01:00 +01:00
Katherina Walshe-Grey e1ae112e8a dconf: simplify default override 2024-07-30 13:18:59 +01:00
Katherina Walshe-Grey 31bf48154c consolidate home-manager config to a module with one entrypoint 2024-07-30 13:02:11 +01:00
Katherina Walshe-Grey 230e93bbe7 zsh: start zsh automatically in nix-shell 2024-07-27 00:26:13 +01:00
Katherina Walshe-Grey 469072c57e yevaud: add redirect for birdsong.network 2024-07-27 00:24:33 +01:00
Katherina Walshe-Grey 3bed356294 zsh: enable, set for qenya, add config 2024-07-27 00:23:27 +01:00
Katherina Walshe-Grey 42ce170014 npins update 2024-07-25 18:34:59 +01:00
Katherina Walshe-Grey 0fc7760b88 npins update 2024-07-25 12:58:36 +01:00
Katherina Walshe-Grey 35f9c00736 birdsong: move to external module 2024-07-25 10:04:35 +01:00
Katherina Walshe-Grey b6dd2e231f npins update 2024-07-25 08:36:05 +01:00
Katherina Walshe-Grey d17ef00e1c birdsong: rename option peer -> peering 2024-07-25 08:14:41 +01:00
Katherina Walshe-Grey 70247124a6 tohru, orm: tidy up vestigial wireguard config 2024-07-25 08:06:32 +01:00
Katherina Walshe-Grey e90afae7ac birdsong: fully modularise existing wireguard config 2024-07-25 07:52:43 +01:00
Katherina Walshe-Grey 5b79e6826b yevaud: add wireguard keypair 2024-07-25 06:29:31 +01:00
Katherina Walshe-Grey 5d258de497 birdsong: begin modularising wireguard config 2024-07-24 22:32:49 +01:00
Katherina Walshe-Grey 5f70f26e98 tweak standard module expression 2024-07-24 18:40:41 +01:00
Katherina Walshe-Grey e3068a144a fonts, steam: convert to nixos modules 2024-07-24 18:29:29 +01:00
Katherina Walshe-Grey 049e3ff091 forgejo: convert to nixos module 2024-07-24 17:29:26 +01:00
Katherina Walshe-Grey f36cd49121 tohru: install jellyfin-media-player 2024-07-20 02:22:08 +01:00
Katherina Walshe-Grey d7da04b9c4 Update README.md 2024-07-19 20:24:02 +01:00
Katherina Walshe-Grey ec44c955d2 tohru: uninstall chromium 2024-07-19 20:04:25 +01:00
Katherina Walshe-Grey 377060873d add/rearrange packages 2024-07-19 20:04:12 +01:00
Katherina Walshe-Grey c60728e7aa wireguard: initial setup 2024-07-19 19:26:36 +01:00
Katherina Walshe-Grey 35563b1b07 tohru: install evolution 2024-07-18 23:28:16 +01:00
Katherina Walshe-Grey b96ef23c6c rearrange files 2024-07-18 23:22:35 +01:00
Katherina Walshe-Grey a2f250287d npins update 2024-07-18 22:46:51 +01:00
Katherina Walshe-Grey 28dfe1af07 vscode: add go support 2024-07-18 22:25:03 +01:00
Katherina Walshe-Grey db566deb4b users: add randomcat 2024-07-09 22:16:37 +01:00
Katherina Walshe-Grey bae6a97842 users: add richard 2024-07-09 22:04:00 +01:00
Katherina Walshe-Grey 0d0b3e2d2d nginx: refactor to apply settings across all nodes 2024-07-09 22:00:09 +01:00
Katherina Walshe-Grey 39c1bc664c rearrange files 2024-07-09 18:14:33 +01:00
Katherina Walshe-Grey 18bc4afc65 regenerate hardware-configuration.nix on all machines 2024-07-02 19:00:36 +01:00
Katherina Walshe-Grey 7c110ae17d Update README.md 2024-07-02 18:20:38 +01:00
Katherina Walshe-Grey 8c089a1a55 hosts: orm: initial setup 2024-07-02 17:53:22 +01:00
Katherina Walshe-Grey 7c700718ed allow non-root users (with sudo) to deploy remotely 2024-07-02 15:58:20 +01:00
Katherina Walshe-Grey dcbd9d1873 users: qenya: specify uid 2024-07-02 13:41:11 +01:00
Katherina Walshe-Grey 5233fe75cf npins update 2024-07-02 11:53:57 +01:00
Katherina Walshe-Grey a0d06b6c0a git: set default branch to "main" 2024-06-30 10:32:49 +01:00
Katherina Walshe-Grey a3c3c9c12c [tohru] install "don't take it personally, babe" 2024-06-27 11:43:48 +01:00
Katherina Walshe-Grey 03e0fd3188 npins update 2024-06-27 11:43:15 +01:00
Katherina Walshe-Grey edd13a8775 vscode: saner git commit message length 2024-06-27 11:39:03 +01:00
Katherina Walshe-Grey 082db65a0b vscode: remove redundant parentheses 2024-06-27 10:46:20 +01:00
Katherina Walshe-Grey 5cadb7d36e vscode: warn on long git commit messages 2024-06-27 10:42:33 +01:00
Katherina Walshe-Grey aaaa4b8171 vscode: pass Ctrl-K through to integrated terminal 2024-06-27 10:41:16 +01:00
Katherina Walshe-Grey 55f65b71d1 [tohru] Install Discord, OpenTTD, Gimp 2024-06-26 14:49:34 +01:00
Katherina Walshe-Grey d9018e7d75 [tohru] Update package name for Digital 2024-06-25 10:19:38 +01:00
Katherina Walshe-Grey 6483a171ad npins update 2024-06-25 10:19:19 +01:00
Katherina Walshe-Grey 86fb1b3819 [tohru] Install Digital: A Love Story 2024-06-23 21:16:35 +01:00
Katherina Walshe-Grey 5cfadeea01 Enable NUR 2024-06-23 21:16:21 +01:00
Katherina Walshe-Grey fc18e5538c Install lshw 2024-06-23 21:15:52 +01:00
Katherina Walshe-Grey ceece65878 Update git email address
Closes #7
2024-06-19 21:07:34 +01:00
Katherina Walshe-Grey 19886a488c [tohru] Enable syncthing with kilgharrah 2024-06-19 21:00:03 +01:00
Katherina Walshe-Grey f71a65d051 [tohru] Remove reference to itch client 2024-06-19 20:58:18 +01:00
Katherina Walshe-Grey a36c1d5e9f Add key for tohru to agenix secrets file 2024-06-19 20:30:53 +01:00
Katherina Walshe-Grey 1e20b6b401 Allow SSH login to any machine 2024-06-19 20:22:37 +01:00
Katherina Walshe-Grey f464d022e5 Enable passwordless sudo on remote machines
Closes #2
2024-06-19 20:02:55 +01:00
Katherina Walshe-Grey 6fc5a2b1ea Fix CVE-2021-3156 2024-06-19 19:39:00 +01:00
Katherina Walshe-Grey 2bcb07ee60 Revert "Install please"
Not the package I thought it was.

This reverts commit 7899127c05.
2024-06-19 19:36:37 +01:00
Katherina Walshe-Grey 3e9901bd2a Add extra package repos as nixpkgs overrides instead of independent references 2024-06-19 19:14:59 +01:00
Katherina Walshe-Grey 7899127c05 Install please 2024-06-19 18:38:52 +01:00
Katherina Walshe-Grey 8ed478edb7 [tohru] refresh hardware-configuration.nix 2024-06-19 18:37:16 +01:00
Katherina Walshe-Grey 6bf38b7814 Set up agenix for secrets management 2024-06-18 14:20:45 +01:00
Katherina Walshe-Grey 45e857747d npins update 2024-06-18 11:21:00 +01:00
Katherina Walshe-Grey 0c3be502c4 Update README.md 2024-06-17 23:22:19 +01:00
Katherina Walshe-Grey 3d75d0614d npins update 2024-06-17 20:47:15 +01:00
Katherina Walshe-Grey dccb037942 [yevaud] Set up tmux 2024-06-17 14:04:09 +01:00
Katherina Walshe-Grey 785184c7ef [tohru] Install Thunderbird 2024-06-14 23:02:59 +01:00
Katherina Walshe-Grey a558fb0324 [tohru] Enable joycond 2024-06-14 15:41:33 +01:00
Katherina Walshe-Grey 479dcc536a Add $WORDLIST file 2024-06-13 19:44:05 +01:00
Katherina Walshe-Grey 8544eca140 [tohru] More vscode settings 2024-06-12 18:39:05 +01:00
Katherina Walshe-Grey 8c747172a7 [tohru] Stop GNOME overriding VS Code keybindings for Copy Line Up/Down 2024-06-07 22:08:54 +01:00
Katherina Walshe-Grey bf8e65ebe3 [tohru] Install Microsoft core web fonts 2024-06-07 22:08:37 +01:00
Katherina Walshe-Grey 87de39d257 [tohru] Disable some VS Code confirmation dialogs 2024-06-07 20:38:47 +01:00
Katherina Walshe-Grey 7476ee2a04 [tohru] Install Foliate and KeePassXC 2024-06-07 19:19:45 +01:00
Katherina Walshe-Grey 59d4f13247 [tohru] Support NTFS drives 2024-06-07 16:34:15 +01:00
Katherina Walshe-Grey 82ee674db4 Add common CLI utilities I want everywhere 2024-06-07 16:33:46 +01:00
Katherina Walshe-Grey 019df6a883 [yevaud] Remove TODO for enabling SSH on Forgejo
It already works lol, that was easy
2024-06-06 01:16:27 +01:00
Katherina Walshe-Grey 12fa3004b4 [tohru] Install LibreOffice 2024-06-06 00:49:11 +01:00
Katherina Walshe-Grey daeb0198df Consolidate btop into cli file 2024-06-06 00:33:34 +01:00
Katherina Walshe-Grey 8f3b17df2b Fill out readme 2024-06-06 00:23:19 +01:00
Katherina Walshe-Grey d9c5393cff [yevaud] Change Forgejo domain name 2024-06-06 00:23:09 +01:00
Katherina Walshe-Grey bf2d7f7f10 Rename services directory to common 2024-06-05 23:30:24 +01:00
Katherina Walshe-Grey 1ca847cd91 [tohru] Modularise steam config 2024-06-05 23:22:51 +01:00
Katherina Walshe-Grey 433930bde6 Simplify build-related config 2024-06-05 23:03:25 +01:00
Katherina Walshe-Grey 104d995dd2 [tohru] Modularise firefox config
(such as it is)
2024-06-05 22:38:13 +01:00
Katherina Walshe-Grey c8da705e4b [yevaud] Modularise forgejo config 2024-06-05 22:32:50 +01:00
Katherina Walshe-Grey c680907894 Sync CLI tools across all hosts 2024-06-05 22:14:32 +01:00
Katherina Walshe-Grey 050fe2d1a7 Sync Git identity across all hosts
(and also home directory location, but that's sort of standard anyway)
2024-06-05 21:23:22 +01:00
Katherina Walshe-Grey 331d4006c2 [tohru] Modularise GNOME config 2024-06-05 21:15:54 +01:00
Katherina Walshe-Grey 0f824bc284 [tohru] Modularise vscode config 2024-06-05 21:07:45 +01:00
Katherina Walshe-Grey f1dff74fa5 Move <nixpkgs> pin to separate file 2024-06-05 20:43:04 +01:00
Katherina Walshe-Grey 7b87bdbc2f More deduplication 2024-06-05 20:31:13 +01:00
Katherina Walshe-Grey 4eac965b88 Modularise nginx and openssh config 2024-06-05 19:26:05 +01:00
Katherina Walshe-Grey b83c95b8b6 Modularise user config 2024-06-05 18:14:21 +01:00
Katherina Walshe-Grey 3ca50c6d17 [tohru] Username change: bluebird -> qenya 2024-06-05 16:11:54 +01:00
Katherina Walshe-Grey 0908d7a2c8 [yevaud] Username change: bluebird -> qenya 2024-06-05 15:16:17 +01:00
Katherina Walshe-Grey 570e376e2e Remove pre-24.05 workaround for pinning <nixpkgs> 2024-06-05 14:29:29 +01:00
Katherina Walshe-Grey c51b3f5a1a [yevaud] Allow remote root login only from home network
This is hacky and I will come up with a better way of doing remote deployment later
2024-06-05 12:03:57 +01:00
Katherina Walshe-Grey 85b08086fb [tohru] DRY home directory more sensibly 2024-06-04 21:27:40 +01:00
Katherina Walshe-Grey 7a0921806e [tohru] Add background image 2024-06-04 18:20:51 +01:00
Katherina Walshe-Grey 24fe4adaf5 [tohru] Enable dark mode 2024-06-04 18:20:37 +01:00
Katherina Walshe-Grey 6bf199cf12 add/remove comments 2024-06-04 16:57:38 +01:00
Katherina Walshe-Grey cc1ea24066 [tohru] remove redundant libinput enable 2024-06-04 15:33:07 +01:00
Katherina Walshe-Grey aad0dc6e82 nixos 24.05, home-manager 24.05, update npins 2024-06-04 15:32:09 +01:00
Katherina Walshe-Grey 92617f6e38 [tohru] Install Chromium 2024-06-04 15:31:39 +01:00
Katherina Walshe-Grey 05d2a5d1d6 [tohru] vscode: pin extensions & support python 2024-05-30 02:13:56 +01:00
Katherina Walshe-Grey f499d48194 apply nixpkgs-fmt and remove unnecessary comments 2024-05-29 15:25:21 +01:00
Katherina Walshe-Grey 48e3a85c82 [tohru] set up nix formatting in IDE 2024-05-29 15:22:04 +01:00
Katherina Walshe-Grey 87862f5291 [tohru] Enable Git autofetch in IDE 2024-05-29 13:36:53 +01:00
Katherina Walshe-Grey 21ebcf6f75 [tohru] Basic configuration for VS Code 2024-05-29 13:35:27 +01:00
Katherina Walshe-Grey 1012a3a1de [tohru] Move most user config to home-manager & install VS Code 2024-05-28 22:53:50 +01:00
Katherina Walshe-Grey 30d059d995 Enable home-manager module 2024-05-28 22:53:40 +01:00
Katherina Walshe-Grey 4c4a5f79c3 Excise flakes in favour of npins and colmena 2024-05-28 19:50:39 +01:00
Katherina Walshe-Grey a2cf41eeff [tohru] Install npins and colmena, and separate CLI/graphical pkgs 2024-05-28 15:32:59 +01:00
Katherina Walshe-Grey 0e4b37925a [tohru] Install Steam 2024-05-28 01:12:05 +01:00
Katherina Walshe-Grey e53e5ae1c2 [tohru] update hardware-configuration.nix 2024-05-28 01:11:53 +01:00
Katherina Walshe-Grey 0a728445ab [yevaud] Add current config to source control 2024-05-23 16:59:18 +01:00
99 changed files with 3193 additions and 159 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
use_nix

View file

@ -1,3 +1,33 @@
# nixos-config
# nixfiles
My NixOS configuration files
My NixOS configuration files.
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
### 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
* `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
* `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
### Referenced only
* `shaw`: [My girlfriend's NAS](https://github.com/randomnetcat/nix-configs/tree/main/hosts/shaw)
* `latias`: My Steam Deck
## Usage
### Building
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:
* `--on [hostname]`: build a specific machine only
* `--reboot`: reboot after building (but note [this bug](https://github.com/zhaofengli/colmena/issues/166) means it may hang even when the reboot completes successfully)
### Updating
`nix flake update --commit-lock-file`

View file

@ -0,0 +1,29 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.qenya.base-graphical;
in
{
imports = [
./desktop.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,35 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkMerge mkOption types;
cfg = config.qenya.base-graphical;
in
{
options.qenya.base-graphical.desktop = mkOption {
type = types.enum [ "gnome" "plasma6" ];
default = "gnome";
example = "plasma6";
description = "Which display manager and desktop manager to use.";
};
config = mkIf cfg.enable (mkMerge [
(mkIf (cfg.desktop == "gnome") {
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
# ];
})
(mkIf (cfg.desktop == "plasma6") {
services.displayManager.sddm.enable = true;
services.displayManager.sddm.wayland.enable = true;
services.desktopManager.plasma6.enable = true;
})
]);
}

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;
};
hardware.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;
};
}

13
common/boot.nix Normal file
View file

@ -0,0 +1,13 @@
{ 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;
};
}

18
common/default.nix Normal file
View file

@ -0,0 +1,18 @@
{
imports = [
./base-graphical
./base-server
./users
./boot.nix
./gpg.nix
./home-manager.nix
./misc.nix
./nginx.nix
./nix.nix
./openssh.nix
./packages.nix
./sanoid.nix
./security.nix
./steam.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;
}

25
common/nginx.nix Normal file
View file

@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
{
services.nginx = {
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedProxySettings = true;
recommendedTlsSettings = true;
appendHttpConfig = ''
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload" always;
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 X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;
add_header X-Clacks-Overhead "GNU Terry Pratchett" always;
proxy_cookie_path / "/; secure; HttpOnly; SameSite=strict";
'';
};
security.acme = {
acceptTerms = true;
defaults.email = "auto@qenya.tel";
};
}

21
common/nix.nix Normal file
View file

@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }:
{
nix.settings.experimental-features = "nix-command flakes";
nixpkgs.flake = {
source = lib.cleanSource pkgs.path;
setNixPath = true;
setFlakeRegistry = true;
};
nix.nixPath = [ "nixpkgs=flake:nixpkgs" ];
nixpkgs.config.allowUnfree = true;
nix.settings.trusted-users = [ "@wheel" ];
# this is a dependency of feishin (used in qenya's home-manager). it does not actually have a known vulnerability,
# it's just unsuspported because Electron's support cycle is a ludicrously short 6 months.
# feishin's dev is going to be rewriting it without Electron (as "audioling").
# modern software development was a mistake.
nixpkgs.config.permittedInsecurePackages = [
"electron-31.7.7"
];
}

11
common/openssh.nix Normal file
View file

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

23
common/packages.nix Normal file
View file

@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
{
environment.systemPackages = with pkgs; [
btop
git
wget
# hardware troubleshooting
lshw
parted
smartmontools
# network troubleshooting
inetutils
lsof
tcpdump
netcat # <3
wireguard-tools
];
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";
# };
};
};
}

5
common/security.nix Normal file
View file

@ -0,0 +1,5 @@
{ config, lib, pkgs,... }:
{
security.sudo.execWheelOnly = true;
}

12
common/steam.nix Normal file
View file

@ -0,0 +1,12 @@
{ config, lib, pkgs, ... }:
{
config = lib.mkIf config.programs.steam.enable {
programs.steam = {
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
};
services.joycond.enable = true;
};
}

33
common/users/default.nix Normal file
View file

@ -0,0 +1,33 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkOption types genAttrs;
cfg = config.fountain;
in
{
# TODO: consider DRY-ing these
imports = [
./gaelan.nix
./qenya.nix
./randomcat.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;
};
}

28
common/users/qenya.nix Normal file
View file

@ -0,0 +1,28 @@
{ config, lib, pkgs, self, ... }:
let
inherit (lib) mkIf mkEnableOption;
keys = import ../../keys.nix;
cfg = config.fountain.users.qenya;
in
{
options.fountain.users.qenya = {
enable = mkEnableOption "user qenya";
};
config = mkIf cfg.enable {
users.users.qenya = {
uid = 1001;
isNormalUser = true;
group = "qenya";
shell = pkgs.zsh;
openssh.authorizedKeys.keys = keys.users.qenya;
};
users.groups.qenya.gid = config.users.users.qenya.uid;
programs.zsh.enable = true;
home-manager.users."qenya" = self.homeManagerModules."qenya";
};
}

View file

@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkEnableOption;
keys = import ../../keys.nix;
cfg = config.fountain.users.randomcat;
in
{
options.fountain.users.randomcat = {
enable = mkEnableOption "user randomcat";
};
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;
};
}

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,24 +1,441 @@
{
"nodes": {
"actual": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1738814288,
"narHash": "sha256-4WqR/ligsEvxcFOjui1dwquR8U327uGoBjdI5p0ey4A=",
"ref": "main",
"rev": "f64adb78f15981d60af97e7aa691d2ebdf48ceaa",
"revCount": 21,
"type": "git",
"url": "https://git.xeno.science/xenofem/actual-nix"
},
"original": {
"ref": "main",
"type": "git",
"url": "https://git.xeno.science/xenofem/actual-nix"
}
},
"agenix": {
"inputs": {
"darwin": [],
"home-manager": [],
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1736955230,
"narHash": "sha256-uenf8fv2eG5bKM8C/UvFaiJMZ4IpUFaQxk9OH5t/1gA=",
"owner": "ryantm",
"repo": "agenix",
"rev": "e600439ec4c273cf11e06fe4d9d906fb98fa097c",
"type": "github"
},
"original": {
"owner": "ryantm",
"repo": "agenix",
"type": "github"
}
},
"birdsong": {
"locked": {
"lastModified": 1738782723,
"narHash": "sha256-tQ8DZrB9pucCl0qOEzvqRBrrYS0f72Sxhf+jYJQV1eE=",
"ref": "main",
"rev": "a40220a4b977bc04cbe9e13ff5c667ed6f252677",
"revCount": 22,
"type": "git",
"url": "https://git.qenya.tel/qenya/birdsong"
},
"original": {
"ref": "main",
"type": "git",
"url": "https://git.qenya.tel/qenya/birdsong"
}
},
"colmena": {
"inputs": {
"flake-compat": [],
"flake-utils": "flake-utils",
"nix-github-actions": [],
"nixpkgs": [
"nixpkgs"
],
"stable": []
},
"locked": {
"lastModified": 1739900653,
"narHash": "sha256-hPSLvw6AZQYrZyGI6Uq4XgST7benF/0zcCpugn/P0yM=",
"owner": "zhaofengli",
"repo": "colmena",
"rev": "2370d4336eda2a9ef29fce10fa7076ae011983ab",
"type": "github"
},
"original": {
"owner": "zhaofengli",
"repo": "colmena",
"type": "github"
}
},
"firefox-addons": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"dir": "pkgs/firefox-addons",
"lastModified": 1744010161,
"narHash": "sha256-6PNBLb/YXVlx2YaDqtljQYpk2MlE0VRjGXcEg1RN/qw=",
"owner": "rycee",
"repo": "nur-expressions",
"rev": "60f50437003e17137a871686dfa3fc4291edd5e5",
"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": 1743550720,
"narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "c621e8422220273271f52058f618c94e405bb0f5",
"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": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1743808813,
"narHash": "sha256-2lDQBOmlz9ggPxcS7/GvcVdzXMIiT+PpMao6FbLJSr0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "a9f8b3db211b4609ddd83683f9db89796c7f6ac6",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
},
"home-manager-unstable": {
"inputs": {
"nixpkgs": [
"nixpkgs-unstable"
]
},
"locked": {
"lastModified": 1744008831,
"narHash": "sha256-g3mHJLB8ShKuMaBBZxiGuoftJ22f7Boegiw5xBUnS8E=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "f463902a3f03e15af658e48bcc60b39188ddf734",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"lix": {
"flake": false,
"locked": {
"lastModified": 1737234286,
"narHash": "sha256-pgDJZjj4jpzkFxsqBTI/9Yb0n3gW+DvDtuv9SwQZZcs=",
"rev": "079528098f5998ba13c88821a2eca1005c1695de",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/079528098f5998ba13c88821a2eca1005c1695de.tar.gz?rev=079528098f5998ba13c88821a2eca1005c1695de"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/lix/archive/release-2.92.tar.gz"
}
},
"lix-module": {
"inputs": {
"flake-utils": "flake-utils_2",
"flakey-profile": "flakey-profile",
"lix": "lix",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1742943028,
"narHash": "sha256-fprwZKE1uMzO9tiWWOrmLWBW3GPkMayQfb0xOvVFIno=",
"rev": "868d97695bab9d21f6070b03957bcace249fbe3c",
"type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/868d97695bab9d21f6070b03957bcace249fbe3c.tar.gz?rev=868d97695bab9d21f6070b03957bcace249fbe3c"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.92.0-3.tar.gz"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1716361217,
"narHash": "sha256-mzZDr00WUiUXVm1ujBVv6A0qRd8okaITyUp4ezYRgc4=",
"lastModified": 1743813633,
"narHash": "sha256-BgkBz4NpV6Kg8XF7cmHDHRVGZYnKbvG0Y4p+jElwxaM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "46397778ef1f73414b03ed553a3368f0e7e33c2f",
"rev": "7819a0d29d1dd2bc331bec4b327f0776359b1fa6",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-23.11",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1743296961,
"narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixpkgs.lib",
"type": "github"
}
},
"nixpkgs-small": {
"locked": {
"lastModified": 1743891346,
"narHash": "sha256-QNxnxIi6PJEnwJp7ZXUpxX4/z/cmRJGeIOkIYfYh/8E=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "f27c6099cec4fe9b67c7fbc51d8324dcb4b52694",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11-small",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1743827369,
"narHash": "sha256-rpqepOZ8Eo1zg+KJeWoq1HAOgoMCDloqv5r2EAa9TSA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "42a1c966be226125b48c384171c44c651c236c22",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-unstable-small": {
"locked": {
"lastModified": 1743948488,
"narHash": "sha256-uKcMmNPvGPb58MhAFru/CMDYl69nZRK3A3SLch9ejgA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "da98c5d529f118c82e80a3f9b4fb01fdeba3cf7a",
"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": 1742765550,
"narHash": "sha256-2vVIh2JrL6GAGfgCeY9e6iNKrBjs0Hw3bGQEAbwVs68=",
"owner": "nix-community",
"repo": "plasma-manager",
"rev": "b70be387276e632fe51232887f9e04e2b6ef8c16",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "plasma-manager",
"type": "github"
}
},
"randomcat": {
"flake": false,
"locked": {
"lastModified": 1744004743,
"narHash": "sha256-MIWwT/A4IfXmmSMCU3lVVnFJNmkXpYxcK+Fishja6XY=",
"owner": "randomnetcat",
"repo": "nix-configs",
"rev": "335ef83e439cfcb4781d5a8f54f606afb63e9f48",
"type": "github"
},
"original": {
"owner": "randomnetcat",
"repo": "nix-configs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
"actual": "actual",
"agenix": "agenix",
"birdsong": "birdsong",
"colmena": "colmena",
"firefox-addons": "firefox-addons",
"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": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"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"
}
}
},

180
flake.nix
View file

@ -1,14 +1,178 @@
{
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.11";
};
nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
nixpkgs-small.url = "github:NixOS/nixpkgs/nixos-24.11-small";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable";
nixpkgs-unstable-small.url = "github:NixOS/nixpkgs/nixos-unstable-small";
outputs = { self, nixpkgs, ... }@inputs: {
nixosConfigurations.tohru = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./hosts/tohru/configuration.nix
];
lix-module = {
# 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.92.0-3.tar.gz";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager/release-24.11";
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 = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.darwin.follows = "";
inputs.home-manager.follows = "";
};
colmena = {
url = "github:zhaofengli/colmena";
inputs.nixpkgs.follows = "nixpkgs";
inputs.stable.follows = "";
inputs.nix-github-actions.follows = "";
inputs.flake-compat.follows = "";
};
randomcat = {
url = "github:randomnetcat/nix-configs";
flake = false;
};
firefox-addons = {
url = "gitlab:rycee/nur-expressions?ref=master&dir=pkgs/firefox-addons";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
# Third-party flake providing package and NixOS module for Actual Budget as
# nixpkgs are having trouble: https://github.com/NixOS/nixpkgs/issues/269069
actual = {
url = "git+https://git.xeno.science/xenofem/actual-nix?ref=main";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
birdsong.url = "git+https://git.qenya.tel/qenya/birdsong?ref=main";
scoutshonour = {
url = "git+https://git.qenya.tel/qenya/nix-scoutshonour?ref=main";
inputs.nixpkgs.follows = "nixpkgs-unstable";
};
};
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 = [
inputs.plasma-manager.homeManagerModules.plasma-manager
./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 = {
meta = {
nixpkgs = import nixpkgs-unstable {
system = "x86_64-linux";
overlays = [
inputs.lix-module.overlays.default
];
};
nodeNixpkgs = {
kilgharrah = import nixpkgs { 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"; };
};
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.home-manager.nixosModules.home-manager
inputs.agenix.nixosModules.default
inputs.birdsong.nixosModules.default
inputs.actual.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 = "10.127.3.2"; # no fqdn yet
kilgharrah.imports = [ ./hosts/kilgharrah ];
tohru.imports = [ ./hosts/tohru ];
elucredassa.imports = [ ./hosts/elucredassa ];
yevaud.imports = [ ./hosts/yevaud ];
orm.imports = [ ./hosts/orm ];
kalessin.imports = [ ./hosts/kalessin ];
};
};
}

138
flake/backup.nix Normal file
View file

@ -0,0 +1,138 @@
{ 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;
# TODO: don't want to have to dig into the node config for the fqdn
sourceFqdn = config.flake.nixosConfigurations.${sourceHost}.config.networking.fqdn;
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";
};
};
};
# TODO: this should be handled by a networking module
programs.ssh.knownHosts.${sourceFqdn}.publicKey = keys.machines.${sourceHost};
};
})
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
];
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View file

@ -0,0 +1,24 @@
{ 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;
};
imports = [
./desktop.nix
./keyboard.nix
./mouse-touchpad.nix
./multitasking.nix
./shell.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 = [
# ...
# ];
};
};
}

15
home/qenya/default.nix Normal file
View file

@ -0,0 +1,15 @@
{
imports = [
./dconf
./plasma
./firefox.nix
./git.nix
./packages.nix
./tmux.nix
./vscode.nix
./xdg-mime-apps.nix
./zsh.nix
];
home.stateVersion = "23.11";
}

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 = 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;
};
};
};
}

14
home/qenya/git.nix Normal file
View file

@ -0,0 +1,14 @@
{ config, lib, pkgs, ... }:
{
programs.git = {
enable = true;
userName = "Katherina Walshe-Grey";
userEmail = "git@qenya.tel";
extraConfig = {
init.defaultBranch = "main";
pull.rebase = true;
push.autoSetupRemote = true;
};
};
}

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

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

View file

@ -0,0 +1,11 @@
{ config, lib, pkgs, osConfig, ... }:
let
isPlasma = osConfig.services.desktopManager.plasma6.enable || osConfig.services.xserver.desktopManager.plasma5.enable;
in
{
programs.plasma.enable = isPlasma;
programs.plasma.overrideConfig = true;
imports = [ ];
}

33
home/qenya/tmux.nix Normal file
View file

@ -0,0 +1,33 @@
{ config, lib, pkgs, ... }:
{
# Derived from https://github.com/srid/nixos-config/blob/master/home/tmux.nix
programs.tmux = {
enable = true;
clock24 = true;
shortcut = "a"; # `screen` muscle memory compatibility
baseIndex = 1; # this is a UI, 0-indexing is not appropriate, fight me
newSession = true; # skip the manual step
escapeTime = 0; # otherwise I keep reflexively hammering Esc
secureSocket = false; # make sessions survive user logout
plugins = with pkgs; [
tmuxPlugins.better-mouse-mode
];
mouse = true;
extraConfig = ''
# https://old.reddit.com/r/tmux/comments/mesrci/tmux_2_doesnt_seem_to_use_256_colors/
set -g default-terminal "xterm-256color"
set -ga terminal-overrides ",*256col*:Tc"
set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q'
set-environment -g COLORTERM "truecolor"
# easy-to-remember split pane commands
bind | split-window -h -c "#{pane_current_path}"
bind - split-window -v -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"
'';
};
}

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

@ -0,0 +1,83 @@
{ config, lib, pkgs, osConfig, ... }:
let
inherit (lib) mkIf mkDefault;
isGraphical = osConfig.services.xserver.enable;
in
{
programs.vscode = mkIf isGraphical {
enable = true;
enableExtensionUpdateCheck = false;
enableUpdateCheck = false;
package = pkgs.vscodium;
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
];
mutableExtensionsDir = false;
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";
};
};
"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?
};
};
}

38
home/qenya/zsh.nix Normal file
View file

@ -0,0 +1,38 @@
{ config, lib, pkgs, ... }:
{
home.packages = with pkgs; [ direnv ];
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
dotDir = ".config/zsh";
shellAliases = {
ll = "ls -l";
# don't clobber
mv = "mv -i";
rename = "rename -i";
nix-shell = ''nix-shell --command "zsh"''; # TODO: tweak theme to display something when inside nix-shell
};
history = {
size = 10000;
path = "${config.xdg.dataHome}/zsh/history";
ignorePatterns = [ "rm *" "pkill *" ];
};
oh-my-zsh = {
enable = true;
plugins = [ "git" "sudo" "direnv" ];
theme = "agnoster";
};
envExtra = ''
DEFAULT_USER=qenya
'';
};
}

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,48 @@
{ 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" ]; }];
};
birdsong.peering = {
enable = true;
privateKeyFile = "/etc/wireguard/privatekey";
persistentKeepalive = 29;
};
# restricted to fit within the 6in4 tunnel
systemd.network.netdevs."30-birdsong".netdevConfig.MTUBytes = 1280;
# these two lines work around this bug: https://github.com/NixOS/nixpkgs/issues/375960
systemd.network.netdevs."30-birdsong".netdevConfig.Kind = "wireguard";
systemd.network.netdevs."30-birdsong".netdevConfig.Name = "wg-birdsong";
}

View file

@ -0,0 +1,40 @@
{ 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";
networking.domain = "birdsong.network";
fountain.users.qenya.enable = true;
fountain.admins = [ "qenya" ];
fountain.users.randomcat.enable = true;
fountain.users.trungle.enable = true;
qenya.base-server.enable = true;
qenya.services.remote-builder = {
enable = true;
authorizedKeys.keys = [ ];
};
randomcat.services.zfs.datasets = {
"rpool_kalessin/state" = { mountpoint = "none"; };
};
services.sanoid.datasets."rpool_kalessin/state" = {
useTemplate = [ "production" ];
recursive = "zfs";
process_children_only = 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_kalessin/root";
fsType = "zfs";
};
fileSystems."/nix" =
{ device = "rpool_kalessin/nix";
fsType = "zfs";
};
fileSystems."/var" =
{ device = "rpool_kalessin/var";
fsType = "zfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/2ADE-A033";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
}

View file

@ -0,0 +1,18 @@
{ config, lib, pkgs, ... }:
{
networking.useNetworkd = true;
networking.interfaces.enp0s6.useDHCP = true;
age.secrets.wireguard-peer-kalessin = {
file = ../../secrets/wireguard-peer-kalessin.age;
owner = "root";
group = "systemd-network";
mode = "640";
};
birdsong.peering = {
enable = true;
privateKeyFile = config.age.secrets.wireguard-peer-kalessin.path;
};
}

View file

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

View file

@ -0,0 +1,67 @@
{ config, lib, pkgs, ... }:
let
keys = import ../../keys.nix;
in
{
imports = [
./backup.nix
./filesystems.nix
./hardware.nix
./networking.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;
qenya.base-graphical.desktop = "plasma6";
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 ];
# For the moment, this hosts some network-accessible services, so we want it on 24/7
programs.plasma.powerdevil.AC.autoSuspend.action = "nothing";
};
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,31 @@
{ 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 ];
}

View file

@ -0,0 +1,28 @@
{ 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";
};
age.secrets.wireguard-peer-kilgharrah = {
file = ../../secrets/wireguard-peer-kilgharrah.age;
owner = "root";
group = "systemd-network";
mode = "640";
};
birdsong.peering = {
enable = true;
privateKeyFile = config.age.secrets.wireguard-peer-kilgharrah.path;
persistentKeepalive = 31;
};
}

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

@ -0,0 +1,72 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./networking.nix
];
nixpkgs.hostPlatform = "x86_64-linux";
networking.hostName = "orm";
networking.hostId = "00000000";
networking.domain = "birdsong.network";
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/actual"; };
"rpool_orm/state/postgresql" = { mountpoint = "/var/lib/postgresql"; };
};
services.sanoid.datasets."rpool_orm/state" = {
useTemplate = [ "production" ];
recursive = "zfs";
process_children_only = true;
};
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 birdsong vpn
# TODO: don't hardcode the IP addresses
authentication = pkgs.lib.mkOverride 10 ''
#type database DBuser auth-method
local all all trust # used by nixos for local monitoring
host sameuser all 10.127.0.0/16 scram-sha-256
host sameuser all fd70:81ca:f8f::/48 scram-sha-256
'';
};
networking.firewall.interfaces."wg-birdsong".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

@ -0,0 +1,40 @@
# 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 = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "rpool_orm/root";
fsType = "zfs";
};
fileSystems."/nix" =
{ device = "rpool_orm/nix";
fsType = "zfs";
};
fileSystems."/var" =
{ device = "rpool_orm/var";
fsType = "zfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/3739-E8C1";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/a0ac8f60-25f9-4dec-af70-e3f4cd36c575"; }
];
}

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

@ -0,0 +1,18 @@
{ config, lib, pkgs, ... }:
{
networking.useNetworkd = true;
networking.interfaces.ens3.useDHCP = true;
age.secrets.wireguard-peer-orm = {
file = ../../secrets/wireguard-peer-orm.age;
owner = "root";
group = "systemd-network";
mode = "640";
};
birdsong.peering = {
enable = true;
privateKeyFile = config.age.secrets.wireguard-peer-orm.path;
};
}

11
hosts/shaw/home.nix Normal file
View file

@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
services.syncthing = {
enable = true;
extraOptions = [
"--gui-address=:8385"
"--home=/home/qenya/state/syncthing"
];
};
}

View file

@ -1,90 +0,0 @@
{ config, lib, pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.systemd-boot.editor = false;
networking.hostName = "tohru";
networking.hostId = "31da19c1";
networking.networkmanager.enable = true;
time.timeZone = "Europe/London";
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;
# Enable touchpad support (enabled default in most desktopManager).
services.xserver.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.bluebird = {
isNormalUser = true;
extraGroups = [ "wheel" "networkmanager" ];
packages = with pkgs; [
tor-browser-bundle-bin
firefox
tree
];
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
bitwarden
git
plocate
wget
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
# services.openssh.enable = true;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
nixpkgs.config.allowUnfree = true;
hardware.enableAllFirmware = true;
services.fwupd.enable = true;
services.fstrim.enable = true;
boot.initrd.luks.devices = {
"rpool".device = "/dev/nvme0n1p2";
};
# This option defines the first version of NixOS you have installed on this particular machine,
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "23.11";
}

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

@ -0,0 +1,68 @@
{ 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
amberol
foliate
nicotine-plus
# 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,54 +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" "usb_storage" "sd_mod" "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."/home" =
{ device = "rpool/home";
fsType = "zfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/7DD4-487E";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
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.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

@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }:
{
networking.useNetworkd = true;
systemd.network.wait-online.enable = false;
networking.networkmanager.enable = true;
age.secrets.wireguard-peer-tohru = {
file = ../../secrets/wireguard-peer-tohru.age;
owner = "root";
group = "systemd-network";
mode = "640";
};
birdsong.peering = {
enable = true;
privateKeyFile = config.age.secrets.wireguard-peer-tohru.path;
persistentKeepalive = 23;
};
}

53
hosts/tohru/syncthing.nix Normal file
View file

@ -0,0 +1,53 @@
{ config, lib, pkgs, ... }:
{
services.syncthing = {
enable = true;
user = "qenya";
dataDir = "/data/syncthing";
openDefaultPorts = true;
overrideDevices = true;
overrideFolders = true;
settings = {
devices = {
"kilgharrah" = { id = "RDT7IGD-76FZ6LY-37PPB2W-DWPQRPR-LZ4AXF7-4GIIHYJ-RVXUUSG-ZXPN3AZ"; };
"latias" = { id = "EN4W2SB-LB4AAZQ-6AQIE7G-S3BSCSP-V2EUNMM-KAQEHW3-PPAPGBO-PXRPWAL"; };
"shaw" = { id = "NC7WMZS-GQETJYR-IAYGD65-GHTSTVP-VAAG43K-W7N3LO5-C5OQMZ2-DTK6YA7"; };
};
folders = {
"Sync" = {
id = "uln2v-zwzwj";
path = "~/Sync";
devices = [ "kilgharrah" "shaw" ];
};
"Documents" = {
id = "alp59-7gs9s";
path = "~/Documents";
devices = [ "kilgharrah" "shaw" ];
};
"Music" = {
id = "7xvkf-y62s7";
path = "~/Music";
devices = [ "kilgharrah" "shaw" ];
};
"Pictures" = {
id = "tbmhx-ep7wk";
path = "~/Pictures";
devices = [ "kilgharrah" "shaw" ];
};
"ES-DE" = {
id = "c1cbh-llw94";
path = "~/ES-DE";
devices = [ "kilgharrah" "latias" "shaw" ];
};
"ROMs" = {
id = "dcze4-v6act";
path = "~/ROMs";
devices = [ "kilgharrah" "latias" "shaw" ];
};
};
};
};
}

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

@ -0,0 +1,63 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./networking.nix
./experiments/birdsong-dns.nix
# TODO: this breaks external IPv6 somehow
# ./experiments/pennykettle.nix
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
networking.hostName = "yevaud";
networking.hostId = "09673d65";
networking.domain = "birdsong.network";
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";
};
};
services.nginx = {
enable = true;
virtualHosts = {
"birdsong.network" = {
forceSSL = true;
enableACME = true;
locations."/".return = "301 https://git.unspecified.systems/qenya/birdsong/";
};
};
};
system.stateVersion = "23.11";
}

View file

@ -0,0 +1,32 @@
{ config, lib, pkgs, ... }:
{
services.bind = {
# enable = true;
cacheNetworks = [ "10.127.0.0/16" "fd70:81ca:0f8f::/48" ];
forwarders = [ ];
listenOn = [ config.birdsong.hosts.yevaud.ipv4 ];
listenOnIpv6 = [ config.birdsong.hosts.yevaud.ipv6 ];
zones = {
"birdsong.internal" = {
master = true;
file = pkgs.writeText "birdsong.internal.zone" ''
$TTL 60
$ORIGIN birdsong.internal.
birdsong.internal. IN SOA ns.birdsong.internal. auto.qenya.tel. ( 2024122701 7200 3600 1209600 3600 )
birdsong.internal. IN NS ns.birdsong.internal.
yevaud.c.birdsong.internal. IN A 10.127.1.1
yevaud.c.birdsong.internal. IN AAAA fd70:81ca:0f8f:1::1
ns.birdsong.internal. IN A 10.127.1.1
ns.birdsong.internal. IN AAAA fd70:81ca:0f8f:1::1
'';
};
};
};
networking.resolvconf.useLocalResolver = false;
networking.firewall.allowedTCPPorts = [ 53 ];
networking.firewall.allowedUDPPorts = [ 53 ];
}

View file

@ -0,0 +1,85 @@
{ config, lib, pkgs, ... }:
{
networking.nat.enable = true;
networking.nat.internalInterfaces = [ "ve-pennykettle1" ];
networking.nat.externalInterface = "ens3";
networking.firewall.allowedUDPPorts = [ 51821 ];
containers."pennykettle1" = {
privateNetwork = true;
extraVeths."ve-pennykettle1" = {
hostAddress = "10.235.1.1";
localAddress = "10.235.2.1";
forwardPorts = [{ hostPort = 51821; }];
};
ephemeral = true;
autoStart = true;
bindMounts."/run/secrets/wg-key".hostPath = config.age.secrets.protonvpn-pennykettle1.path;
config = { config, pkgs, ... }: {
system.stateVersion = "24.05";
systemd.services."systemd-networkd".environment.SYSTEMD_LOG_LEVEL = "debug";
environment.systemPackages = [ pkgs.wireguard-tools ];
networking.useDHCP = false;
networking.useHostResolvConf = false;
networking.firewall.allowedUDPPorts = [ 51821 ];
systemd.network = {
enable = true;
networks."10-ve" = {
matchConfig.Name = "ve-pennykettle1";
networkConfig.Address = "10.235.2.1/32";
# linkConfig.RequiredForOnline = "routable";
routes = [{
routeConfig = {
Gateway = "10.235.1.1";
Destination = "217.138.216.162/32";
};
}];
};
networks."30-protonvpn" = {
matchConfig.Name = "wg-protonvpn";
networkConfig = {
DefaultRouteOnDevice = true;
Address = [ "10.2.0.2/32" ];
DNS = "10.2.0.1";
};
linkConfig = {
RequiredForOnline = "yes";
ActivationPolicy = "always-up";
};
};
netdevs."30-protonvpn" = {
netdevConfig = {
Name = "wg-protonvpn";
Kind = "wireguard";
Description = "WireGuard tunnel to ProtonVPN (DE#1; NAT: strict, no port forwarding)";
};
wireguardConfig = {
ListenPort = 51821;
PrivateKeyFile = "/run/secrets/wg-key";
};
wireguardPeers = [{
wireguardPeerConfig = {
PublicKey = "C+u+eQw5yWI2APCfVJwW6Ovj3g4IrTOfe+tMZnNz43s=";
AllowedIPs = "0.0.0.0/0";
Endpoint = "217.138.216.162:51820";
PersistentKeepalive = 5;
};
}];
};
};
};
};
age.secrets.protonvpn-pennykettle1 = {
file = ../../../secrets/protonvpn-pennykettle1.age;
owner = "root";
group = "systemd-network";
mode = "640";
};
}

View file

@ -0,0 +1,40 @@
# 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 = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "rpool/root";
fsType = "zfs";
};
fileSystems."/nix" =
{ device = "rpool/nix";
fsType = "zfs";
};
fileSystems."/var" =
{ device = "rpool/var";
fsType = "zfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/107D-5AB3";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices =
[ { device = "/dev/disk/by-uuid/f8b6eb35-33ad-4e19-bf3d-cac5ec38a8dc"; }
];
}

View file

@ -0,0 +1,18 @@
{ config, lib, pkgs, ... }:
{
networking.useNetworkd = true;
networking.interfaces.ens3.useDHCP = true;
age.secrets.wireguard-peer-yevaud = {
file = ../../secrets/wireguard-peer-yevaud.age;
owner = "root";
group = "systemd-network";
mode = "640";
};
birdsong.peering = {
enable = true;
privateKeyFile = config.age.secrets.wireguard-peer-yevaud.path;
};
}

29
keys.nix Normal file
View file

@ -0,0 +1,29 @@
{
machines = {
kilgharrah = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOgGF3gzzlMbxxk3UAAgHJ7sDdjqtrw7UW16M1XhXtz2 root@kilgharrah";
elucredassa = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIA+Y/vqGNc1wXUAg4XMAAcLupkggywj2LpYDwA16ONbH root@elucredassa";
tohru = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOk8wuGzF0Y7SaH9aimo3SmCz99MTQwL+rEVhx0jsueU root@tohru";
yevaud = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICHUAgyQhl390yUObLUI+jEbuNrZ2U6+8px628DolD+T root@yevaud";
orm = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGc9rkcdOVWozBFj3kLVnSyUQQbyyH+UG+bLawanQkRQ root@orm";
kalessin = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOPt3iSSmgnlsv1/jafgZgI7o8UuXzcAL45hID2ThfS8 root@kalessin";
shaw = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMC0AomCZZiUV/BCpImiV4p/vGvFaz5QNc+fJLXmS5p root@shaw";
};
users = {
qenya = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFjBuuxo+w3yED0aPnsNb8S90p/GgBqFEG9K4ETZ5Wkq qenya@kilgharrah"
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJEmkV9arotms79lJPsLHkdzAac4eu3pYS08ym0sB/on qenya@tohru"
];
randomcat = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDHagOaeTR+/7FL9sErciMw30cmV/VW8HU7J3ZFU5nj9 janet@randomcat.org"
];
trungle = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAA57legzdIcYTVVri4Wc0CvgWefbRhmUqhu0F/5f8FB reuben@glenda-artix"
"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"
];
};
}

23
secrets.nix Normal file
View file

@ -0,0 +1,23 @@
let
keys = import ./keys.nix;
secrets = with keys; {
ftp-userDb-qenya = [ machines.kilgharrah ] ++ keys.users.qenya;
user-password-kilgharrah-qenya = [ machines.kilgharrah ] ++ keys.users.qenya;
user-password-tohru-qenya = [ machines.tohru ] ++ keys.users.qenya;
wireguard-peer-orm = [ machines.orm ] ++ keys.users.qenya;
wireguard-peer-tohru = [ machines.tohru ] ++ keys.users.qenya;
wireguard-peer-yevaud = [ machines.yevaud ] ++ keys.users.qenya;
wireguard-peer-kalessin = [ machines.kalessin ] ++ keys.users.qenya;
wireguard-peer-kilgharrah = [ machines.kilgharrah ] ++ keys.users.qenya;
protonvpn-pennykettle1 = [ machines.yevaud ] ++ keys.users.qenya;
};
in
builtins.listToAttrs (
map
(secretName: {
name = "secrets/${secretName}.age";
value.publicKeys = secrets."${secretName}";
})
(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

@ -0,0 +1,9 @@
age-encryption.org/v1
-> ssh-ed25519 QjA8rQ eBORfw+iHPPMYgYQc2gTD9j/QEr36fVFCGYtVX2bGBQ
TH/XvVgv7ugjzL6a8bffLq/dj5IUbZtCXkJ+XefxURc
-> ssh-ed25519 seJ9Iw fLYNcU2XjiryoOx1gEH9pDMOpfmLsvrcslplL2fFwCI
Wn5KlABSx6mJYvVKO5zXq4VA0SIV5s5WztPIwGLFWG0
-> ssh-ed25519 900ILw wW6lbItZyxelxyTXVLIkInWshc4DtOjGelcm4ixE8kg
/F7kp3AS68QHBitbkZGm9CNF26uw+GtdrTTyYiW6/6E
--- 4t+IrAJ6k/x8FMXiELoDXJICWv7QUcwBRmzKEt+/1+I
å:wQÌO r«‡Å½ª:PŒ½Ë„¶ªÒæ9ÆG¸˜Tèr³“½cù|îÍ6|çíƒÅ4ï ˆû†××}½ÒŸ3c©Î€-Jƒè°-Œ!

View file

@ -0,0 +1 @@
9vyIoXuu1UVjV+aFeuX9LoHRBeAAsiHbrLmYQY4nsQQ=

View file

@ -0,0 +1,9 @@
age-encryption.org/v1
-> ssh-ed25519 5PK5ag WsUZWedml5fBAIEog+puLADcitY0uKJttT7ABUIjnnY
IZbF1yTctMOJWOW7A/EIlMC1pfpFR5TLghShF4wpXW8
-> ssh-ed25519 seJ9Iw OHLAn4ZU6QZ/rv0kzh3q2A502XbNtCt05tJUSnv2MhY
OQ2kxhsFGmCKHlVINHdbDRKbAOFWaSFmf/epGcUJLuE
-> ssh-ed25519 900ILw CcGgENZiqjRLC7pJSzfluC38thwWX/iTeWc9dPgHcjw
Q+IWIEfOaros+rDLJIbzdOndLZMACQjVqebIrYsjvnc
--- uhddG2mrqw+pfDInK0hrzH6BuT2CfmUw/QAkhLD24YY
<19>®:“ßg~4böuÚ—%ªò¤¦!4K<>Ú“šâÓ‘^ÝÆ•¢ÆÁ`¥®A¨ƒîº«j!_åPó©³w#@"´¸7{‚˜ÿ%Yo

View file

@ -0,0 +1 @@
LXQVU0MFKVO/mml5krHnf6NcL4GxF6XFJmvpmjrLBFA=

View file

@ -0,0 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 l/RSAw d62ed4GntqcH7w0Qm7La/1GXBnWbAkrHekt3R/ssuwY
4XrxbvJ4CjPJuJ7oGuoxuhb2/VTI6XUjvI0XQmamtPk
-> ssh-ed25519 seJ9Iw ykj+pdFOkHdCxaotW+SxWQzK6VMMbSaREbx9r7rMIl0
XEB7ic2SlNQf6C0M3rm9h9D04FYtDkeBobZWnbgQDck
-> ssh-ed25519 900ILw 29vJoPdoyapdB47hK5p1u4daaJbNrwAv+7ndoPB6VCo
m+sOCPiD3MbEJycIgLa24QU5ILna9UI5Luigvv9k2T4
--- 7HDSsngCFsU9GywCc+8/txXsBwcoFWZ7D4/iTbSbtzs
er\ñ#<23>ÌZÂfý\zd óèÚÄ×ÛÇÅð<C385>Wîu•‰(ºý ´5ÙÇx_#NÌ«ø¦<>
0y—DDa+>FÓˆ«X^ÃÕu8e

View file

@ -0,0 +1 @@
birdLVh8roeZpcVo308Ums4l/aibhAxbi7MBsglkJyA=

View file

@ -0,0 +1,9 @@
age-encryption.org/v1
-> ssh-ed25519 yZzWlg o1Jax+v/jJ2ayNLw0Z97iA1sjZrK5t266LyZYaj/3nk
rTjIt9vcSdkOohnDBbFMR5iJnJGlIEQU34h1SafofeI
-> ssh-ed25519 seJ9Iw 2EsG0EUBCiaPk/mgADGydGGX72K1q9hKDj/abp8nvVw
5CMR/jpg1o9uQ986L+An6x60SnUrVGVVXXo+CCU3UfE
-> ssh-ed25519 900ILw InEzPKOEkoQ/tp4T3mo9/TMvWtLYqlsdkdV4fhkBLwg
xCupfNr2jilKtPnjBYv234qUE6ont4ofgY3bwtQUY6I
--- 4c4R1a8GkNXDS4zThBBIKvMrXK3zqNvc7hK8VWLCB4I
Ù³ Û«‚›-®Ú®´ò¿ÙV+¿ 3~8þL±RÕ¬ Ê2¶Rb6ç"ÂO‰<4F>ùpM•×áÃËOÆ5CºŽº&<26>Ç.EE³1_ó{

View file

@ -0,0 +1 @@
lk3PCQM1jmZoI8sM/rWSyKNuZOUnjox3n9L9geJD+18=

View file

@ -0,0 +1,10 @@
age-encryption.org/v1
-> ssh-ed25519 uJfgGw PrfPHcOs1dZCPi2rdkj1Ep2eAQS54LRiNizpfECwbD8
JWjQDy22aRWJpLxCqmbO8+Qf7uUe419uwBHQSdlZkW8
-> ssh-ed25519 seJ9Iw DMpu+V3zziwZNwGFl0VBddbAxOy3BjzqiH1ifNm50xA
U+F1KGWiuwPGG8W2C3/bV870z4teKbPYS8Avhnfz/Jw
-> ssh-ed25519 900ILw CtQ5lpYLMQXGbTWWmz2f4Ya/LWg1cYETOn9yq6p7eX4
L1tS98YRFqe43XGBRxvnZFOzsC1crcL9kbHI2y5UFwE
--- jHmFvmZH+RuZo+PFDyQyaiLi85Q8akJsOC0xpM0Raj4
Ëz•~žê}ƒ_PÂTxÐÿûãÚ)P­|Áÿ,ÛÄ%Z ò9sΦõQ(bm¸µ¸‰ò×ùûŸ¦o‡ÿY?¸VY¯
aÀÖÅX

View file

@ -0,0 +1 @@
YPJsIs9x4wuWdFi/QRWSJbWvKE0GQAfVL4MNMqHygDw=

31
services/actual.nix Normal file
View file

@ -0,0 +1,31 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkOption mkEnableOption types;
cfg = config.qenya.services.actual;
in
{
options.qenya.services.actual = {
enable = mkEnableOption "Actual Budget";
domain = mkOption {
type = types.str;
};
};
config = mkIf cfg.enable {
services.nginx = {
enable = true;
virtualHosts = {
${cfg.domain} = {
forceSSL = true;
enableACME = true;
locations."/".proxyPass = "http://127.0.0.1:5006/";
};
};
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
services.actual.enable = true;
};
}

View file

@ -0,0 +1,39 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.qenya.services.audiobookshelf;
in
{
options.qenya.services.audiobookshelf = {
enable = mkEnableOption "Audiobookshelf";
domain = mkOption {
type = types.str;
};
};
config = mkIf cfg.enable {
services.nginx = {
enable = true;
virtualHosts = {
${cfg.domain} = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://127.0.0.1:8234/";
extraConfig = ''
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
'';
};
};
};
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
services.audiobookshelf.enable = true;
services.audiobookshelf.port = 8234;
};
}

12
services/default.nix Normal file
View file

@ -0,0 +1,12 @@
{
imports = [
./actual.nix
./audiobookshelf.nix
./distributed-builds.nix
./forgejo.nix
./jellyfin.nix
./navidrome.nix
./remote-builder.nix
./web-redirect.nix
];
}

View file

@ -0,0 +1,54 @@
{ config, lib, pkgs, ... }:
let
inherit (builtins) elem;
inherit (lib) mkIf mkEnableOption mkOption types optional;
cfg = config.qenya.services.distributed-builds;
in
{
options.qenya.services.distributed-builds = {
enable = mkEnableOption "distributed builds";
keyFile = mkOption {
type = types.path;
description = ''
Path to the OpenSSH private key to be used for distributed builds.
'';
};
builders = mkOption {
type = types.listOf types.str;
default = [ ];
description = ''
List of builders to attempt to use for distributed builds.
'';
example = [ "kalessin" ];
};
};
config = mkIf cfg.enable {
assertions = [{
assertion = cfg ? keyFile;
message = "must specify a private key to be used for distributed builds";
}];
nix.distributedBuilds = true;
nix.settings.builders-use-substitutes = true;
nix.buildMachines =
(optional (elem "kalessin" cfg.builders) {
hostName = config.birdsong.hosts."kalessin".ipv4;
sshUser = "remotebuild";
sshKey = cfg.keyFile;
systems = [ "aarch64-linux" ];
maxJobs = 2;
supportedFeatures = [ "big-parallel" ];
})
++ (optional (elem "kilgharrah" cfg.builders) {
hostName = config.birdsong.hosts."kilgharrah".ipv4;
sshUser = "remotebuild";
sshKey = cfg.keyFile;
systems = [ "x86_64-linux" ];
maxJobs = 12;
supportedFeatures = [ "big-parallel" ];
});
};
}

56
services/forgejo.nix Normal file
View file

@ -0,0 +1,56 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.qenya.services.forgejo;
in
{
options.qenya.services.forgejo = {
enable = mkEnableOption "Forgejo";
domain = mkOption {
type = types.str;
};
};
config = mkIf cfg.enable {
# TODO: email out
# TODO: interface customisation
services = {
nginx = {
enable = true;
virtualHosts = {
${cfg.domain} = {
forceSSL = true;
enableACME = true;
locations."/".proxyPass = "http://[::1]:3000/";
};
};
};
forgejo = {
enable = true;
settings = {
DEFAULT.APP_NAME = cfg.domain;
cache = {
ADAPTER = "twoqueue";
HOST = ''{"size": 100, "recent_ratio": 0.25, "ghost_ratio": 0.5}'';
};
database = {
DB_TYPE = "sqlite3";
SQLITE_JOURNAL_MODE = "WAL";
};
security.LOGIN_REMEMBER_DAYS = 365;
server = {
DOMAIN = cfg.domain;
HTTP_PORT = 3000;
ROOT_URL = "https://${cfg.domain}/";
};
service.DISABLE_REGISTRATION = true;
};
};
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
};
}

31
services/jellyfin.nix Normal file
View file

@ -0,0 +1,31 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.qenya.services.jellyfin;
in
{
options.qenya.services.jellyfin = {
enable = mkEnableOption "Jellyfin";
domain = mkOption {
type = types.str;
};
};
config = mkIf cfg.enable {
services.nginx = {
enable = true;
virtualHosts = {
${cfg.domain} = {
forceSSL = true;
enableACME = true;
locations."/".proxyPass = "http://127.0.0.1:8096/";
};
};
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
services.jellyfin.enable = true;
};
}

38
services/navidrome.nix Normal file
View file

@ -0,0 +1,38 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkOption mkEnableOption types;
cfg = config.qenya.services.navidrome;
in
{
options.qenya.services.navidrome = {
enable = mkEnableOption "Navidrome";
domain = mkOption {
type = types.str;
};
dataDir = mkOption {
type = types.str;
};
};
config = mkIf cfg.enable {
services.nginx = {
enable = true;
virtualHosts = {
${cfg.domain} = {
forceSSL = true;
enableACME = true;
locations."/".proxyPass = "http://127.0.0.1:4533/";
};
};
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
services.navidrome.enable = true;
services.navidrome.settings = {
MusicFolder = cfg.dataDir;
BaseUrl = "https://${cfg.domain}";
};
};
}

View file

@ -0,0 +1,44 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkOption mkEnableOption types;
cfg = config.qenya.services.remote-builder;
in
{
options.qenya.services.remote-builder = {
enable = mkEnableOption "remote builder";
authorizedKeys = {
keys = mkOption {
type = types.listOf types.singleLineStr;
default = [ ];
description = ''
A list of verbatim OpenSSH public keys that should be authorized to
use this remote builder. See
`users.users.<name>.openssh.authorizedKeys.keys`.
'';
};
keyFiles = mkOption {
type = types.listOf types.path;
default = [ ];
description = ''
A list of files each containing one OpenSSH public key that should be
authorized to use this remote builder. See
`users.users.<name>.openssh.authorizedKeys.keyFiles`.
'';
};
};
};
config = mkIf cfg.enable {
users.users.remotebuild = {
isSystemUser = true;
group = "nogroup";
shell = "/bin/sh";
openssh.authorizedKeys.keys = cfg.authorizedKeys.keys;
openssh.authorizedKeys.keyFiles = cfg.authorizedKeys.keyFiles;
};
nix.nrBuildUsers = 64;
nix.settings.trusted-users = [ "remotebuild" ];
};
}

30
services/web-redirect.nix Normal file
View file

@ -0,0 +1,30 @@
{ config, lib, pkgs, ... }:
let
inherit (lib) mkIf mkOption mkEnableOption types;
cfg = config.fountain.services.web-redirect;
in
{
options.fountain.services.web-redirect = {
enable = mkEnableOption "Module to do simple 301 redirects from one domain to another";
domains = mkOption {
type = types.attrsOf types.str;
description = "Mapping from source domain to destination domain";
};
};
config = mkIf cfg.enable {
services.nginx = {
enable = true;
virtualHosts = builtins.mapAttrs
(name: value: {
forceSSL = true;
enableACME = true;
locations."/".return = "301 https://${value}$request_uri";
})
cfg.domains;
};
networking.firewall.allowedTCPPorts = [ 80 443 ];
};
}

9
shell.nix Normal file
View file

@ -0,0 +1,9 @@
let
shell = (import
(fetchTarball {
url = "https://github.com/edolstra/flake-compat/archive/refs/tags/v1.0.1.tar.gz";
sha256 = "0m9grvfsbwmvgwaxvdzv6cmyvjnlww004gfxjvcl806ndqaxzy4j";
})
{ src = ./.; }).shellNix;
in
shell.devShells.${builtins.currentSystem}