114 Commits

Author SHA1 Message Date
def3fbca47 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/a2009bc2b4e1d3ff5360048292deb0d610aa064b' (2024-03-07)
  → 'github:nix-community/disko/72818e54ec29427f8d9f9cfa6fc859d01ca6dc66' (2024-03-09)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/880992dcc006a5e00dd0591446fdf723e6a51a64' (2024-03-05)
  → 'github:NixOS/nixpkgs/2be119add7b37dc535da2dd4cba68e2cf8d1517e' (2024-03-08)
2024-03-09 09:41:03 +00:00
da17da719f flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/1f76b318aa11170c8ca8c225a9b4c458a5fcbb57' (2024-03-03)
  → 'github:nix-community/disko/a2009bc2b4e1d3ff5360048292deb0d610aa064b' (2024-03-07)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/79baff8812a0d68e24a836df0a364c678089e2c7' (2024-03-01)
  → 'github:NixOS/nixpkgs/880992dcc006a5e00dd0591446fdf723e6a51a64' (2024-03-05)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/1536926ef5621b09bba54035ae2bb6d806d72ac8' (2024-02-29)
  → 'github:NixOS/nixpkgs/9df3e30ce24fd28c7b3e2de0d986769db5d6225d' (2024-03-06)
2024-03-07 20:13:25 +00:00
0ef2490164 Enable borg backup on atlas 2024-03-03 19:44:38 +00:00
ba3f66a250 flake.lock: Update
Flake lock file updates:

• Updated input 'secrets':
    'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=275d9d5fc1dc0df6b9e229433bfa8f35632da5f4' (2024-03-03)
  → 'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=d135b4d6d5f0079999188895f8b5f35e821b0d4b' (2024-03-03)
2024-03-03 19:44:04 +00:00
edab9af4ec flake.lock: Update
Flake lock file updates:

• Updated input 'secrets':
    'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=864fb96ac77fe42286a10092e1d4c80efa78c6a2' (2024-01-20)
  → 'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=275d9d5fc1dc0df6b9e229433bfa8f35632da5f4' (2024-03-03)
2024-03-03 16:11:54 +00:00
5bdf191a85 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/bde7dd352c07d43bd5b8245e6c39074a391fdd46' (2024-03-01)
  → 'github:nix-community/disko/1f76b318aa11170c8ca8c225a9b4c458a5fcbb57' (2024-03-03)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/33a97b5814d36ddd65ad678ad07ce43b1a67f159' (2024-02-28)
  → 'github:NixOS/nixos-hardware/59e37017b9ed31dee303dbbd4531c594df95cfbc' (2024-03-02)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/068d4db604958d05d0b46c47f79b507d84dbc069' (2024-02-29)
  → 'github:NixOS/nixpkgs/79baff8812a0d68e24a836df0a364c678089e2c7' (2024-03-01)
2024-03-03 13:48:18 +00:00
305f0755a7 Enable nvidia proprietary driver on hypnos 2024-03-03 13:47:38 +00:00
b2dfc171ea flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/a13f36255cf4ce99cc4236a34251c2e7106e101d' (2024-02-26)
  → 'github:nix-community/disko/bde7dd352c07d43bd5b8245e6c39074a391fdd46' (2024-03-01)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c8e74c2f83fe12b4e5a8bd1abbc090575b0f7611' (2024-02-28)
  → 'github:NixOS/nixpkgs/068d4db604958d05d0b46c47f79b507d84dbc069' (2024-02-29)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/9099616b93301d5cf84274b184a3a5ec69e94e08' (2024-02-28)
  → 'github:NixOS/nixpkgs/1536926ef5621b09bba54035ae2bb6d806d72ac8' (2024-02-29)
2024-03-02 09:56:13 +00:00
c6081a8763 Add audio recording to hypnos 2024-02-29 19:42:54 +00:00
1e86fecd6e flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/b7ee09cf5614b02d289cd86fcfa6f24d4e078c2a' (2024-02-26)
  → 'github:NixOS/nixpkgs/c8e74c2f83fe12b4e5a8bd1abbc090575b0f7611' (2024-02-28)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/13aff9b34cc32e59d35c62ac9356e4a41198a538' (2024-02-26)
  → 'github:NixOS/nixpkgs/9099616b93301d5cf84274b184a3a5ec69e94e08' (2024-02-28)
2024-02-29 19:41:34 +00:00
d03d2a7732 flake.lock: Update
Flake lock file updates:

• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/3f7d0bca003eac1a1a7f4659bbab9c8f8c2a0958' (2024-02-22)
  → 'github:NixOS/nixos-hardware/33a97b5814d36ddd65ad678ad07ce43b1a67f159' (2024-02-28)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/5bf1cadb72ab4e77cb0b700dab76bcdaf88f706b' (2024-02-25)
  → 'github:NixOS/nixpkgs/b7ee09cf5614b02d289cd86fcfa6f24d4e078c2a' (2024-02-26)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/73de017ef2d18a04ac4bfd0c02650007ccb31c2a' (2024-02-24)
  → 'github:NixOS/nixpkgs/13aff9b34cc32e59d35c62ac9356e4a41198a538' (2024-02-26)
2024-02-28 22:27:26 +00:00
83d35e7f2d flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/23d308f0059955e3719efc81a34d1fc0369fbb74' (2024-02-22)
  → 'github:nix-community/disko/a13f36255cf4ce99cc4236a34251c2e7106e101d' (2024-02-26)
• Updated input 'firefox-gnome-theme':
    'github:rafaelmardojai/firefox-gnome-theme/d7db6e546d13de55fd70dc3204bd99195eb004c4' (2024-02-05)
  → 'github:rafaelmardojai/firefox-gnome-theme/4e966509c180f93ba8665cd73cad8456bf44baab' (2024-02-26)
2024-02-26 20:17:15 +00:00
c6ff1bce1f flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c5101e457206dd437330d283d6626944e28794b3' (2024-02-23)
  → 'github:NixOS/nixpkgs/5bf1cadb72ab4e77cb0b700dab76bcdaf88f706b' (2024-02-25)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/cbc4211f0afffe6dfd2478a62615dd5175a13f9a' (2024-02-23)
  → 'github:NixOS/nixpkgs/73de017ef2d18a04ac4bfd0c02650007ccb31c2a' (2024-02-24)
2024-02-25 21:50:26 +00:00
26d87266ab flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/3cb4ae6689d2aa3f363516234572613b31212b78' (2024-02-22)
  → 'github:NixOS/nixpkgs/c5101e457206dd437330d283d6626944e28794b3' (2024-02-23)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/0e74ca98a74bc7270d28838369593635a5db3260' (2024-02-21)
  → 'github:NixOS/nixpkgs/cbc4211f0afffe6dfd2478a62615dd5175a13f9a' (2024-02-23)
2024-02-24 17:54:03 +00:00
4f1753a38c flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/1ae1f57dad13595600dd57b6a55fcbaef6673804' (2024-02-19)
  → 'github:nix-community/disko/23d308f0059955e3719efc81a34d1fc0369fbb74' (2024-02-22)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/106d3fec43bcea19cb2e061ca02531d54b542ce3' (2024-02-16)
  → 'github:NixOS/nixos-hardware/3f7d0bca003eac1a1a7f4659bbab9c8f8c2a0958' (2024-02-22)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/e0da498ad77ac8909a980f07eff060862417ccf7' (2024-02-18)
  → 'github:NixOS/nixpkgs/3cb4ae6689d2aa3f363516234572613b31212b78' (2024-02-22)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/b98a4e1746acceb92c509bc496ef3d0e5ad8d4aa' (2024-02-18)
  → 'github:NixOS/nixpkgs/0e74ca98a74bc7270d28838369593635a5db3260' (2024-02-21)
2024-02-23 17:31:26 +00:00
325196ce2f Add ONKYO communication to Pi 2024-02-19 22:36:25 +00:00
d0792c892e flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/84d981bae8b5e783b3b548de505b22880559515f' (2024-02-17)
  → 'github:NixOS/nixpkgs/e0da498ad77ac8909a980f07eff060862417ccf7' (2024-02-18)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/5863c27340ba4de8f83e7e3c023b9599c3cb3c80' (2024-02-16)
  → 'github:NixOS/nixpkgs/b98a4e1746acceb92c509bc496ef3d0e5ad8d4aa' (2024-02-18)
2024-02-19 19:39:00 +00:00
a0f5f3ed32 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/d8a4377cd8eec23668ea3fae07efee9d5782cb91' (2024-02-18)
  → 'github:nix-community/disko/1ae1f57dad13595600dd57b6a55fcbaef6673804' (2024-02-19)
2024-02-19 09:27:28 +00:00
795cf955a0 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/4d81082b2c37a6e1e181cc9f589b5b657774bd63' (2024-02-17)
  → 'github:nix-community/disko/d8a4377cd8eec23668ea3fae07efee9d5782cb91' (2024-02-18)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c68a9fc85c2cb3a313be6ff40511635544dde8da' (2024-02-15)
  → 'github:NixOS/nixpkgs/84d981bae8b5e783b3b548de505b22880559515f' (2024-02-17)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/a4d4fe8c5002202493e87ec8dbc91335ff55552c' (2024-02-15)
  → 'github:NixOS/nixpkgs/5863c27340ba4de8f83e7e3c023b9599c3cb3c80' (2024-02-16)
2024-02-18 13:45:19 +00:00
ae1f8c3585 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/810eccbad22cc50323b27161033399eb87658932' (2024-02-15)
  → 'github:nix-community/disko/4d81082b2c37a6e1e181cc9f589b5b657774bd63' (2024-02-17)
2024-02-17 09:57:21 +00:00
dbcf61847c flake.lock: Update
Flake lock file updates:

• Updated input 'deploy-rs':
    'github:serokell/deploy-rs/1776009f1f3fb2b5d236b84d9815f2edee463a9b' (2024-01-10)
  → 'github:serokell/deploy-rs/0a0187794ac7f7a1e62cda3dabf8dc041f868790' (2024-02-16)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/f1b2f71c86a5b1941d20608db0b1e88a07d31303' (2024-02-13)
  → 'github:NixOS/nixos-hardware/106d3fec43bcea19cb2e061ca02531d54b542ce3' (2024-02-16)
2024-02-16 17:21:58 +00:00
39f2480666 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/d07de570ba05cec2807d058daaa044f6955720c7' (2024-02-10)
  → 'github:nix-community/disko/810eccbad22cc50323b27161033399eb87658932' (2024-02-15)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/01885a071465e223f8f68971f864b15829988504' (2024-02-13)
  → 'github:NixOS/nixpkgs/c68a9fc85c2cb3a313be6ff40511635544dde8da' (2024-02-15)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/35ff7e87ee05199a8003f438ec11a174bcbd98ea' (2024-02-13)
  → 'github:NixOS/nixpkgs/a4d4fe8c5002202493e87ec8dbc91335ff55552c' (2024-02-15)
2024-02-16 00:12:52 +00:00
f095b9f71c flake.lock: Update
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/417caa847f9383e111d1397039c9d4337d024bf0' (2023-12-24)
  → 'github:ryantm/agenix/8cb01a0e717311680e0cbca06a76cbceba6f3ed6' (2024-02-13)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/6e5cc385fc8cf5ca6495d70243074ccdea9f64c7' (2024-02-06)
  → 'github:NixOS/nixos-hardware/f1b2f71c86a5b1941d20608db0b1e88a07d31303' (2024-02-13)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/809cca784b9f72a5ad4b991e0e7bcf8890f9c3a6' (2024-02-11)
  → 'github:NixOS/nixpkgs/01885a071465e223f8f68971f864b15829988504' (2024-02-13)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/d934204a0f8d9198e1e4515dd6fec76a139c87f0' (2024-02-10)
  → 'github:NixOS/nixpkgs/35ff7e87ee05199a8003f438ec11a174bcbd98ea' (2024-02-13)
2024-02-15 10:03:40 +00:00
1e21905238 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/20f65b86b6485decb43c5498780c223571dd56ef' (2024-02-09)
  → 'github:NixOS/nixpkgs/809cca784b9f72a5ad4b991e0e7bcf8890f9c3a6' (2024-02-11)
2024-02-12 18:45:07 +00:00
ddd07384c4 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/6832d0d99649db3d65a0e15fa51471537b2c56a6' (2024-02-07)
  → 'github:NixOS/nixpkgs/20f65b86b6485decb43c5498780c223571dd56ef' (2024-02-09)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/f8e2ebd66d097614d51a56a755450d4ae1632df1' (2024-02-07)
  → 'github:NixOS/nixpkgs/d934204a0f8d9198e1e4515dd6fec76a139c87f0' (2024-02-10)
2024-02-11 10:00:19 +00:00
a7c2f0827b flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/15b52c3c8a718253e66f1b92f595dc47873fdfea' (2024-02-08)
  → 'github:nix-community/disko/d07de570ba05cec2807d058daaa044f6955720c7' (2024-02-10)
2024-02-10 10:35:25 +00:00
aa2c08db63 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/fb0c047e30b69696acc42e669d02452ca1b55755' (2024-02-06)
  → 'github:NixOS/nixpkgs/6832d0d99649db3d65a0e15fa51471537b2c56a6' (2024-02-07)
2024-02-09 10:28:55 +00:00
0618af6673 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/2e9b88f02ec166b1c3f0a638688f8e4ef444de32' (2024-02-05)
  → 'github:nix-community/disko/15b52c3c8a718253e66f1b92f595dc47873fdfea' (2024-02-08)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/9f2ee8c91ac42da3ae6c6a1d21555f283458247e' (2024-02-05)
  → 'github:NixOS/nixpkgs/fb0c047e30b69696acc42e669d02452ca1b55755' (2024-02-06)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/faf912b086576fd1a15fca610166c98d47bc667e' (2024-02-05)
  → 'github:NixOS/nixpkgs/f8e2ebd66d097614d51a56a755450d4ae1632df1' (2024-02-07)
2024-02-08 20:05:32 +00:00
a2ebd755b0 Switch to yuzu mainline 2024-02-06 23:31:28 +00:00
6dc844f29e flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/f67ba6552845ea5d7f596a24d57c33a8a9dc8de9' (2024-01-29)
  → 'github:nix-community/disko/2e9b88f02ec166b1c3f0a638688f8e4ef444de32' (2024-02-05)
• Updated input 'firefox-gnome-theme':
    'github:rafaelmardojai/firefox-gnome-theme/7c372d58b61b56b1e4890f25ee99979eb5c53a7c' (2024-01-30)
  → 'github:rafaelmardojai/firefox-gnome-theme/d7db6e546d13de55fd70dc3204bd99195eb004c4' (2024-02-05)
• Updated input 'home-manager':
    'github:nix-community/home-manager/10cd9c53115061aa6a0a90aad0b0dde6a999cdb9' (2024-01-19)
  → 'github:nix-community/home-manager/652fda4ca6dafeb090943422c34ae9145787af37' (2024-02-03)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/83e571bb291161682b9c3ccd48318f115143a550' (2024-02-02)
  → 'github:NixOS/nixos-hardware/6e5cc385fc8cf5ca6495d70243074ccdea9f64c7' (2024-02-06)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/25e3d4c0d3591c99929b1ec07883177f6ea70c9d' (2024-02-01)
  → 'github:NixOS/nixpkgs/9f2ee8c91ac42da3ae6c6a1d21555f283458247e' (2024-02-05)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/b8b232ae7b8b144397fdb12d20f592e5e7c1a64d' (2024-01-31)
  → 'github:NixOS/nixpkgs/faf912b086576fd1a15fca610166c98d47bc667e' (2024-02-05)
2024-02-06 23:30:33 +00:00
2e60b9be5b Use unstable morewaita 2024-02-03 16:47:09 +00:00
eff70fdfc1 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/53fbe41cf76b6a685004194e38e889bc8857e8c2' (2024-01-31)
  → 'github:NixOS/nixpkgs/25e3d4c0d3591c99929b1ec07883177f6ea70c9d' (2024-02-01)
2024-02-03 16:41:40 +00:00
e5afe3333c Add morewaita icons 2024-02-03 12:50:37 +00:00
712a259edc Add adw-gtk3 theme 2024-02-03 12:50:02 +00:00
8db85b91c9 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/97b17f32362e475016f942bbdfda4a4a72a8a652' (2024-01-29)
  → 'github:NixOS/nixpkgs/b8b232ae7b8b144397fdb12d20f592e5e7c1a64d' (2024-01-31)
2024-02-03 11:01:02 +00:00
7fcf6ff9a9 flake.lock: Update
Flake lock file updates:

• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/cc65e27670abccced5997d4a93c4c930aef6fd0b' (2024-02-01)
  → 'github:NixOS/nixos-hardware/83e571bb291161682b9c3ccd48318f115143a550' (2024-02-02)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/f4a8d6d5324c327dcc2d863eb7f3cc06ad630df4' (2024-01-29)
  → 'github:NixOS/nixpkgs/53fbe41cf76b6a685004194e38e889bc8857e8c2' (2024-01-31)
2024-02-02 14:15:24 +00:00
63de3d65a7 flake.lock: Update
Flake lock file updates:

• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/f84eaffc35d1a655e84749228cde19922fcf55f1' (2024-01-25)
  → 'github:NixOS/nixos-hardware/cc65e27670abccced5997d4a93c4c930aef6fd0b' (2024-02-01)
2024-02-01 11:34:27 +00:00
d60cf0188d flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/c002c6aa977ad22c60398daaa9be52f2203d0006' (2024-01-27)
  → 'github:NixOS/nixpkgs/97b17f32362e475016f942bbdfda4a4a72a8a652' (2024-01-29)
2024-01-31 21:23:31 +00:00
5bd2cf34e3 flake.lock: Update
Flake lock file updates:

• Updated input 'firefox-gnome-theme':
    'github:rafaelmardojai/firefox-gnome-theme/ba893aec06b8be8b8dbe33332ef631735e5ecc5c' (2024-01-25)
  → 'github:rafaelmardojai/firefox-gnome-theme/7c372d58b61b56b1e4890f25ee99979eb5c53a7c' (2024-01-30)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/56911ef3403a9318b7621ce745f5452fb9ef6867' (2024-01-27)
  → 'github:NixOS/nixpkgs/f4a8d6d5324c327dcc2d863eb7f3cc06ad630df4' (2024-01-29)
2024-01-30 23:06:52 +00:00
614c2e6098 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/f7424625dc1f2e4eceac3009cbd1203d566feebc' (2024-01-26)
  → 'github:nix-community/disko/f67ba6552845ea5d7f596a24d57c33a8a9dc8de9' (2024-01-29)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/a77ab169a83a4175169d78684ddd2e54486ac651' (2024-01-24)
  → 'github:NixOS/nixpkgs/56911ef3403a9318b7621ce745f5452fb9ef6867' (2024-01-27)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/ae5c332cbb5827f6b1f02572496b141021de335f' (2024-01-25)
  → 'github:NixOS/nixpkgs/c002c6aa977ad22c60398daaa9be52f2203d0006' (2024-01-27)
2024-01-29 20:03:03 +00:00
3f685aea42 Use unstable zigbee2mqtt 2024-01-28 22:19:10 +00:00
d08d53398e Move borgmatic config to global scope 2024-01-28 19:00:51 +00:00
ecf68a816b flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/c12719812dde4dcbc4119a2b09766a51c9c498d5' (2024-01-26)
  → 'github:nix-community/disko/f7424625dc1f2e4eceac3009cbd1203d566feebc' (2024-01-26)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/612f97239e2cc474c13c9dafa0df378058c5ad8d' (2024-01-21)
  → 'github:NixOS/nixpkgs/ae5c332cbb5827f6b1f02572496b141021de335f' (2024-01-25)
2024-01-27 10:35:05 +00:00
04203a5be3 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/5a2dc95464080764b9ca1b82b5d6d981157522be' (2024-01-25)
  → 'github:nix-community/disko/c12719812dde4dcbc4119a2b09766a51c9c498d5' (2024-01-26)
2024-01-26 18:06:27 +00:00
22f5250a86 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/9fcdf3375e01e2938a49df103af9fd21bd0f89d9' (2024-01-22)
  → 'github:nix-community/disko/5a2dc95464080764b9ca1b82b5d6d981157522be' (2024-01-25)
• Updated input 'firefox-gnome-theme':
    'github:rafaelmardojai/firefox-gnome-theme/eb7c43d11abc157f97d032018115c9f7b04ca4de' (2024-01-15)
  → 'github:rafaelmardojai/firefox-gnome-theme/ba893aec06b8be8b8dbe33332ef631735e5ecc5c' (2024-01-25)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/bee2202bec57e521e3bd8acd526884b9767d7fa0' (2024-01-15)
  → 'github:NixOS/nixos-hardware/f84eaffc35d1a655e84749228cde19922fcf55f1' (2024-01-25)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d7f206b723e42edb09d9d753020a84b3061a79d8' (2024-01-22)
  → 'github:NixOS/nixpkgs/a77ab169a83a4175169d78684ddd2e54486ac651' (2024-01-24)
2024-01-25 19:09:42 +00:00
70d39b0c89 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/1b64fc1287991a9cce717a01c1973ef86cb1af0b' (2024-01-20)
  → 'github:NixOS/nixpkgs/d7f206b723e42edb09d9d753020a84b3061a79d8' (2024-01-22)
2024-01-23 22:38:21 +00:00
b76dbdd904 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/0033adc6e3f1ed076f3ed1c637ef1dfe6bef6733' (2024-01-18)
  → 'github:nix-community/disko/9fcdf3375e01e2938a49df103af9fd21bd0f89d9' (2024-01-22)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/bbe7d8f876fbbe7c959c90ba2ae2852220573261' (2024-01-19)
  → 'github:NixOS/nixpkgs/612f97239e2cc474c13c9dafa0df378058c5ad8d' (2024-01-21)
2024-01-22 13:06:45 +00:00
f9dd8583c4 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d2003f2223cbb8cd95134e4a0541beea215c1073' (2024-01-19)
  → 'github:NixOS/nixpkgs/1b64fc1287991a9cce717a01c1973ef86cb1af0b' (2024-01-20)
2024-01-21 21:32:05 +00:00
51f3b5c3a9 Auto-import library ZFS pool 2024-01-21 21:31:16 +00:00
9f02f55c4f Borgmatic needs SSHFS 2024-01-21 18:02:26 +00:00
e4f4783b4c Disable web search provider 2024-01-21 15:55:32 +00:00
2b69b34706 Add NFS mount for library 2024-01-21 15:55:16 +00:00
2f3624a6b8 Add library configuration 2024-01-21 01:21:11 +00:00
c8b8f2c513 Allow root login on vps1 2024-01-21 00:33:55 +00:00
d74e0032bb Fix failing vps1 checks 2024-01-21 00:15:59 +00:00
ea939b2e15 Add vps1 config and associated modules 2024-01-20 23:48:37 +00:00
f789999224 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/842d9d80cfd4560648c785f8a4e6f3b096790e19' (2024-01-17)
  → 'github:NixOS/nixpkgs/bbe7d8f876fbbe7c959c90ba2ae2852220573261' (2024-01-19)
• Updated input 'secrets':
    'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=b11b903ed707826a756b7803633f4684a19e637d' (2024-01-06)
  → 'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=864fb96ac77fe42286a10092e1d4c80efa78c6a2' (2024-01-20)
2024-01-20 23:14:30 +00:00
d9fa49b8ed Accept ACME terms for servers 2024-01-20 18:49:37 +00:00
238b7c503c Add nixos-unstable overlay 2024-01-20 17:46:14 +00:00
71d953d253 Move PreSonus Studio patch to module 2024-01-20 16:07:41 +00:00
a091fb2a69 Enable audit on server systems only 2024-01-20 15:46:15 +00:00
6eb50d3a8f Refactor host configs 2024-01-20 15:36:29 +00:00
a19656d56d flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/85c3b600f660abd86e94cbcd1c46733943197a07' (2024-01-17)
  → 'github:nix-community/home-manager/10cd9c53115061aa6a0a90aad0b0dde6a999cdb9' (2024-01-19)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/8bf65f17d8070a0a490daf5f1c784b87ee73982c' (2024-01-17)
  → 'github:NixOS/nixpkgs/d2003f2223cbb8cd95134e4a0541beea215c1073' (2024-01-19)
2024-01-19 22:31:47 +00:00
fe15b1c2ed flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/d0b4408eaf782a1ada0a9133bb1cecefdd59c696' (2024-01-15)
  → 'github:nix-community/disko/0033adc6e3f1ed076f3ed1c637ef1dfe6bef6733' (2024-01-18)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/b8dd8be3c790215716e7c12b247f45ca525867e2' (2024-01-15)
  → 'github:NixOS/nixpkgs/8bf65f17d8070a0a490daf5f1c784b87ee73982c' (2024-01-17)
2024-01-18 23:02:38 +00:00
b68ab72fd7 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/924d91e1e4c802fd8e60279a022dbae5acb36f2d' (2024-01-14)
  → 'github:nix-community/home-manager/85c3b600f660abd86e94cbcd1c46733943197a07' (2024-01-17)
2024-01-17 22:15:18 +00:00
c478bb0e90 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/428544ae95eec077c7f823b422afae5f174dee4b' (2024-01-13)
  → 'github:NixOS/nixpkgs/b8dd8be3c790215716e7c12b247f45ca525867e2' (2024-01-15)
2024-01-16 22:23:34 +00:00
845c04d3f1 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/036d480ae895afff54da5034331950827a7f317a' (2024-01-14)
  → 'github:nix-community/disko/d0b4408eaf782a1ada0a9133bb1cecefdd59c696' (2024-01-15)
• Updated input 'firefox-gnome-theme':
    'github:rafaelmardojai/firefox-gnome-theme/7a1a81baa7c31d75764dcea908285e487302d32a' (2024-01-07)
  → 'github:rafaelmardojai/firefox-gnome-theme/eb7c43d11abc157f97d032018115c9f7b04ca4de' (2024-01-15)
• Updated input 'home-manager':
    'github:nix-community/home-manager/5f0ab0eedc6ede69beb8f45561ffefa54edc6e65' (2024-01-11)
  → 'github:nix-community/home-manager/924d91e1e4c802fd8e60279a022dbae5acb36f2d' (2024-01-14)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/ef811636cc847355688804593282078bac7758d4' (2024-01-13)
  → 'github:NixOS/nixos-hardware/bee2202bec57e521e3bd8acd526884b9767d7fa0' (2024-01-15)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/3dc440faeee9e889fe2d1b4d25ad0f430d449356' (2024-01-10)
  → 'github:NixOS/nixpkgs/428544ae95eec077c7f823b422afae5f174dee4b' (2024-01-13)
2024-01-15 21:11:37 +00:00
a5ea611f02 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/f78b6498f69e04514cb84393e5daba669198c1c1' (2024-01-12)
  → 'github:nix-community/disko/036d480ae895afff54da5034331950827a7f317a' (2024-01-14)
2024-01-14 11:44:24 +00:00
5f7ac95a07 Enable emulators on odyssey 2024-01-14 11:43:53 +00:00
9db19c054f Add even more GNOME apps 2024-01-14 11:41:16 +00:00
5be54bec5f Add more emulators 2024-01-14 11:34:40 +00:00
cf56c86ac4 Add more GNOME apps 2024-01-14 00:24:25 +00:00
029af21e01 flake.lock: Update
Flake lock file updates:

• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/b34a6075e9e298c4124e35c3ccaf2210c1f3a43b' (2024-01-09)
  → 'github:NixOS/nixos-hardware/ef811636cc847355688804593282078bac7758d4' (2024-01-13)
2024-01-14 00:18:25 +00:00
1944c43d4e flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/be305848c682f221835c820288264bbf2ccf523c' (2024-01-11)
  → 'github:nix-community/disko/f78b6498f69e04514cb84393e5daba669198c1c1' (2024-01-12)
2024-01-12 16:02:11 +00:00
5339afcf39 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/f0a3425a7b173701922e7959d8bfb136ef53aa54' (2024-01-08)
  → 'github:nix-community/disko/be305848c682f221835c820288264bbf2ccf523c' (2024-01-11)
• Updated input 'home-manager':
    'github:nix-community/home-manager/7e398b3d76bc1503171b1364c9d4a07ac06f3851' (2024-01-01)
  → 'github:nix-community/home-manager/5f0ab0eedc6ede69beb8f45561ffefa54edc6e65' (2024-01-11)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/6723fa4e4f1a30d42a633bef5eb01caeb281adc3' (2024-01-08)
  → 'github:NixOS/nixpkgs/3dc440faeee9e889fe2d1b4d25ad0f430d449356' (2024-01-10)
2024-01-11 14:12:14 +00:00
541304de7d flake.lock: Update
Flake lock file updates:

• Updated input 'deploy-rs':
    'github:serokell/deploy-rs/b709d63debafce9f5645a5ba550c9e0983b3d1f7' (2023-12-20)
  → 'github:serokell/deploy-rs/1776009f1f3fb2b5d236b84d9815f2edee463a9b' (2024-01-10)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/c1be43e8e837b8dbee2b3665a007e761680f0c3d' (2024-01-05)
  → 'github:NixOS/nixpkgs/6723fa4e4f1a30d42a633bef5eb01caeb281adc3' (2024-01-08)
2024-01-10 20:46:06 +00:00
c50116ea22 flake.lock: Update
Flake lock file updates:

• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/c478b3d56969006e015e55aaece4931f3600c1b2' (2024-01-07)
  → 'github:NixOS/nixos-hardware/b34a6075e9e298c4124e35c3ccaf2210c1f3a43b' (2024-01-09)
2024-01-09 20:31:10 +00:00
77a133a0d1 Disable onboard audio on pi 2024-01-09 00:15:30 +00:00
0a26b8e522 flake.lock: Update
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/aef9a509db64a081186af2dc185654d78dc8e344' (2024-01-03)
  → 'github:nix-community/disko/f0a3425a7b173701922e7959d8bfb136ef53aa54' (2024-01-08)
• Updated input 'firefox-gnome-theme':
    'github:rafaelmardojai/firefox-gnome-theme/553a7faf420caf41d1f2498f3bfa20a71aa5d3f0' (2024-01-07)
  → 'github:rafaelmardojai/firefox-gnome-theme/7a1a81baa7c31d75764dcea908285e487302d32a' (2024-01-07)
2024-01-08 22:01:16 +00:00
13219b4d96 flake.lock: Update
Flake lock file updates:

• Updated input 'firefox-gnome-theme':
    'github:rafaelmardojai/firefox-gnome-theme/bdb708818cd867993cb4a6221afaefa45e75de8d' (2024-01-05)
  → 'github:rafaelmardojai/firefox-gnome-theme/553a7faf420caf41d1f2498f3bfa20a71aa5d3f0' (2024-01-07)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/172385318068519900a7d71c1024242fa6af75f0' (2024-01-05)
  → 'github:NixOS/nixos-hardware/c478b3d56969006e015e55aaece4931f3600c1b2' (2024-01-07)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/b0b2c5445c64191fd8d0b31f2b1a34e45a64547d' (2024-01-03)
  → 'github:NixOS/nixpkgs/c1be43e8e837b8dbee2b3665a007e761680f0c3d' (2024-01-05)
2024-01-07 13:31:00 +00:00
5c03c7f95c Include generated automations and scenes in config 2024-01-06 15:24:29 +00:00
cf33684ca0 Add ACL for mosquitto 2024-01-06 14:46:19 +00:00
e07bca10a1 flake.lock: Update
Flake lock file updates:

• Updated input 'secrets':
    'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=575a343aafbe2c9783e4ce5dc6677c1471e36d81' (2024-01-01)
  → 'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=b11b903ed707826a756b7803633f4684a19e637d' (2024-01-06)
2024-01-06 13:33:10 +00:00
f829371b6a Update home-assistant config 2024-01-06 13:32:49 +00:00
c767171fad Revert "Use home-assistant container instead"
This reverts commit 137bee5f59.
2024-01-06 10:29:32 +00:00
5216645bd5 Add applesmc module to hypnos 2024-01-06 10:22:15 +00:00
5f75a75063 Update README.md 2024-01-05 23:29:19 +00:00
3e1835711b flake.lock: Update
Flake lock file updates:

• Added input 'disko':
    'github:nix-community/disko/aef9a509db64a081186af2dc185654d78dc8e344' (2024-01-03)
• Added input 'disko/nixpkgs':
    follows 'nixpkgs'
• Updated input 'firefox-gnome-theme':
    'github:rafaelmardojai/firefox-gnome-theme/ddf8f59d1a12d45c61ed7a3705639f9beea562ab' (2024-01-03)
  → 'github:rafaelmardojai/firefox-gnome-theme/bdb708818cd867993cb4a6221afaefa45e75de8d' (2024-01-05)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/8e34f33464d77bea2d5cf7dc1066647b1ad2b324' (2024-01-03)
  → 'github:NixOS/nixos-hardware/172385318068519900a7d71c1024242fa6af75f0' (2024-01-05)
2024-01-05 23:07:01 +00:00
5f213336d9 Use NetworkManager for wifi on hypnos 2024-01-05 22:56:09 +00:00
41f62a3890 Update hypnos config 2024-01-05 22:07:32 +00:00
8ec41e2960 flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/32f63574c85fbc80e4ba1fbb932cde9619bad25e' (2023-12-31)
  → 'github:NixOS/nixpkgs/b0b2c5445c64191fd8d0b31f2b1a34e45a64547d' (2024-01-03)
2024-01-04 22:44:25 +00:00
0520f722fd flake.lock: Update
Flake lock file updates:

• Updated input 'firefox-gnome-theme':
    'github:rafaelmardojai/firefox-gnome-theme/81f84496ae65ab8bdc27e9f57d181ee6ad30098e' (2024-01-02)
  → 'github:rafaelmardojai/firefox-gnome-theme/ddf8f59d1a12d45c61ed7a3705639f9beea562ab' (2024-01-03)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/5bf829d72ccdc05be3343afd81bd922d5748ef4e' (2024-01-02)
  → 'github:NixOS/nixos-hardware/8e34f33464d77bea2d5cf7dc1066647b1ad2b324' (2024-01-03)
2024-01-04 01:06:21 +00:00
2e1cfec19a flake.lock: Update
Flake lock file updates:

• Updated input 'firefox-gnome-theme':
    'github:rafaelmardojai/firefox-gnome-theme/1bdf9a04f8faa061d219294a9ad99d432b18767c' (2023-12-28)
  → 'github:rafaelmardojai/firefox-gnome-theme/81f84496ae65ab8bdc27e9f57d181ee6ad30098e' (2024-01-02)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/f752581d6723a10da7dfe843e917a3b5e4d8115a' (2024-01-01)
  → 'github:NixOS/nixos-hardware/5bf829d72ccdc05be3343afd81bd922d5748ef4e' (2024-01-02)
2024-01-02 23:30:07 +00:00
ceeaa9e8e5 Fix postCreateHook for disko 2024-01-01 22:51:30 +00:00
732d92c7e7 Add disko config for hypnos 2024-01-01 22:50:31 +00:00
f96b946cb2 flake.lock: Update
Flake lock file updates:

• Updated input 'secrets':
    'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=ef1f91b155f3bdc4efb2824ad0c47b21b8b1bbfa' (2023-12-25)
  → 'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=575a343aafbe2c9783e4ce5dc6677c1471e36d81' (2024-01-01)
2024-01-01 20:59:28 +00:00
2bddd70aed flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/d5824a76bc6bb93d1dce9ebbbcb09a9b6abcc224' (2023-12-23)
  → 'github:nix-community/home-manager/7e398b3d76bc1503171b1364c9d4a07ac06f3851' (2024-01-01)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/316bc98323fe3a7e7f72dbbbe68dce0cce3d4984' (2023-12-31)
  → 'github:NixOS/nixos-hardware/f752581d6723a10da7dfe843e917a3b5e4d8115a' (2024-01-01)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/9dd7699928e26c3c00d5d46811f1358524081062' (2023-12-30)
  → 'github:NixOS/nixpkgs/32f63574c85fbc80e4ba1fbb932cde9619bad25e' (2023-12-31)
2024-01-01 20:35:45 +00:00
2573c5890f flake.lock: Update
Flake lock file updates:

• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/22ae59fec26591ef72ce4ccb5538c42c5f090fe3' (2023-12-29)
  → 'github:NixOS/nixos-hardware/316bc98323fe3a7e7f72dbbbe68dce0cce3d4984' (2023-12-31)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d02d818f22c777aa4e854efc3242ec451e5d462a' (2023-12-25)
  → 'github:NixOS/nixpkgs/9dd7699928e26c3c00d5d46811f1358524081062' (2023-12-30)
2024-01-01 01:16:21 +00:00
c97534b95e flake.lock: Update
Flake lock file updates:

• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/9c3a41257898f632792a6f948d43a6123ae9a5f2' (2023-12-29)
  → 'github:NixOS/nixos-hardware/22ae59fec26591ef72ce4ccb5538c42c5f090fe3' (2023-12-29)
2023-12-30 12:50:56 +00:00
546992ce34 flake.lock: Update
Flake lock file updates:

• Updated input 'firefox-gnome-theme':
    'github:rafaelmardojai/firefox-gnome-theme/bad853333d9021e7012adb9b8fbfe7a7003f26bc' (2023-12-19)
  → 'github:rafaelmardojai/firefox-gnome-theme/1bdf9a04f8faa061d219294a9ad99d432b18767c' (2023-12-28)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/a15b6e525f5737a47b4ce28445c836996fb2ea8c' (2023-12-25)
  → 'github:NixOS/nixos-hardware/9c3a41257898f632792a6f948d43a6123ae9a5f2' (2023-12-29)
2023-12-29 15:58:58 +00:00
e0c9052eca Increase transmit power 2023-12-28 15:33:27 +00:00
60c31fb74d Remove system-wide PipeWire on pi 2023-12-28 00:03:17 +00:00
bab77b94de Add MacBook Pro hypnos 2023-12-27 20:36:24 +00:00
5c2728cc9f Add devices to pi README.md 2023-12-27 16:14:10 +00:00
f2fa1395c8 Increase transmit power of zigbee adapter 2023-12-27 16:02:20 +00:00
0f865c47f3 Enable edge-tiling in GNOME 2023-12-27 15:53:02 +00:00
c7ee0c1acb Add device tree filter for Pi 4 B 2023-12-27 14:58:01 +00:00
33f55317f7 Modified DTS file 2023-12-27 14:22:17 +00:00
9057ebf7fd Fix wireless environment file ref 2023-12-27 13:06:37 +00:00
6f98fbb5cd flake.lock: Update
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/0b3d618173114c64ab666f557504d6982665d328' (2023-12-21)
  → 'github:NixOS/nixpkgs/d02d818f22c777aa4e854efc3242ec451e5d462a' (2023-12-25)
2023-12-27 12:13:50 +00:00
f44a098f80 Add snd-usb-audio to kernelModules 2023-12-26 22:57:33 +00:00
4aa27cf9bb Add apfs-fuse to odyssey 2023-12-26 15:01:11 +00:00
2a92ded7db Bump priority of snd-usb-audio patch 2023-12-26 15:00:37 +00:00
4f13020601 flake.lock: Update
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/457669db4259ff69d1ac1183aaa6000420940c1f' (2023-12-23)
  → 'github:ryantm/agenix/417caa847f9383e111d1397039c9d4337d024bf0' (2023-12-24)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/7763c6fd1f299cb9361ff2abf755ed9619ef01d6' (2023-12-13)
  → 'github:NixOS/nixos-hardware/a15b6e525f5737a47b4ce28445c836996fb2ea8c' (2023-12-25)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/d65bceaee0fb1e64363f7871bc43dc1c6ecad99f' (2023-12-20)
  → 'github:NixOS/nixpkgs/0b3d618173114c64ab666f557504d6982665d328' (2023-12-21)
• Updated input 'secrets':
    'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=4ec3e87d6a7b1f14d23c12c60cad62a6e43be4ca' (2023-12-25)
  → 'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=ef1f91b155f3bdc4efb2824ad0c47b21b8b1bbfa' (2023-12-25)
2023-12-26 00:34:37 +00:00
38 changed files with 1631 additions and 409 deletions

View File

@ -9,8 +9,16 @@ System and user configuration for NixOS-based systems.
| **Theme:** | adwaita |
| **Terminal:** | Console |
## Quick start
1. Copy SSH keypair and `known_hosts` to `~/.ssh`
1. Import GPG keys and set ultimate trust with `echo "KEYID:6:" | gpg --import-ownertrust`
1. `git clone git@git.vimium.com:jordan/nix-config.git projects/jordan/nix-config`
1. `sudo nixos-rebuild switch --flake .#`
## Provisioning
> [nixos-anywhere](https://github.com/nix-community/nixos-anywhere) is the module used for provisioning
Generate a new SSH host key in "$temp/etc/ssh" as per [this guide](https://nix-community.github.io/nixos-anywhere/howtos/secrets.html#example-decrypting-an-openssh-host-key-with-pass).
Then run;
```
nix run github:nix-community/nixos-anywhere -- \
--disk-encryption-keys /tmp/secret.key /tmp/secret.key \
--extra-files "$temp" \
--flake .#<hostname> \
root@<ip>
```

81
flake.lock generated
View File

@ -8,11 +8,11 @@
"systems": "systems"
},
"locked": {
"lastModified": 1703433843,
"narHash": "sha256-nmtA4KqFboWxxoOAA6Y1okHbZh+HsXaMPFkYHsoDRDw=",
"lastModified": 1707830867,
"narHash": "sha256-PAdwm5QqdlwIqGrfzzvzZubM+FXtilekQ/FA0cI49/o=",
"owner": "ryantm",
"repo": "agenix",
"rev": "417caa847f9383e111d1397039c9d4337d024bf0",
"rev": "8cb01a0e717311680e0cbca06a76cbceba6f3ed6",
"type": "github"
},
"original": {
@ -50,11 +50,11 @@
"utils": "utils"
},
"locked": {
"lastModified": 1703087360,
"narHash": "sha256-0VUbWBW8VyiDRuimMuLsEO4elGuUw/nc2WDeuO1eN1M=",
"lastModified": 1708091384,
"narHash": "sha256-dTGGw2y8wvfjr+J9CjQbfdulOq72hUG17HXVNxpH1yE=",
"owner": "serokell",
"repo": "deploy-rs",
"rev": "b709d63debafce9f5645a5ba550c9e0983b3d1f7",
"rev": "0a0187794ac7f7a1e62cda3dabf8dc041f868790",
"type": "github"
},
"original": {
@ -63,14 +63,34 @@
"type": "github"
}
},
"disko": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1709967935,
"narHash": "sha256-ZLLdGWs9njivxZsfSzfQN05g6WIyIe24bPb61y7FVqo=",
"owner": "nix-community",
"repo": "disko",
"rev": "72818e54ec29427f8d9f9cfa6fc859d01ca6dc66",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "disko",
"type": "github"
}
},
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1703023593,
"narHash": "sha256-M+Cw6vh7xCDmIhyVuEPNmaNVUwpmdFQq8zlsXZTKees=",
"lastModified": 1708965002,
"narHash": "sha256-gIBZCPB0sA8Gagrxd8w4+y9uUkWBnXJBmq9Ur5BYTQU=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "bad853333d9021e7012adb9b8fbfe7a7003f26bc",
"rev": "4e966509c180f93ba8665cd73cad8456bf44baab",
"type": "github"
},
"original": {
@ -123,11 +143,11 @@
]
},
"locked": {
"lastModified": 1703367386,
"narHash": "sha256-FMbm48UGrBfOWGt8+opuS+uLBLQlRfhiYXhHNcYMS5k=",
"lastModified": 1706981411,
"narHash": "sha256-cLbLPTL1CDmETVh4p0nQtvoF+FSEjsnJTFpTxhXywhQ=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "d5824a76bc6bb93d1dce9ebbbcb09a9b6abcc224",
"rev": "652fda4ca6dafeb090943422c34ae9145787af37",
"type": "github"
},
"original": {
@ -139,11 +159,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1703545041,
"narHash": "sha256-nvQA+k1rSszrf4kA4eK2i/SGbzoXyoKHzzyzq/Jca1w=",
"lastModified": 1709410583,
"narHash": "sha256-esOSUoQ7mblwcsSea0K17McZuwAIjoS6dq/4b83+lvw=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "a15b6e525f5737a47b4ce28445c836996fb2ea8c",
"rev": "59e37017b9ed31dee303dbbd4531c594df95cfbc",
"type": "github"
},
"original": {
@ -168,6 +188,21 @@
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1709703039,
"narHash": "sha256-6hqgQ8OK6gsMu1VtcGKBxKQInRLHtzulDo9Z5jxHEFY=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9df3e30ce24fd28c7b3e2de0d986769db5d6225d",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-unstable",
"type": "indirect"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1702272962,
@ -186,11 +221,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1703200384,
"narHash": "sha256-q5j06XOsy0qHOarsYPfZYJPWbTbc8sryRxianlEPJN0=",
"lastModified": 1709884566,
"narHash": "sha256-NSYJg2sfdO/XS3L8XN/59Zhzn0dqWm7XtVnKI2mHq3w=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0b3d618173114c64ab666f557504d6982665d328",
"rev": "2be119add7b37dc535da2dd4cba68e2cf8d1517e",
"type": "github"
},
"original": {
@ -203,10 +238,12 @@
"inputs": {
"agenix": "agenix",
"deploy-rs": "deploy-rs",
"disko": "disko",
"firefox-gnome-theme": "firefox-gnome-theme",
"home-manager": "home-manager_2",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_3",
"nixpkgs-unstable": "nixpkgs-unstable",
"secrets": "secrets",
"thunderbird-gnome-theme": "thunderbird-gnome-theme"
}
@ -214,11 +251,11 @@
"secrets": {
"flake": false,
"locked": {
"lastModified": 1703545643,
"narHash": "sha256-FS/acsRQ01Gj39P1t5CQ6cKOdwADmenk//vVmpA/EgU=",
"lastModified": 1709495020,
"narHash": "sha256-eiz0qUjUbdeb6m28XPY7OVnrGMZ45JiT2dZZ0Bmq2X0=",
"ref": "refs/heads/master",
"rev": "ef1f91b155f3bdc4efb2824ad0c47b21b8b1bbfa",
"revCount": 9,
"rev": "d135b4d6d5f0079999188895f8b5f35e821b0d4b",
"revCount": 14,
"type": "git",
"url": "ssh://git@git.vimium.com/jordan/nix-secrets.git"
},

View File

@ -3,8 +3,14 @@
inputs = {
nixpkgs.url = "nixpkgs/nixos-23.11";
nixpkgs-unstable.url = "nixpkgs/nixos-unstable";
# nixpkgs-master.url = "nixpkgs";
agenix.url = "github:ryantm/agenix";
deploy-rs.url = "github:serokell/deploy-rs";
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
home-manager = {
url = "github:nix-community/home-manager/release-23.11";
inputs.nixpkgs.follows = "nixpkgs";
@ -24,21 +30,28 @@
};
};
outputs = inputs @ { self, nixpkgs, agenix, deploy-rs, home-manager, nixos-hardware, secrets, ... }:
outputs = inputs @ { self, nixpkgs, nixpkgs-unstable, agenix, deploy-rs, disko, home-manager, nixos-hardware, secrets, ... }:
let
nixpkgsForSystem = system: inputs.nixpkgs;
mkPkgsForSystem = system: inputs.nixpkgs;
overlays = [
agenix.overlays.default
(import ./overlays/gnome.nix)
(
final: prev: {
unstable = import inputs.nixpkgs-unstable { system = final.system; };
custom = self.packages { system = final.system; };
}
)
];
commonModules = [
agenix.nixosModules.age
disko.nixosModules.disko
home-manager.nixosModule
./modules
];
nixosSystem = { system, name, extraModules ? [] }:
mkNixosSystem = { system, name, extraModules ? [] }:
let
nixpkgs = nixpkgsForSystem system;
nixpkgs = mkPkgsForSystem system;
lib = (import nixpkgs { inherit overlays system; }).lib;
in
inputs.nixpkgs.lib.nixosSystem {
@ -53,9 +66,6 @@
config.allowUnfree = true;
};
networking.hostName = name;
nix = {
extraOptions = "experimental-features = nix-command flakes";
};
})
./hosts/${name}
] ++ extraModules;
@ -63,24 +73,47 @@
in
{
nixosConfigurations = {
atlas = nixosSystem { system = "x86_64-linux"; name = "atlas"; };
eos = nixosSystem { system = "x86_64-linux"; name = "eos"; };
helios = nixosSystem { system = "x86_64-linux"; name = "helios"; };
odyssey = nixosSystem { system = "x86_64-linux"; name = "odyssey"; };
pi = nixosSystem { system = "aarch64-linux"; name = "pi"; extraModules = [ nixos-hardware.nixosModules.raspberry-pi-4 ]; };
atlas = mkNixosSystem { system = "x86_64-linux"; name = "atlas"; };
eos = mkNixosSystem { system = "x86_64-linux"; name = "eos"; };
helios = mkNixosSystem { system = "x86_64-linux"; name = "helios"; };
hypnos = mkNixosSystem { system = "x86_64-linux"; name = "hypnos"; };
library = mkNixosSystem { system = "x86_64-linux"; name = "library"; };
odyssey = mkNixosSystem { system = "x86_64-linux"; name = "odyssey"; };
pi = mkNixosSystem { system = "aarch64-linux"; name = "pi"; extraModules = [ nixos-hardware.nixosModules.raspberry-pi-4 ]; };
vps1 = mkNixosSystem { system = "x86_64-linux"; name = "vps1"; };
};
deploy.nodes.pi = {
hostname = "10.0.1.191";
sshUser = "root";
devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShell {
buildInputs = [
deploy-rs.packages.x86_64-linux.deploy-rs
];
};
profiles.system = {
user = "root";
path = deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pi;
deploy = {
magicRollback = true;
autoRollback = true;
sshUser = "root";
nodes = {
vps1 = {
hostname = "vps1.mesh.vimium.net";
profiles.system = {
user = "root";
path = deploy-rs.lib.x86_64-linux.activate.nixos self.nixosConfigurations.vps1;
};
};
# pi = {
# hostname = "10.0.1.191";
#
# profiles.system = {
# user = "root";
# path = deploy-rs.lib.aarch64-linux.activate.nixos self.nixosConfigurations.pi;
# };
# };
};
};
# checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
checks = builtins.mapAttrs (system: deployLib: deployLib.deployChecks self.deploy) deploy-rs.lib;
};
}

View File

@ -6,21 +6,15 @@
../desktop.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
networking.hostName = "atlas";
networking.hostId = "8425e349";
networking.networkmanager.enable = true;
nix.package = pkgs.nixFlakes;
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
users.defaultUserShell = pkgs.zsh;
system.stateVersion = "22.11";
networking = {
hostId = "8425e349";
networkmanager.enable = true;
};
modules = {
desktop = {
@ -48,9 +42,20 @@
gpg.enable = true;
pass.enable = true;
};
services = {
borgmatic = {
enable = true;
directories = [
"/home/jordan/Documents"
];
repoPath = "ssh://uzu2y5b1@uzu2y5b1.repo.borgbase.com/./repo";
};
};
shell = {
git.enable = true;
zsh.enable = true;
};
};
system.stateVersion = "22.11";
}

72
hosts/common.nix Normal file
View File

@ -0,0 +1,72 @@
{ config, lib, pkgs, ... }:
{
time.timeZone = "Europe/London";
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
console.keyMap = "uk";
security.sudo.execWheelOnly = true;
services.openssh = {
enable = true;
settings = {
KbdInteractiveAuthentication = false;
PasswordAuthentication = false;
PermitRootLogin = "no";
};
};
services.journald.extraConfig = ''
SystemMaxUse=4G
MaxRetentionSec=90day
'';
users.defaultUserShell = pkgs.zsh;
programs.zsh.enable = true;
nix = {
package = pkgs.nixFlakes;
extraOptions = ''
experimental-features = nix-command flakes
'';
settings = {
connect-timeout = 5;
log-lines = 25;
min-free = 128000000;
max-free = 1000000000;
fallback = true;
allowed-users = [ "@wheel" ];
auto-optimise-store = true;
substituters = [
"http://odyssey.mesh.vimium.net"
"https://cache.nixos.org"
];
trusted-public-keys = [
"odyssey.mesh.vimium.net:ZhQhjscPWjoN4rlZwoMELznEiBnZ9O26iyGA27ibilQ="
];
};
gc = {
automatic = true;
dates = "weekly";
options = "-d --delete-older-than 7d";
};
};
environment.systemPackages = with pkgs; [
git
neovim
];
}

View File

@ -1,33 +1,12 @@
{ config, lib, pkgs, ... }:
{
time.timeZone = "Europe/London";
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
console.keyMap = "uk";
imports = [
./common.nix
];
services.printing.enable = true;
services.openssh = {
enable = true;
settings = {
KbdInteractiveAuthentication = false;
PasswordAuthentication = false;
PermitRootLogin = "no";
};
startWhenNeeded = true;
};
services.openssh.startWhenNeeded = true;
sound.enable = true;
hardware.pulseaudio.enable = false;
@ -39,10 +18,11 @@
pulse.enable = true;
};
environment.systemPackages = with pkgs; [
git
neovim
];
fileSystems."/mnt/library" = {
device = "library.mesh.vimium.net:/mnt/library";
fsType = "nfs";
options = [ "nfsvers=4.2" "soft" "nocto" "ro" "x-systemd.automount" "noauto" ];
};
system.autoUpgrade = {
enable = true;
@ -50,29 +30,8 @@
randomizedDelaySec = "10min";
};
nix = {
settings = {
connect-timeout = 5;
log-lines = 25;
min-free = 128000000;
max-free = 1000000000;
fallback = true;
auto-optimise-store = true;
substituters = [
"http://odyssey.mesh.vimium.net"
"https://cache.nixos.org"
];
trusted-public-keys = [
"odyssey.mesh.vimium.net:ZhQhjscPWjoN4rlZwoMELznEiBnZ9O26iyGA27ibilQ="
];
};
gc = {
automatic = true;
dates = "weekly";
options = "-d --delete-older-than 7d";
};
modules = {
desktop.gnome.enable = true;
networking.tailscale.enable = true;
};
modules.desktop.gnome.enable = true;
modules.networking.tailscale.enable = true;
}

View File

@ -6,22 +6,15 @@
../desktop.nix
];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
networking.hostName = "eos";
networking.hostId = "cc858347";
networking.networkmanager.enable = true;
nix.package = pkgs.nixFlakes;
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
nix.settings.auto-optimise-store = true;
users.defaultUserShell = pkgs.zsh;
system.stateVersion = "22.11";
networking = {
hostId = "cc858347";
networkmanager.enable = true;
};
dconf.settings = {
"org/gnome/desktop/interface" = {
@ -51,4 +44,6 @@
zsh.enable = true;
};
};
system.stateVersion = "22.11";
}

View File

@ -15,20 +15,10 @@
};
networking = {
hostName = "helios";
hostId = "47d23505";
networkmanager.enable = true;
};
nix.package = pkgs.nixFlakes;
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
users.defaultUserShell = pkgs.zsh;
system.stateVersion = "22.11";
modules = {
desktop = {
apps.qbittorrent.enable = true;
@ -60,4 +50,6 @@
zsh.enable = true;
};
};
system.stateVersion = "22.11";
}

35
hosts/hypnos/README.md Normal file
View File

@ -0,0 +1,35 @@
# Hypnos
## Overview
15-inch MacBook Pro 11,3 (Mid 2014).
## Specs
* CPU - Intel Core i7-4870HQ @ 2.50GHz
* Memory - 16 GB DDR3
* GPU - Intel Iris Pro 5200
* GPU - NVIDIA GeForce GT 750M
* NIC - Broadcom BCM43xx 802.11ac
### Disks
Device | Partitions _(filesystem, size, usage)_
--- | ---
Apple SSD SM0512F | `/dev/sda1` (EFI, 256 MiB, NixOS Boot) <br> `/dev/sda2` (ZFS, 500 GiB, NixOS Root)
#### ZFS pool layout
```
rpool/
├── local
│ ├── nix
│ └── tmp
├── system
│ ├── root
│ └── var
└── user
└── home
```
See [Graham Christensen's article](https://grahamc.com/blog/nixos-on-zfs/#datasets) for the motivation behind these datasets.
### Networks
- DHCP on `10.0.1.0/24` subnet.
- Tailscale on `100.64.0.0/10` subnet. FQDN: `hypnos.mesh.vimium.net`.

43
hosts/hypnos/default.nix Normal file
View File

@ -0,0 +1,43 @@
{ config, lib, pkgs, ... }:
{
imports = [
./hardware-configuration.nix
./disko-config.nix
../desktop.nix
];
boot.loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
networking.hostId = "cf791898";
modules = {
desktop = {
browsers = {
firefox.enable = true;
};
media.recording = {
audio.enable = true;
};
};
dev = {
node.enable = true;
};
editors = {
neovim.enable = true;
};
security = {
gpg.enable = true;
pass.enable = true;
};
shell = {
git.enable = true;
zsh.enable = true;
};
};
system.stateVersion = "22.11";
}

View File

@ -0,0 +1,126 @@
{ lib, ... }:
{
disko.devices = {
disk = {
main = {
type = "disk";
device = "/dev/disk/by-id/ata-APPLE_SSD_SM0512F_S1K5NYBF736152";
content = {
type = "gpt";
partitions = {
ESP = {
size = "256M";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
};
};
zfs = {
size = "100%";
content = {
type = "zfs";
pool = "rpool";
};
};
};
};
};
};
zpool = {
rpool = {
type = "zpool";
options = {
ashift = "12";
};
rootFsOptions = {
canmount = "off";
mountpoint = "none";
dnodesize = "auto";
xattr = "sa";
};
postCreateHook = "zfs snapshot rpool@blank";
datasets = {
local = {
type = "zfs_fs";
options = {
mountpoint = "none";
};
};
"local/nix" = {
type = "zfs_fs";
mountpoint = "/nix";
options = {
atime = "off";
mountpoint = "legacy";
};
};
"local/tmp" = {
type = "zfs_fs";
mountpoint = "/tmp";
options = {
setuid = "off";
devices = "off";
mountpoint = "legacy";
};
};
system = {
type = "zfs_fs";
mountpoint = "/";
options = {
mountpoint = "legacy";
};
};
"system/var" = {
type = "zfs_fs";
mountpoint = "/var";
options = {
mountpoint = "legacy";
};
};
"system/var/tmp" = {
type = "zfs_fs";
mountpoint = "/var/tmp";
options = {
devices = "off";
mountpoint = "legacy";
};
};
"system/var/log" = {
type = "zfs_fs";
mountpoint = "/var/log";
options = {
compression = "on";
acltype = "posix";
mountpoint = "legacy";
};
};
user = {
type = "zfs_fs";
options = {
mountpoint = "none";
encryption = "aes-256-gcm";
keyformat = "passphrase";
keylocation = "file:///tmp/secret.key";
};
# use this to read the key during boot
postCreateHook = ''
zfs set keylocation="prompt" "rpool/$name";
'';
};
"user/home" = {
type = "zfs_fs";
mountpoint = "/home";
options = {
setuid = "off";
devices = "off";
mountpoint = "legacy";
};
};
};
};
};
};
}

View File

@ -0,0 +1,27 @@
{ config, lib, pkgs, modulesPath, ... }:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot = {
initrd.availableKernelModules = [ "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ];
initrd.kernelModules = [ ];
kernelModules = [ "applesmc" "kvm-intel" "wl" ];
extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
};
networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware = {
cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
};
};
}

46
hosts/library/README.md Normal file
View File

@ -0,0 +1,46 @@
# Library
## Overview
Media and public file server.
## Specs
* CPU - AMD Ryzen 5 5600G @ 3.90GHz
* Chipset - AMD B550
* Memory - 64 GB DDR4
* Motherboard - ASRock B550M Pro4
* Case - Fractal Design Node 804
### Disks
Device | Partitions _(filesystem, size, usage)_
--- | ---
Samsung 980 Evo | `/dev/nvme0n1p1` (EFI, 512 MiB, NixOS Boot) <br> `/dev/nvme0n1p2` (ZFS `rpool`, 200 GiB, NixOS Root)
#### ZFS datasets
```
rpool/
├── local
│ ├── nix
│ └── tmp
├── system
│ ├── root
│ └── var
└── user
└── home
library/
├── books
├── fonts
├── movies
├── music
├── software
├── tv
├── videos
└── web
```
See [Graham Christensen's article](https://grahamc.com/blog/nixos-on-zfs/#datasets) for the motivation behind the `rpool` datasets.
### Networks
- DHCP on `10.0.1.0/24` subnet.
- Tailscale on `100.64.0.0/10` subnet. FQDN: `library.mesh.vimium.net`.

175
hosts/library/default.nix Normal file
View File

@ -0,0 +1,175 @@
{ config, lib, pkgs, ... }:
with lib.my;
{
imports = [
./hardware-configuration.nix
../server.nix
];
boot = {
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
zfs.extraPools = [ "library" ];
};
networking = {
domain = "mesh.vimium.net";
hostId = "d24ae953";
firewall = {
enable = true;
allowedTCPPorts = [
22 # SSH
];
interfaces."podman+" = {
allowedUDPPorts = [ 53 ];
allowedTCPPorts = [ 53 ];
};
};
networkmanager.enable = true;
};
services.zfs = {
autoScrub = {
enable = true;
pools = [ "library" ];
};
autoSnapshot = {
enable = true;
flags = "-k -p --utc";
frequent = 0;
hourly = 0;
daily = 7;
monthly = 1;
};
};
services.nfs.server = {
enable = true;
};
services.prometheus = {
enable = true;
port = 9001;
exporters = {
node = {
enable = true;
enabledCollectors = [ "systemd" ];
port = 9002;
};
zfs = {
enable = true;
port = 9003;
};
};
scrapeConfigs = [
{
job_name = "library";
static_configs = [{
targets = [
"127.0.0.1:${toString config.services.prometheus.exporters.node.port}"
"127.0.0.1:${toString config.services.prometheus.exporters.zfs.port}"
];
}];
}
];
};
systemd.services.vps1-tunnel = {
enable = true;
description = "vps1.mesh.vimium.net SSH tunnel";
after = [
"network-online.target"
"jellyfin.service"
];
wants = [ "network-online.target" ];
serviceConfig = {
Type="simple";
ExecStart=pkgs.lib.mkForce ''
${pkgs.openssh}/bin/ssh \
-NT \
-o ExitOnForwardFailure=yes \
-o ServerAliveInterval=60 \
-o TCPKeepAlive=no \
-i %h/.ssh/id_jellyfin \
-R localhost:8000:localhost:8000 \
jellyfin@vps1.mesh.vimium.net
'';
Restart="always";
RestartSec=20;
};
wantedBy = [ "default.target" ];
};
services.nginx = let
proxyConfig = ''
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
'';
in {
enable = true;
package = pkgs.openresty;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedTlsSettings = true;
clientMaxBodySize = "2G";
virtualHosts = {
"library.mesh.vimium.net" = {
locations."/" = {
root = "/mnt/library";
extraConfig = ''
autoindex on;
'';
};
};
"jellyfin.vimium.com" = {
default = true;
listen = [
{
addr = "127.0.0.1";
port = 8000;
}
];
locations."/" = {
proxyPass = "http://localhost:8096";
extraConfig = proxyConfig;
};
locations."/metrics" = {
return = "404";
};
};
};
};
services.jellyfin.enable = true;
modules = {
security = {
gpg.enable = true;
};
shell = {
zsh.enable = true;
};
services = {
borgmatic = {
enable = true;
directories = [
"/home/jordan"
];
repoPath = "ssh://b61758r4@b61758r4.repo.borgbase.com/./repo";
};
};
};
system.stateVersion = "22.11";
}

View File

@ -0,0 +1,68 @@
{ config, lib, pkgs, modulesPath, ... }:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot = {
initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" ];
initrd.kernelModules = [ ];
kernelModules = [ "kvm-amd" ];
extraModulePackages = [ ];
};
fileSystems."/" = {
device = "rpool/system/root";
fsType = "zfs";
};
fileSystems."/var" = {
device = "rpool/system/var";
fsType = "zfs";
};
fileSystems."/var/log" = {
device = "rpool/system/var/log";
fsType = "zfs";
};
fileSystems."/var/tmp" = {
device = "rpool/system/var/tmp";
fsType = "zfs";
};
fileSystems."/var/lib/containers/storage" = {
device = "rpool/system/var/lib-containers-storage";
fsType = "zfs";
};
fileSystems."/nix" = {
device = "rpool/local/nix";
fsType = "zfs";
};
fileSystems."/tmp" = {
device = "rpool/local/tmp";
fsType = "zfs";
};
fileSystems."/home" = {
device = "rpool/user/home";
fsType = "zfs";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/F697-F1C0";
fsType = "vfat";
};
swapDevices = [ ];
networking.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@ -1,45 +0,0 @@
{ config, pkgs, ... }:
let
snd-usb-audio-module = pkgs.callPackage ./snd-usb-audio.nix {
kernel = config.boot.kernelPackages.kernel;
};
upmixConfig = ''
stream.properties = {
channelmix.upmix = true
channelmix.upmix-method = psd
}
'';
in {
boot.extraModulePackages = [
(snd-usb-audio-module.overrideAttrs (_: {
patches = [ ./0001-Update-device-ID-for-PreSonus-1824c.patch ];
}))
];
environment.etc = {
"pipewire/pipewire.conf.d/surround.conf".text = ''
context.modules = [
{
name = libpipewire-module-loopback
args = {
node.description = "Genelec 4.1 Surround"
capture.props = {
node.name = "Genelec_Speakers"
media.class = "Audio/Sink"
audio.position = [ FL FR SL SR LFE ]
}
playback.props = {
node.name = "playback.Genelec_Speakers"
audio.position = [ AUX0 AUX1 AUX3 AUX4 AUX5 ]
target.object = "alsa_output.usb-PreSonus_Studio_1824c_SC4E21110775-00.multichannel-output"
stream.dont-remix = true
node.passive = true
}
}
}
]
'';
"pipewire/pipewire-pulse.conf.d/40-upmix.conf".text = upmixConfig;
"pipewire/client-rt.conf.d/40-upmix.conf".text = upmixConfig;
};
}

View File

@ -3,39 +3,28 @@
{
imports = [
./hardware-configuration.nix
./audio.nix
../desktop.nix
];
boot.loader.systemd-boot = {
enable = true;
graceful = true;
netbootxyz.enable = true;
boot.loader = {
systemd-boot = {
enable = true;
graceful = true;
netbootxyz.enable = true;
};
efi.canTouchEfiVariables = true;
};
boot.loader.efi.canTouchEfiVariables = true;
networking.hostName = "odyssey";
networking.hostId = "c5e68d78";
networking.networkmanager.enable = true;
networking = {
hostId = "c5e68d78";
networkmanager.enable = true;
firewall.trustedInterfaces = [ "lxdbr0" "virbr0" ]; # Work around https://github.com/NixOS/nixpkgs/issues/263359
};
nix.package = pkgs.nixFlakes;
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
virtualisation.libvirtd.enable = true;
virtualisation.lxd.enable = true;
# Work around https://github.com/NixOS/nixpkgs/issues/263359
networking.firewall.trustedInterfaces = [ "lxdbr0" "virbr0" ];
users.defaultUserShell = pkgs.zsh;
system.stateVersion = "22.11";
services.journald.extraConfig = ''
SystemMaxUse=4G
MaxRetentionSec=90day
'';
virtualisation = {
libvirtd.enable = true;
lxd.enable = true;
};
services.nix-serve = {
enable = true;
@ -59,8 +48,12 @@
firefox.enable = true;
};
gaming.emulators = {
gamecube.enable = true;
ps2.enable = true;
ps3.enable = true;
psp.enable = true;
wii.enable = true;
xbox.enable = true;
};
media.graphics = {
modeling.enable = true;
@ -79,6 +72,7 @@
neovim.enable = true;
vscode.enable = true;
};
hardware.presonus-studio.enable = true;
security = {
gpg.enable = true;
pass.enable = true;
@ -97,4 +91,6 @@
zsh.enable = true;
};
};
system.stateVersion = "22.11";
}

View File

@ -64,5 +64,9 @@
networking.useDHCP = lib.mkDefault true;
environment.systemPackages = [
pkgs.apfs-fuse
];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

View File

@ -16,3 +16,10 @@ SD card | `/dev/mmcblk0` (ext4, NixOS Root)
### Networks
- DHCP on `10.0.1.0/24` subnet.
- Tailscale on `100.64.0.0/10` subnet. FQDN: `pi.mesh.vimium.net`.
## Devices and connections
- SONOFF Zigbee 3.0 USB Dongle Plus (connected to USB 2.0 port to avoid [interference](https://www.unit3compliance.co.uk/2-4ghz-intra-system-or-self-platform-interference-demonstration/))
- HDMI to ONKYO HT-R990
- S/PDIF to ONKYO HT-R990
- Ethernet to ONKYO HT-R990

View File

@ -17,8 +17,78 @@
};
deviceTree = {
enable = true;
filter = "*rpi-4-*.dtb";
overlays = [
{ name = "hifiberry-digi-pro"; dtboFile = "${pkgs.device-tree_rpi.overlays}/hifiberry-digi-pro.dtbo"; }
{
name = "audio-off-overlay";
dtsText = ''
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2711";
fragment@0 {
target = <&vchiq>;
__overlay__ {
status = "disabled";
};
};
};
'';
}
{
# Adapted from: https://github.com/raspberrypi/linux/blob/rpi-6.1.y/arch/arm/boot/dts/overlays/hifiberry-digi-pro-overlay.dts
# changes:
# - modified top-level "compatible" field from bcm2835 to bcm2711
# - s/i2s_clk_consumer/i2s/ (name on bcm2711 platform)
name = "hifiberry-digi-pro";
dtsText = ''
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2711";
fragment@0 {
target = <&i2s>;
__overlay__ {
status = "okay";
};
};
fragment@1 {
target = <&i2c1>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
status = "okay";
wm8804@3b {
#sound-dai-cells = <0>;
compatible = "wlf,wm8804";
reg = <0x3b>;
PVDD-supply = <&vdd_3v3_reg>;
DVDD-supply = <&vdd_3v3_reg>;
status = "okay";
};
};
};
fragment@2 {
target = <&sound>;
__overlay__ {
compatible = "hifiberry,hifiberry-digi";
i2s-controller = <&i2s>;
status = "okay";
clock44-gpio = <&gpio 5 0>;
clock48-gpio = <&gpio 6 0>;
};
};
};
'';
}
];
};
firmware = with pkgs; [
@ -35,25 +105,66 @@
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
systemWide = true;
};
virtualisation.oci-containers = {
backend = "podman";
containers.homeassistant = {
volumes = [ "home-assistant:/config" ];
environment.TZ = config.time.timeZone;
image = "ghcr.io/home-assistant/home-assistant:stable";
extraOptions = [
"--network=host"
"--device=/dev/ttyUSB0:/dev/ttyUSB0"
];
age.secrets."files/services/home-assistant/secrets.yaml" = {
file = "${inputs.secrets}/files/services/home-assistant/secrets.yaml.age";
path = "${config.services.home-assistant.configDir}/secrets.yaml";
owner = "hass";
group = "hass";
};
services.home-assistant = {
enable = true;
extraComponents = [
"api"
"alert"
"auth"
"backup"
"command_line"
"default_config"
"homekit_controller"
"homekit"
"http"
"icloud"
"jellyfin"
"metoffice"
"mqtt"
"onkyo"
"ping"
"proximity"
"radio_browser"
"scrape"
"sensor"
"system_health"
];
config = {
default_config = {};
backup = {};
homeassistant = {
name = "Home";
latitude = "!secret latitude";
longitude = "!secret longitude";
country = "GB";
temperature_unit = "C";
time_zone = config.time.timeZone;
unit_system = "metric";
};
mqtt = { };
scene = "!include scenes.yaml";
automation = "!include automations.yaml";
system_health = { };
recorder = {
purge_keep_days = 365;
};
};
};
services.mosquitto = {
enable = true;
listeners = [{
acl = [ "pattern readwrite #" ];
omitPasswordAuth = true;
port = 1883;
settings = {
allow_anonymous = true;
@ -69,10 +180,17 @@
};
services.zigbee2mqtt = {
package = pkgs.unstable.zigbee2mqtt;
enable = true;
dataDir = "/var/lib/zigbee2mqtt";
settings = {
homeassistant = true;
homeassistant = lib.optionalAttrs config.services.home-assistant.enable {
discovery_topic = "homeassistant";
status_topic = "hass/status";
legacy_entity_attributes = true;
legacy_triggers = true;
};
availability = true;
frontend = true;
device_options = {
retain = true;
@ -85,6 +203,7 @@
network_key = "!secret.yaml network_key";
pan_id = 13001;
ext_pan_id = [ 79 1 73 47 250 136 124 222 ];
transmit_power = 20;
};
mqtt = {
version = 5;
@ -112,7 +231,16 @@
};
};
# Connection to ONKYO HT-R990
networking.interfaces.end0 = {
ipv4.addresses = [{
address = "172.16.0.1";
prefixLength = 30;
}];
};
environment.systemPackages = with pkgs; [
python311Packages.onkyo-eiscp
libraspberrypi
raspberrypi-eeprom
];

View File

@ -1,47 +1,20 @@
{ config, lib, pkgs, ... }:
{
time.timeZone = "Europe/London";
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
console.keyMap = "uk";
imports = [
./common.nix
];
documentation.enable = false;
services.openssh = {
enable = true;
settings = {
KbdInteractiveAuthentication = false;
PasswordAuthentication = false;
PermitRootLogin = "no";
};
};
environment.systemPackages = with pkgs; [
git
neovim
];
nix = {
settings = {
auto-optimise-store = true;
};
gc = {
automatic = true;
dates = "weekly";
options = "-d --delete-older-than 7d";
security = {
acme.acceptTerms = true;
auditd.enable = true;
audit = {
enable = true;
rules = [
"-a exit,always -F arch=b64 -S execve"
];
};
};

18
hosts/vps1/README.md Normal file
View File

@ -0,0 +1,18 @@
# vps1
## Overview
VPS hosted in OVH.
## Specs
* CPU - ??
* Memory - ??
### Disks
Device | Partitions _(filesystem, usage)_
--- | ---
NVMe | `/dev/sda1` (ext4, NixOS Root)
### Networks
- DHCP on `10.0.1.0/24` subnet.
- Tailscale on `100.64.0.0/10` subnet. FQDN: `vps1.mesh.vimium.net`.

69
hosts/vps1/default.nix Normal file
View File

@ -0,0 +1,69 @@
{ config, lib, pkgs, inputs, ... }:
{
imports = [
./hardware-configuration.nix
../server.nix
];
networking = {
hostId = "08bf6db3";
domain = "mesh.vimium.net";
firewall = {
enable = true;
allowedTCPPorts = [
22 # SSH
];
};
};
users = {
users = {
jellyfin = {
isSystemUser = true;
group = "jellyfin";
shell = "/bin/sh";
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOaaS+KMAEAymZhIJGC4LK8aMhUzhpmloUgvP2cxeBH4 jellyfin"
];
};
root = {
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILVHTjsyMIV4THNw6yz0OxAxGnC+41gX72UrPqTzR+OS jordan@vimium.com"
];
};
};
groups = {
jellyfin = { };
};
};
services.openssh.settings.PermitRootLogin = lib.mkForce "prohibit-password";
security.acme.defaults = {
email = "hostmaster@vimium.com";
group = "nginx";
webroot = "/var/lib/acme/acme-challenge";
};
modules = {
services = {
borgmatic = {
enable = true;
directories = [
"/home"
"/var/lib"
"/var/www"
];
repoPath = "ssh://p91y8oh7@p91y8oh7.repo.borgbase.com/./repo";
};
coturn.enable = true;
gitea.enable = true;
headscale.enable = true;
matrix-synapse.enable = true;
nginx.enable = true;
};
};
system.stateVersion = "22.11";
}

View File

@ -0,0 +1,26 @@
{ config, lib, pkgs, modulesPath, ... }:
{
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
boot = {
initrd = {
availableKernelModules = [ "ata_piix" "uhci_hcd" "xen_blkfront" "vmw_pvscsi" ];
kernelModules = [ "nvme" ];
};
loader.grub.device = "/dev/sda";
tmp.cleanOnBoot = true;
};
zramSwap.enable = true;
fileSystems = {
"/" = {
device = "/dev/sda1";
fsType = "ext4";
};
};
}

View File

@ -25,13 +25,17 @@
./dev/zig.nix
./editors/neovim
./editors/vscode.nix
./hardware/presonus-studio.nix
./networking/tailscale.nix
./networking/wireless.nix
./security/gpg.nix
./security/pass.nix
./services/borgmatic
./services/coturn
./services/matrix
./services/gitea
./services/headscale
./services/matrix-synapse
./services/nginx
./shell/git
./shell/zsh
];

View File

@ -19,6 +19,10 @@ in {
default = false;
example = true;
};
ps1.enable = lib.mkOption {
default = false;
example = true;
};
ps2.enable = lib.mkOption {
default = false;
example = true;
@ -35,14 +39,23 @@ in {
default = false;
example = true;
};
switch.enable = lib.mkOption {
default = false;
example = true;
};
wii.enable = lib.mkOption {
default = false;
example = true;
};
xbox.enable = lib.mkOption {
default = false;
example = true;
};
};
config = {
user.packages = with pkgs; [
user.packages = with pkgs.unstable; [
(lib.mkIf cfg.ps1.enable duckstation)
(lib.mkIf cfg.ps2.enable pcsx2)
(lib.mkIf cfg.ps3.enable rpcs3)
(lib.mkIf cfg.psp.enable ppsspp)
@ -51,9 +64,11 @@ in {
cfg.gb.enable ||
cfg.snes.enable)
higan)
(lib.mkIf cfg.switch.enable yuzuPackages.mainline)
(lib.mkIf (cfg.wii.enable ||
cfg.gamecube.enable)
dolphin-emu)
(lib.mkIf cfg.xbox.enable xemu)
];
};
}

View File

@ -17,6 +17,7 @@ in {
};
services.flatpak.enable = true;
services.fwupd.enable = true;
programs.dconf.enable = true;
dconf.settings = {
@ -102,6 +103,12 @@ in {
picture-uri = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/adwaita-l.jpg";
picture-uri-dark = "file://${pkgs.gnome.gnome-backgrounds}/share/backgrounds/gnome/adwaita-d.jpg";
};
"org/gnome/desktop/peripherals/touchpad" = {
tap-to-click = true;
};
"org/gnome/desktop/search-providers" = {
disabled = [ "org.gnome.Epiphany.desktop" ];
};
"org/gtk/settings/file-chooser" = {
show-hidden = true;
sort-directories-first = true;
@ -131,6 +138,7 @@ in {
};
"org/gnome/mutter" = {
center-new-windows = true;
edge-tiling = true;
experimental-features = [ "scale-monitor-framebuffer" ];
};
"org/gnome/desktop/interface" = {
@ -153,12 +161,29 @@ in {
];
user.packages = with pkgs; [
authenticator
bottles
bustle
celluloid
d-spy
drawing
fragments
gnome.ghex
# gnome-builder
gnome-decoder
gnome-firmware
gnome-frog
gnome-obfuscate
gnome-podcasts
identity
mission-center
newsflash
schemes
shortwave
];
environment.systemPackages = with pkgs; [
adw-gtk3
bind
bmon
fd
@ -194,6 +219,7 @@ in {
# gnomeExtensions.worksets
# gnomeExtensions.workspace-matrix
iotop
unstable.morewaita-icon-theme
ripgrep
rsync
tcpdump

View File

@ -0,0 +1,69 @@
{ config, lib, pkgs, ... }:
let
cfg = config.modules.hardware.presonus-studio;
snd-usb-audio-module = pkgs.callPackage ./snd-usb-audio.nix {
kernel = config.boot.kernelPackages.kernel;
};
patched = snd-usb-audio-module.overrideAttrs (prev: {
patches = [ ./0001-Update-device-ID-for-PreSonus-1824c.patch ];
});
upmixConfig = ''
stream.properties = {
channelmix.upmix = true
channelmix.upmix-method = psd
}
'';
in {
options.modules.hardware.presonus-studio = {
enable = lib.mkOption {
default = false;
example = true;
};
};
config = lib.mkIf cfg.enable {
boot.kernelModules = [ "snd-usb-audio" ];
boot.extraModulePackages = [
(patched)
];
environment.etc = {
"pipewire/pipewire.conf.d/10-network.conf".text = ''
context.modules = [
{
name = libpipewire-module-rtp-session
args = {
stream.props = {
node.name = "rtp-source"
}
}
}
]
'';
"pipewire/pipewire.conf.d/surround.conf".text = ''
context.modules = [
{
name = libpipewire-module-loopback
args = {
node.description = "Genelec 4.1 Surround"
capture.props = {
node.name = "Genelec_Speakers"
media.class = "Audio/Sink"
audio.position = [ FL FR SL SR LFE ]
}
playback.props = {
node.name = "playback.Genelec_Speakers"
audio.position = [ AUX0 AUX1 AUX3 AUX4 AUX5 ]
target.object = "alsa_output.usb-PreSonus_Studio_1824c_SC4E21110775-00.multichannel-output"
stream.dont-remix = true
node.passive = true
}
}
}
]
'';
"pipewire/pipewire-pulse.conf.d/40-upmix.conf".text = upmixConfig;
"pipewire/client-rt.conf.d/40-upmix.conf".text = upmixConfig;
};
};
}

View File

@ -26,11 +26,35 @@ in {
wireless = {
enable = true;
interfaces = cfg.interfaces;
environmentFile = config.age.secrets.passwords/networks.path;
environmentFile = config.age.secrets."passwords/networks".path;
networks = {
"Apollo 600 Mbps".psk = "@PSK_APOLLO@";
};
};
networkmanager.ensureProfiles.profiles = {
"Apollo" = {
connection = {
id = "Apollo 600 Mbps";
type = "wifi";
};
wifi = {
mode = "infrastructure";
ssid = "Apollo 600 Mbps";
};
wifi-security = {
auth-alg = "open";
key-mgmt = "wpa-psk";
psk = "";
};
ipv4 = {
method = "auto";
};
ipv6 = {
addr-gen-mode = "stable-privacy";
method = "auto";
};
};
};
};
};
}

View File

@ -39,15 +39,11 @@ in {
repositories = [
{ label = "borgbase"; path = cfg.repoPath; }
];
storage = {
encryption_passcommand = "cat ${config.age.secrets."passwords/services/borg/${hostname}-passphrase".path}";
ssh_command = "ssh -i /etc/ssh/ssh_host_ed25519_key";
};
retention = {
keep_daily = 7;
keep_weekly = 4;
keep_monthly = 6;
};
encryption_passcommand = "cat ${config.age.secrets."passwords/services/borg/${hostname}-passphrase".path}";
ssh_command = "ssh -i /etc/ssh/ssh_host_ed25519_key";
keep_daily = 7;
keep_weekly = 4;
keep_monthly = 6;
};
};

View File

@ -4,7 +4,6 @@ with lib;
let
cfg = config.modules.services.coturn;
domain = "vimium.com";
in {
options.modules.services.coturn = {
enable = mkOption {
@ -13,11 +12,7 @@ in {
};
};
config = {
age.secrets."passwords/services/coturn/secret" = {
file = "${inputs.secrets}/passwords/services/coturn/secret.age";
};
config = mkIf cfg.enable {
networking.firewall = {
allowedTCPPorts = [
5349 # STUN TLS
@ -28,12 +23,24 @@ in {
];
};
security.acme.certs = {
"turn.vimium.com" = {
reloadServices = [ "coturn" ];
};
};
age.secrets."passwords/services/coturn/shared-secret" = {
file = "${inputs.secrets}/passwords/services/coturn/shared-secret.age";
owner = "turnserver";
group = "turnserver";
};
services.coturn = {
enable = true;
lt-cred-mech = true;
use-auth-secret = true;
static-auth-secret = ""; # TODO: Pass as extraConfig
realm = "turn.${domain}";
static-auth-secret-file = config.age.secrets."passwords/services/coturn/shared-secret".path;
realm = "turn.vimium.com";
relay-ips = [
"198.244.190.160"
];
@ -44,16 +51,10 @@ in {
no-multicast-peers
'';
secure-stun = true;
cert = "/var/lib/acme/turn.${domain}/fullchain.pem";
pkey = "/var/lib/acme/turn.${domain}/key.pem";
cert = "/var/lib/acme/turn.vimium.com/fullchain.pem";
pkey = "/var/lib/acme/turn.vimium.com/key.pem";
min-port = 49152;
max-port = 49999;
};
security.acme.certs = {
"turn.${domain}" = {
reloadServices = [ "coturn" ];
};
};
};
}

View File

@ -0,0 +1,83 @@
{ config, lib, pkgs, inputs, ... }:
with lib;
let
cfg = config.modules.services.gitea;
in {
options.modules.services.gitea = {
enable = mkOption {
default = false;
example = true;
};
};
config = mkIf cfg.enable {
users = {
users.git = {
isSystemUser = true;
useDefaultShell = true;
group = "git";
extraGroups = [ "gitea" ];
home = config.services.gitea.stateDir;
};
groups.git = { };
};
services.nginx = {
upstreams.gitea = {
servers = {
"unix:${config.services.gitea.settings.server.HTTP_ADDR}" = { };
};
};
virtualHosts = {
"git.vimium.com" = {
forceSSL = true;
enableACME = true;
locations."/".proxyPass = "http://gitea";
};
};
};
services.gitea = rec {
package = pkgs.unstable.gitea;
enable = true;
user = "git";
appName = "Vimium Git";
stateDir = "/var/lib/gitea";
repositoryRoot = "${stateDir}/repositories";
database = {
type = "sqlite3";
inherit user;
path = "${stateDir}/gitea.db";
};
lfs = {
enable = true;
contentDir = "${stateDir}/lfs";
};
settings = {
server = {
SSH_USER = "git";
SSH_DOMAIN = "git.vimium.com";
SSH_PORT = lib.head config.services.openssh.ports;
OFFLINE_MODE = true;
PROTOCOL = "http+unix";
DOMAIN = config.networking.domain;
ROOT_URL = "https://git.vimium.com/";
};
service.DISABLE_REGISTRATION = true;
session.COOKIE_SECURE = true;
log.ROOT_PATH = "${stateDir}/log";
ui = {
THEMES = "gitea,arc-green,github-dark,bthree-dark";
DEFAULT_THEME = "github-dark";
};
actions.ENABLED = true;
indexer = {
REPO_INDEXER_ENABLED = true;
};
packages.CHUNKED_UPLOAD_PATH = lib.mkForce "${stateDir}/data/tmp/package-upload";
};
};
};
}

View File

@ -0,0 +1,43 @@
{ config, lib, pkgs, inputs, ... }:
with lib;
let
cfg = config.modules.services.headscale;
in {
options.modules.services.headscale = {
enable = mkOption {
default = false;
example = true;
};
};
config = mkIf cfg.enable {
services.nginx.virtualHosts = {
"headscale.vimium.net" = {
forceSSL = true;
enableACME = true;
locations."/" = {
proxyPass = "http://localhost:${toString config.services.headscale.port}";
proxyWebsockets = true;
};
};
};
services.headscale = {
enable = true;
port = 8080;
settings = {
server_url = "https://headscale.vimium.net";
dns_config = {
base_domain = "vimium.net";
};
logtail.enabled = false;
};
};
environment.systemPackages = with pkgs; [
config.services.headscale.package
];
};
}

View File

@ -0,0 +1,127 @@
{ config, lib, pkgs, inputs, ... }:
with lib;
let
cfg = config.modules.services.matrix-synapse;
matrixClientConfig = {
"m.homeserver" = {
base_url = "https://matrix.vimium.com";
server_name = "vimium.com";
};
"m.identity_server" = {};
};
matrixServerConfig."m.server" = "matrix.vimium.com:443";
mkWellKnown = data: ''
more_set_headers 'Content-Type: application/json';
return 200 '${builtins.toJSON data}';
'';
in {
options.modules.services.matrix-synapse = {
enable = mkOption {
default = false;
example = true;
};
};
config = mkIf cfg.enable {
networking.firewall.allowedTCPPorts = [
8448 # Matrix federation
];
security.acme.certs = {
"matrix.vimium.com" = {
reloadServices = [ "matrix-synapse" ];
};
};
services.nginx.virtualHosts = {
"chat.vimium.com" = {
forceSSL = true;
enableACME = true;
root = pkgs.unstable.element-web.override {
conf = {
default_server_config = matrixClientConfig;
brand = "Vimium Chat";
branding = {
auth_header_logo_url = "https://vimium.com/images/logo.svg";
auth_footer_links = [
{ "text" = "Vimium.com"; "url" = "https://vimium.com"; }
];
};
};
};
};
"matrix.vimium.com" = {
forceSSL = true;
enableACME = true;
listen = [
{
addr = "0.0.0.0";
port = 443;
ssl = true;
}
{
addr = "0.0.0.0";
port = 80;
}
{
addr = "0.0.0.0";
port = 8448;
ssl = true;
}
{
addr = "[::1]";
port = 443;
ssl = true;
}
{
addr = "[::1]";
port = 80;
}
{
addr = "[::1]";
port = 8448;
ssl = true;
}
];
locations = {
"/" = {
proxyPass = "http://localhost:8008";
extraConfig = ''
proxy_set_header X-Forwarded-For $remote_addr;
'';
};
"/_matrix" = {
proxyPass = "http://localhost:8008";
extraConfig = ''
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size 50M;
'';
};
"/_synapse/client".proxyPass = "http://localhost:8008";
};
};
"vimium.com" = {
locations."= /.well-known/matrix/server".extraConfig = (mkWellKnown matrixServerConfig);
locations."= /.well-known/matrix/client".extraConfig = (mkWellKnown matrixClientConfig);
};
};
services.matrix-synapse = {
enable = true;
settings = {
database.name = "sqlite3";
enable_registration = false;
server_name = "vimium.com";
# turn_shared_secret = "???";
# turn_uris = [
# "turn:turn.vimium.com:5349?transport=udp"
# "turn:turn.vimium.com:5350?transport=udp"
# "turn:turn.vimium.com:5349?transport=tcp"
# "turn:turn.vimium.com:5350?transport=tcp"
# ];
};
};
};
}

View File

@ -1,120 +0,0 @@
{ config, lib, pkgs, inputs, ... }:
with lib;
let
cfg = config.modules.services.matrix;
domain = "vimium.com";
clientConfig = {
"m.homeserver" = {
base_url = "https://matrix.${domain}";
server_name = domain;
};
"m.identity_server" = {};
};
serverConfig."m.server" = "matrix.${domain}:443";
mkWellKnown = data: ''
more_set_headers 'Content-Type: application/json';
return 200 '${builtins.toJSON data}';
'';
in {
options.modules.services.matrix = {
enable = mkOption {
default = false;
example = true;
};
coturn = mkOption {
default = config.services.coturn.enable;
example = true;
};
elementWeb = mkOption {
default = true;
example = true;
};
};
config = mkIf cfg.enable {
networking.firewall = {
allowedTCPPorts = [
8448 # Matrix federation
];
};
services.nginx = {
virtualHosts = {
"${domain}" = {
# Assume this listener is already setup
locations."= /.well-known/matrix/server".extraConfig = (mkWellKnown serverConfig);
locations."= /.well-known/matrix/client".extraConfig = (mkWellKnown clientConfig);
};
"matrix.${domain}" = {
forceSSL = true;
useACMEHost = "matrix.${domain}";
listen = [
{ addr = "0.0.0.0"; port = 443; ssl = true; }
{ addr = "0.0.0.0"; port = 80; }
{ addr = "0.0.0.0"; port = 8448; ssl = true; }
{ addr = "[::1]"; port = 443; ssl = true; }
{ addr = "[::1]"; port = 80; }
{ addr = "[::1]"; port = 8448; ssl = true; }
];
locations = {
"/" = {
proxyPass = "http://localhost:8008";
extraConfig = ''
proxy_set_header X-Forwarded-For $remote_addr;
'';
};
"/_matrix" = {
proxyPass = "http://localhost:8008";
extraConfig = ''
proxy_set_header X-Forwarded-For $remote_addr;
client_max_body_size ${services.matrix-synapse.settings.max_upload_size};
'';
};
"/_synapse/client".proxyPass = "http://localhost:8008";
};
};
"chat.${domain}" = mkIf cfg.elementWeb {
forceSSL = true;
useACMEHost = "matrix.${domain}";
root = pkgs.element-web.override {
conf = {
default_server_config = clientConfig;
brand = "Vimium Chat";
branding = {
auth_header_logo_url = "https://vimium.com/images/logo.svg";
auth_footer_links = [
{ text = "Vimium.com"; url = "https://www.vimium.com"; }
];
};
};
};
};
};
};
services.matrix-synapse = {
enable = true;
settings = {
database.name = "sqlite3";
enable_registration = false;
server_name = domain;
turn_shared_secret_file = mkIf cfg.coturn config.age.secrets."passwords/services/coturn/secret".path;
turn_uris = mkIf cfg.coturn [
"turn:${config.services.coturn.realm}:5349?transport=udp"
"turn:${config.services.coturn.realm}:5350?transport=udp"
"turn:${config.services.coturn.realm}:5349?transport=tcp"
"turn:${config.services.coturn.realm}:5350?transport=tcp"
];
};
};
security.acme.certs = {
"matrix.${domain}" = {
extraDomainNames = mkIf cfg.elementWeb [ "chat.${domain}" ];
reloadServices = [ "matrix-synapse" ];
};
};
};
}

View File

@ -0,0 +1,157 @@
{ config, lib, pkgs, inputs, ... }:
with lib;
let
cfg = config.modules.services.nginx;
nginxErrorPages = ''
location @error_pages {
rewrite ^.*$ /''${status}.html break;
root "/var/www/html/errors";
}
'';
nginxEdgeHeaders = ''
more_set_headers 'Server: Vimium';
more_set_headers 'Access-Control-Allow-Origin: *';
add_header Expect-CT max-age=30 always;
add_header Referrer-Policy strict-origin-when-cross-origin always;
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
add_header Vimium-Responding-Instance $hostname;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options nosniff always;
'';
nginxStrictHeaders = ''
add_header X-Frame-Options SAMEORIGIN always;
add_header Permissions-Policy "fullscreen=(self), sync-xhr=(self)" always;
'';
mkRedirect = from: to: {
"${from}" = {
forceSSL = true;
enableACME = true;
serverAliases = [ "www.${from}" ];
locations."/".return = "301 https://${to}$request_uri";
extraConfig = nginxErrorPages + nginxEdgeHeaders + nginxStrictHeaders;
};
};
in {
options.modules.services.nginx = {
enable = mkOption {
default = false;
example = true;
};
};
config = mkIf cfg.enable {
networking.firewall.allowedTCPPorts = [
80 # HTTP
443 # HTTPS
];
services.nginx = {
enable = true;
package = pkgs.openresty;
recommendedGzipSettings = true;
recommendedOptimisation = true;
recommendedTlsSettings = true;
clientMaxBodySize = "2G";
sslProtocols = "TLSv1.2 TLSv1.3";
sslCiphers = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
appendHttpConfig = ''
error_page 400 @error_pages;
error_page 401 @error_pages;
error_page 403 @error_pages;
error_page 404 @error_pages;
error_page 405 @error_pages;
error_page 429 @error_pages;
error_page 500 @error_pages;
error_page 501 @error_pages;
error_page 502 @error_pages;
error_page 503 @error_pages;
error_page 504 @error_pages;
client_body_buffer_size 16k;
client_header_buffer_size 8k;
'';
appendConfig = ''
worker_processes auto;
worker_cpu_affinity auto;
worker_rlimit_nofile 50000;
'';
eventsConfig = ''
worker_connections 20000;
multi_accept off;
'';
virtualHosts = {
## Static sites
"jellyfin.vimium.com" = {
forceSSL = true;
enableACME = true;
extraConfig = nginxErrorPages + nginxEdgeHeaders;
locations."/" = {
proxyPass = "http://localhost:8000";
extraConfig = ''
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
'';
};
};
"pki.vimium.com" = {
addSSL = true;
forceSSL = false;
enableACME = true;
extraConfig = ''
${nginxErrorPages}
more_set_headers 'Server: Vimium';
'';
locations."/" = {
root = "/var/www/pki.vimium.com";
};
};
"suhailhussain.com" = {
forceSSL = true;
enableACME = true;
serverAliases = [ "www.suhailhussain.com" ];
extraConfig = nginxErrorPages + nginxEdgeHeaders + nginxStrictHeaders;
locations."/" = {
root = "/var/www/suhailhussain.com";
};
};
"vimium.com" = {
default = true;
forceSSL = true;
enableACME = true;
serverAliases = [ "www.vimium.com" ];
extraConfig = nginxErrorPages + nginxEdgeHeaders + nginxStrictHeaders + ''
add_header Content-Security-Policy "default-src 'self' https://vimium.com https://www.vimium.com; style-src 'unsafe-inline'; object-src 'none'; upgrade-insecure-requests" always;
'';
locations."/" = {
root = "/var/www/vimium.com";
};
};
}
## Redirects
// (mkRedirect "h0lt.com" "jdholt.com")
// (mkRedirect "jordanholt.xyz" "jdholt.com")
// (mkRedirect "jdholt.com" "vimium.com")
// (mkRedirect "omnimagic.com" "vimium.com")
// (mkRedirect "omnimagic.net" "vimium.com")
// (mkRedirect "thelostlegend.com" "suhailhussain.com")
// (mkRedirect "vimium.co" "vimium.com")
// (mkRedirect "vimium.co.uk" "vimium.com")
// (mkRedirect "vimium.info" "vimium.com")
// (mkRedirect "vimium.net" "vimium.com")
// (mkRedirect "vimium.org" "vimium.com")
// (mkRedirect "vimium.xyz" "vimium.com");
};
};
}