84 Commits

Author SHA1 Message Date
14d8f23d54 hosts/vps1: add route for skycam
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m19s
2025-06-23 18:43:22 +01:00
47bcec6b0d flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m47s
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/7f1857b31522062a6a00f88cbccf86b43acceed1?narHash=sha256-KrC9iOVYIn6ukpVlHbqSA4hYCZ6oDyJKrcLqv4c5v84%3D' (2025-06-16)
  → 'github:nix-community/disko/8fd2d6c75009ac75f9a6fb18c33a239806778d01?narHash=sha256-kD88T/NqmcgfOBFAwphN30ccaUdj6K6%2BLG0XdM2w2LA%3D' (2025-06-23)
• Updated input 'hyprland':
    'github:hyprwm/Hyprland/8b1d5560cf1ca2c4c2624914de284d315502a092?narHash=sha256-a6SN50G3JLZV7OQoQL9O7vNFVO9uR9/2arJcqUpI4EU%3D' (2025-06-21)
  → 'github:hyprwm/Hyprland/cf7e3aa448f8c9e0d9e8f407e6ed730da55acc69?narHash=sha256-uxIwiV1p2SVNIoP%2BoD025lZKfq4zNn7CmdaYVoskqnQ%3D' (2025-06-23)
• Updated input 'hyprland-plugins':
    'github:hyprwm/hyprland-plugins/8b4405ab46cafc471d5b09ff7258676dc9aaca59?narHash=sha256-/qnR7/GvGP1cGtOOm4OGJRtkVejn75/jsvJpiqE1ZDk%3D' (2025-06-21)
  → 'github:hyprwm/hyprland-plugins/132e610b6526820fa1bcf33588be11538fb92ca7?narHash=sha256-ZA00aPfBtrSTz6UsZ6uoBfy2UYi49A9XpxxyKUjbQ2A%3D' (2025-06-23)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/08f22084e6085d19bcfb4be30d1ca76ecb96fe54?narHash=sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50%3D' (2025-06-19)
  → 'github:NixOS/nixpkgs/4206c4cb56751df534751b058295ea61357bbbaa?narHash=sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc%3D' (2025-06-21)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/623c56286de5a3193aa38891a6991b28f9bab056?narHash=sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4%3D' (2025-06-11)
  → 'github:cachix/git-hooks.nix/fae816c55a75675f30d18c9cbdecc13b970d95d4?narHash=sha256-uLtw0iF9mQ94L831NOlQLPX9wm0qzd5yim3rcwACEoM%3D' (2025-06-23)
2025-06-23 17:22:41 +01:00
fb15ef954b hosts/pi: add snapcast
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m15s
2025-06-22 23:03:31 +01:00
6a8016dd66 home-assistant: configure onkyo in UI
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m15s
2025-06-22 20:43:46 +01:00
8a110a8f30 pkgs/streamrip: remove
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m17s
2025-06-22 18:18:03 +01:00
c71208da11 open-webui: backup private directory
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
2025-06-22 18:03:52 +01:00
c1ded6c3ce hosts/skycam: backup skycam-archiver directory 2025-06-22 18:02:32 +01:00
68b09a34d2 hosts/library: backup open-webui state directory
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
2025-06-22 17:44:51 +01:00
c57bbad8e5 pkgs/jellysearch: only listen on loopback interface
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m19s
2025-06-22 17:19:08 +01:00
2aa6dd2aa7 hosts/library: fix jellysearch service
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
2025-06-22 17:14:16 +01:00
532427c07f pkgs/jellysearch: init at 0.0.1
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
2025-06-22 17:00:54 +01:00
3fb607752b hosts/library: use meilisearch 1.14
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
2025-06-22 14:38:36 +01:00
e0c0ae3ee7 hosts/library: add jellysearch
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m17s
2025-06-22 14:21:39 +01:00
fed69bbc80 hosts/library: import downloads zpool
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
2025-06-22 13:29:05 +01:00
ac95c15e34 hosts/library: update README.md 2025-06-22 13:27:41 +01:00
b4ffc4ec0b hosts/skycam: add archiver script
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
2025-06-22 10:56:52 +01:00
a578aaa922 hosts/skycam: adjust camera settings
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m17s
2025-06-22 10:02:53 +01:00
48ac90515d flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m18s
Flake lock file updates:

• Updated input 'hyprland':
    'github:hyprwm/Hyprland/8ebff1948ff665ff6a1b49fb715b7de0797fae04?narHash=sha256-HsBt7sl2ODSHv1LxKxA47j7klCqY4k3fE4SQGnEO0Ac%3D' (2025-06-19)
  → 'github:hyprwm/Hyprland/8b1d5560cf1ca2c4c2624914de284d315502a092?narHash=sha256-a6SN50G3JLZV7OQoQL9O7vNFVO9uR9/2arJcqUpI4EU%3D' (2025-06-21)
• Updated input 'hyprland/aquamarine':
    'github:hyprwm/aquamarine/94981cf75a9f11da0b6dd6a1abbd7c50a36ab2d3?narHash=sha256-t0HfHg/1%2BTbSra5s6nNM0o4tnb3uqWedShSpZXsUMYY%3D' (2025-06-05)
  → 'github:hyprwm/aquamarine/7cef49d261cbbe537e8cb662485e76d29ac4cbca?narHash=sha256-lVBKxd9dsZOH1fA6kSE5WNnt8e%2B09fN%2BNL/Q3BjTWHY%3D' (2025-06-19)
• Updated input 'hyprland/hyprgraphics':
    'github:hyprwm/hyprgraphics/c7225d73755a6c4c7c72f4d4f3925ea426e325a8?narHash=sha256-8qiKEWcxUrjpUpK%2BWyFNg/72C8rp70LUuyTD23T%2BSdQ%3D' (2025-06-06)
  → 'github:hyprwm/hyprgraphics/15c6f8f3a567fec9a0f732cd310a7ff456deef88?narHash=sha256-cNP%2BbVq8m5x2Rl6MTjwfQLCdwbVmKvTH7yqVc1SpiJM%3D' (2025-06-19)
• Updated input 'hyprland/hyprland-qtutils':
    'github:hyprwm/hyprland-qtutils/396e8aa1c06274835b69da7f9a015fff9a9b7522?narHash=sha256-t1PM0wxQLQwv2F2AW23uA7pm5giwmcgYEWbNIRct9r4%3D' (2025-06-05)
  → 'github:hyprwm/hyprland-qtutils/b13c7481e37856f322177010bdf75fccacd1adc8?narHash=sha256-D868K1dVEACw17elVxRgXC6hOxY%2B54wIEjURztDWLk8%3D' (2025-06-19)
• Updated input 'hyprland/hyprlang':
    'github:hyprwm/hyprlang/1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676?narHash=sha256-qr0KXeczF8Sma3Ae7%2BdR2NHhvG7YeLBJv19W4oMu6ZE%3D' (2025-06-05)
  → 'github:hyprwm/hyprlang/cee01452bca58d6cadb3224e21e370de8bc20f0b?narHash=sha256-/iuJ1paQOBoSLqHflRNNGyroqfF/yvPNurxzcCT0cAE%3D' (2025-06-19)
• Updated input 'hyprland/hyprutils':
    'github:hyprwm/hyprutils/57ab2a867d8b554ad89f29060c15efd11631db91?narHash=sha256-7F/KG8dwSH9JXdlpOVrEEArS%2BPJSn0iEnx5eVCk89/I%3D' (2025-06-13)
  → 'github:hyprwm/hyprutils/38f3a211657ce82a1123bf19402199b67a410f08?narHash=sha256-JB1IeJ41y7kWc/dPGV6RMcCUM0Xj2NEK26A2Ap7EM9c%3D' (2025-06-19)
• Updated input 'hyprland/hyprwayland-scanner':
    'github:hyprwm/hyprwayland-scanner/817918315ea016cc2d94004bfb3223b5fd9dfcc6?narHash=sha256-IHaGWpGrv7seFWdw/1A%2BwHtTsPlOGIKMrk1TUIYJEFI%3D' (2025-06-05)
  → 'github:hyprwm/hyprwayland-scanner/aa38edd6e3e277ae6a97ea83a69261a5c3aab9fd?narHash=sha256-lGk4gLjgZQ/rndUkzmPYcgbHr8gKU5u71vyrjnwfpB4%3D' (2025-06-19)
• Updated input 'hyprland/nixpkgs':
    'github:NixOS/nixpkgs/ee930f9755f58096ac6e8ca94a1887e0534e2d81?narHash=sha256-Kh9K4taXbVuaLC0IL%2B9HcfvxsSUx8dPB5s5weJcc9pc%3D' (2025-06-13)
  → 'github:NixOS/nixpkgs/08f22084e6085d19bcfb4be30d1ca76ecb96fe54?narHash=sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50%3D' (2025-06-19)
• Updated input 'hyprland/xdph':
    'github:hyprwm/xdg-desktop-portal-hyprland/3cf35e178bc192ee51e3fddfd69e531e2c106a30?narHash=sha256-R9Dn9IyUdPaJHD2Oqd7XJnnxpka6M6UYw4Ld0iA46HM%3D' (2025-06-09)
  → 'github:hyprwm/xdg-desktop-portal-hyprland/400308fc4f9d12e0a93e483c2e7a649e12af1a92?narHash=sha256-VBeZb1oqZM1cqCAZnFz/WyYhO8aF/ImagI7WWg/Z3Og%3D' (2025-06-19)
• Updated input 'hyprland-plugins':
    'github:hyprwm/hyprland-plugins/f49193f8e0b3eb167fc105107791a22fdb1d283f?narHash=sha256-SDhYYByonfW1jdKSe68GukGWSbOuuxzkMVRTXSsU7g0%3D' (2025-06-20)
  → 'github:hyprwm/hyprland-plugins/8b4405ab46cafc471d5b09ff7258676dc9aaca59?narHash=sha256-/qnR7/GvGP1cGtOOm4OGJRtkVejn75/jsvJpiqE1ZDk%3D' (2025-06-21)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/9ba04bda9249d5d5e5238303c9755de5a49a79c5?narHash=sha256-H8J4H2XCIMEJ5g6fZ179QfQvsc2dUqhqfBjC8RAHNRY%3D' (2025-06-18)
  → 'github:NixOS/nixpkgs/b2485d56967598da068b5a6946dadda8bfcbcd37?narHash=sha256-3vkjFnxCOP6vm5Pm13wC/Zy6/VYgei/I/2DWgW4RFeA%3D' (2025-06-20)
• Updated input 'nixvim':
    'github:nix-community/nixvim/1252966779a5632a3cd5238e442d55a1d2f56660?narHash=sha256-M0WNjAy2FCHJAb1hEp%2BJ2gnMk707K5/iTA24amEu/s8%3D' (2025-06-17)
  → 'github:nix-community/nixvim/b04bcdcbba4aa648903e065ad1907a97d4f7aee9?narHash=sha256-kZqTQEARUkkKDFhECd0MGU4wXCJcxCdh5WeM/yD6oI4%3D' (2025-06-21)
2025-06-21 23:53:43 +01:00
4435f4ff2d hosts/vps1: update skycam proxy path
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m20s
2025-06-21 23:53:06 +01:00
f6c0620f8e hosts/skycam: working stream with go2rtc 2025-06-21 23:49:40 +01:00
265fbf1375 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m26s
Flake lock file updates:

• Updated input 'hyprland-plugins':
    'github:hyprwm/hyprland-plugins/03b07176286ba66d8c55ed67ce9b904f7777f41d?narHash=sha256-vkSWTAGpDnXExzsWhjULSX6dL47FUlM0fw7OJooRF8E%3D' (2025-06-19)
  → 'github:hyprwm/hyprland-plugins/f49193f8e0b3eb167fc105107791a22fdb1d283f?narHash=sha256-SDhYYByonfW1jdKSe68GukGWSbOuuxzkMVRTXSsU7g0%3D' (2025-06-20)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/61837d2a33ccc1582c5fabb7bf9130d39fee59ad?narHash=sha256-ynqbgIYrg7P1fAKYqe8I/PMiLABBcNDYG9YaAP/d/C4%3D' (2025-06-16)
  → 'github:NixOS/nixos-hardware/1552a9f4513f3f0ceedcf90320e48d3d47165712?narHash=sha256-vnzzBDbCGvInmfn2ijC4HsIY/3W1CWbwS/YQoFgdgPg%3D' (2025-06-20)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/9e83b64f727c88a7711a2c463a7b16eedb69a84c?narHash=sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI%3D' (2025-06-17)
  → 'github:NixOS/nixpkgs/08f22084e6085d19bcfb4be30d1ca76ecb96fe54?narHash=sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50%3D' (2025-06-19)
2025-06-20 20:22:17 +01:00
d5a188dda6 hosts/skycam: remove patched camera utilities
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m19s
- Remove libcamera overlay
- Remove camera-streamer package
- Remove rpicam-apps package
2025-06-20 20:03:43 +01:00
e3bd1cad68 flake.nix: add skycam deployment target 2025-06-20 20:02:11 +01:00
0e36db8840 flake.nix: add pi deployment target
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m19s
2025-06-20 19:07:20 +01:00
967455f8c3 hosts/server: remove watchdog
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m19s
2025-06-20 18:51:25 +01:00
9316eb1257 hosts/pi: remove kernel override
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m19s
2025-06-20 17:34:55 +01:00
89fb397639 borgmatic: only add postgres to closure if enabled
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m21s
2025-06-20 16:48:49 +01:00
33cc641030 nix: update aarch64-linux builder IP 2025-06-20 16:40:02 +01:00
95617d4ad2 flake.lock: Update
Some checks failed
Check flake / build-amd64-linux (push) Failing after 29s
Flake lock file updates:

• Updated input 'hyprland':
    'github:hyprwm/Hyprland/b49d0ca20e4378db1e9abeb661d72f4c8c070db9?narHash=sha256-vNTJaHBvasZuuwD0cYOqhpICaQ0SnQ7CqBhSZLjw3sc%3D' (2025-06-19)
  → 'github:hyprwm/Hyprland/8ebff1948ff665ff6a1b49fb715b7de0797fae04?narHash=sha256-HsBt7sl2ODSHv1LxKxA47j7klCqY4k3fE4SQGnEO0Ac%3D' (2025-06-19)
• Updated input 'hyprland-plugins':
    'github:hyprwm/hyprland-plugins/a65f46c5646b11451a8ef462f9780e89f809cd5d?narHash=sha256-ODKLzMO/y79mHpUL5%2B6/6S6GTNAzanoIWUAwiyVnwm8%3D' (2025-06-19)
  → 'github:hyprwm/hyprland-plugins/03b07176286ba66d8c55ed67ce9b904f7777f41d?narHash=sha256-vkSWTAGpDnXExzsWhjULSX6dL47FUlM0fw7OJooRF8E%3D' (2025-06-19)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/36ab78dab7da2e4e27911007033713bab534187b?narHash=sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw%3D' (2025-06-17)
  → 'github:NixOS/nixpkgs/9ba04bda9249d5d5e5238303c9755de5a49a79c5?narHash=sha256-H8J4H2XCIMEJ5g6fZ179QfQvsc2dUqhqfBjC8RAHNRY%3D' (2025-06-18)
2025-06-20 08:40:24 +01:00
fa3ed847bf hypnos: add fonts
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m25s
2025-06-19 22:25:10 +01:00
31103c7f53 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m41s
Flake lock file updates:

• Updated input 'agenix':
    'github:ryantm/agenix/4835b1dc898959d8547a871ef484930675cb47f1?narHash=sha256-NwmAFuDUO/PFcgaGGr4j3ozG9Pe5hZ/ogitWhY%2BD81k%3D' (2025-05-18)
  → 'github:ryantm/agenix/531beac616433bac6f9e2a19feb8e99a22a66baf?narHash=sha256-9P1FziAwl5%2B3edkfFcr5HeGtQUtrSdk/MksX39GieoA%3D' (2025-06-17)
• Updated input 'hyprland':
    'github:hyprwm/Hyprland/0ece4af36a988ad06b28ed666011d84372d9e4dc?narHash=sha256-zaTFR6NLaXkveEGl2kdl4UlvT7eHm3cYSbgSkibCO%2BM%3D' (2025-06-16)
  → 'github:hyprwm/Hyprland/b49d0ca20e4378db1e9abeb661d72f4c8c070db9?narHash=sha256-vNTJaHBvasZuuwD0cYOqhpICaQ0SnQ7CqBhSZLjw3sc%3D' (2025-06-19)
• Updated input 'hyprland-plugins':
    'github:hyprwm/hyprland-plugins/4783860953a0777fee43d45fee0df9173f9e8c9e?narHash=sha256-sB2jmzoZgxMOpLsw4EfQyp2NbO3qhorR6gAdbNXHxOk%3D' (2025-06-15)
  → 'github:hyprwm/hyprland-plugins/a65f46c5646b11451a8ef462f9780e89f809cd5d?narHash=sha256-ODKLzMO/y79mHpUL5%2B6/6S6GTNAzanoIWUAwiyVnwm8%3D' (2025-06-19)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/6c64dabd3aa85e0c02ef1cdcb6e1213de64baee3?narHash=sha256-h/aac1dGLhS3qpaD2aZt25NdKY7b%2BJT0ZIP2WuGsJMU%3D' (2025-06-15)
  → 'github:NixOS/nixpkgs/36ab78dab7da2e4e27911007033713bab534187b?narHash=sha256-urV51uWH7fVnhIvsZIELIYalMYsyr2FCalvlRTzqWRw%3D' (2025-06-17)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/ee930f9755f58096ac6e8ca94a1887e0534e2d81?narHash=sha256-Kh9K4taXbVuaLC0IL%2B9HcfvxsSUx8dPB5s5weJcc9pc%3D' (2025-06-13)
  → 'github:NixOS/nixpkgs/9e83b64f727c88a7711a2c463a7b16eedb69a84c?narHash=sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI%3D' (2025-06-17)
• Updated input 'nixvim':
    'github:nix-community/nixvim/1c153ebbf3036acde0dfdbf59187af3ded3e0c65?narHash=sha256-gnJTvIpyhmGu%2BzcvclXYScLvWiCzP6iDzoMnLbrd7A0%3D' (2025-06-16)
  → 'github:nix-community/nixvim/1252966779a5632a3cd5238e442d55a1d2f56660?narHash=sha256-M0WNjAy2FCHJAb1hEp%2BJ2gnMk707K5/iTA24amEu/s8%3D' (2025-06-17)
• Updated input 'nixvim/flake-parts':
    'github:hercules-ci/flake-parts/49f0870db23e8c1ca0b5259734a02cd9e1e371a1?narHash=sha256-F82%2BgS044J1APL0n4hH50GYdPRv/5JWm34oCJYmVKdE%3D' (2025-06-01)
  → 'github:hercules-ci/flake-parts/9305fe4e5c2a6fcf5ba6a3ff155720fbe4076569?narHash=sha256-tYBdgS56eXYaWVW3fsnPQ/nFlgWi/Z2Ymhyu21zVM98%3D' (2025-06-08)
• Updated input 'nixvim/nuschtosSearch':
    'github:NuschtOS/search/f8a1c221afb8b4c642ed11ac5ee6746b0fe1d32f?narHash=sha256-PP11GVwUt7F4ZZi5A5%2B99isuq39C59CKc5u5yVisU/U%3D' (2025-05-26)
  → 'github:NuschtOS/search/8dfe5879dd009ff4742b668d9c699bc4b9761742?narHash=sha256-L3x2nSlFkXkM6tQPLJP3oCBMIsRifhIDPMQQdHO5xWo%3D' (2025-06-12)
2025-06-19 20:06:00 +01:00
152e382214 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m43s
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/dfa4d1b9c39c0342ef133795127a3af14598017a?narHash=sha256-CqmqU5FRg5AadtIkxwu8ulDSOSoIisUMZRLlcED3Q5w%3D' (2025-06-09)
  → 'github:nix-community/disko/7f1857b31522062a6a00f88cbccf86b43acceed1?narHash=sha256-KrC9iOVYIn6ukpVlHbqSA4hYCZ6oDyJKrcLqv4c5v84%3D' (2025-06-16)
• Updated input 'hyprland':
    'github:hyprwm/Hyprland/ad85406220d88c3de9ceba32f17a25caf101bb45?narHash=sha256-vN%2BEKs/P4FXEBagjY9VFoLyVa9a9F4O2S5OD90O4Oew%3D' (2025-06-13)
  → 'github:hyprwm/Hyprland/0ece4af36a988ad06b28ed666011d84372d9e4dc?narHash=sha256-zaTFR6NLaXkveEGl2kdl4UlvT7eHm3cYSbgSkibCO%2BM%3D' (2025-06-16)
• Updated input 'hyprland/hyprutils':
    'github:hyprwm/hyprutils/e36db00dfb3a3d3fdcc4069cb292ff60d2699ccb?narHash=sha256-Q8mAKMDsFbCEuq7zoSlcTuxgbIBVhfIYpX0RjE32PS0%3D' (2025-06-05)
  → 'github:hyprwm/hyprutils/57ab2a867d8b554ad89f29060c15efd11631db91?narHash=sha256-7F/KG8dwSH9JXdlpOVrEEArS%2BPJSn0iEnx5eVCk89/I%3D' (2025-06-13)
• Updated input 'hyprland/nixpkgs':
    'github:NixOS/nixpkgs/d3d2d80a2191a73d1e86456a751b83aa13085d7d?narHash=sha256-QuUtALJpVrPnPeozlUG/y%2BoIMSLdptHxb3GK6cpSVhA%3D' (2025-06-05)
  → 'github:NixOS/nixpkgs/ee930f9755f58096ac6e8ca94a1887e0534e2d81?narHash=sha256-Kh9K4taXbVuaLC0IL%2B9HcfvxsSUx8dPB5s5weJcc9pc%3D' (2025-06-13)
• Updated input 'hyprland/pre-commit-hooks':
    'github:cachix/git-hooks.nix/80479b6ec16fefd9c1db3ea13aeb038c60530f46?narHash=sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo%2BbnXU9D9k%3D' (2025-05-16)
  → 'github:cachix/git-hooks.nix/623c56286de5a3193aa38891a6991b28f9bab056?narHash=sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4%3D' (2025-06-11)
• Updated input 'hyprland/xdph':
    'github:hyprwm/xdg-desktop-portal-hyprland/44bf29f1df45786098920c655af523535a9191ae?narHash=sha256-KIkJu3zF8MF3DuGwzAmo3Ww9wsWXolwV30SjJRTAxYE%3D' (2025-06-05)
  → 'github:hyprwm/xdg-desktop-portal-hyprland/3cf35e178bc192ee51e3fddfd69e531e2c106a30?narHash=sha256-R9Dn9IyUdPaJHD2Oqd7XJnnxpka6M6UYw4Ld0iA46HM%3D' (2025-06-09)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/db030f62a449568345372bd62ed8c5be4824fa49?narHash=sha256-lfxhuxAaHlYFGr8yOrAXZqdMt8PrFLzjVqH9v3lQaoY%3D' (2025-06-13)
  → 'github:NixOS/nixos-hardware/61837d2a33ccc1582c5fabb7bf9130d39fee59ad?narHash=sha256-ynqbgIYrg7P1fAKYqe8I/PMiLABBcNDYG9YaAP/d/C4%3D' (2025-06-16)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/fd487183437963a59ba763c0cc4f27e3447dd6dd?narHash=sha256-mHv/yeUbmL91/TvV95p%2BmBVahm9mdQMJoqaTVTALaFw%3D' (2025-06-12)
  → 'github:NixOS/nixpkgs/6c64dabd3aa85e0c02ef1cdcb6e1213de64baee3?narHash=sha256-h/aac1dGLhS3qpaD2aZt25NdKY7b%2BJT0ZIP2WuGsJMU%3D' (2025-06-15)
• Updated input 'nixvim':
    'github:nix-community/nixvim/88f452558ea37ab8ab2052cf45b5a5653a1e556b?narHash=sha256-X%2BPDQ9kgt3/nOUQWSyz/8WHFOp%2BSyDND%2BbKpVufxpdE%3D' (2025-06-12)
  → 'github:nix-community/nixvim/1c153ebbf3036acde0dfdbf59187af3ded3e0c65?narHash=sha256-gnJTvIpyhmGu%2BzcvclXYScLvWiCzP6iDzoMnLbrd7A0%3D' (2025-06-16)
2025-06-16 23:37:21 +01:00
703e011eae hyprland: use hyprbars from nixpkgs
Some checks failed
Check flake / build-amd64-linux (push) Failing after 1m11s
2025-06-16 11:21:52 +01:00
2023757f1f hosts/helios: hardware tweaks
Some checks failed
Check flake / build-amd64-linux (push) Failing after 1m45s
Remove blacklisting of amdgpu module
Add cpu frequency governor
2025-06-16 11:20:07 +01:00
8e7aa906e2 hyprland: hypr-dynamic-cursors config
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m19s
2025-06-15 13:24:03 +01:00
c829ae4e9d hosts/helios: blacklist amdgpu 2025-06-15 13:17:30 +01:00
2fcafcbdba hyprland: add hypr-dynamic-cursors
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m18s
2025-06-15 11:54:46 +01:00
e7948146e7 hyprland: add hyprbars
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m18s
2025-06-15 11:12:21 +01:00
511df9b56c hyprland: use flake version
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m19s
2025-06-14 18:28:00 +01:00
cdf2c00e9f flake.lock: Update
Flake lock file updates:

• Added input 'hyprland':
    'github:hyprwm/Hyprland/ad85406220d88c3de9ceba32f17a25caf101bb45?narHash=sha256-vN%2BEKs/P4FXEBagjY9VFoLyVa9a9F4O2S5OD90O4Oew%3D' (2025-06-13)
• Added input 'hyprland/aquamarine':
    'github:hyprwm/aquamarine/94981cf75a9f11da0b6dd6a1abbd7c50a36ab2d3?narHash=sha256-t0HfHg/1%2BTbSra5s6nNM0o4tnb3uqWedShSpZXsUMYY%3D' (2025-06-05)
• Added input 'hyprland/aquamarine/hyprutils':
    follows 'hyprland/hyprutils'
• Added input 'hyprland/aquamarine/hyprwayland-scanner':
    follows 'hyprland/hyprwayland-scanner'
• Added input 'hyprland/aquamarine/nixpkgs':
    follows 'hyprland/nixpkgs'
• Added input 'hyprland/aquamarine/systems':
    follows 'hyprland/systems'
• Added input 'hyprland/hyprcursor':
    'github:hyprwm/hyprcursor/45fcc10b4c282746d93ec406a740c43b48b4ef80?narHash=sha256-XR9fsI0zwLiFWfqi/pdS/VD%2BYNorKb3XIykgTg4l1nA%3D' (2025-06-05)
• Added input 'hyprland/hyprcursor/hyprlang':
    follows 'hyprland/hyprlang'
• Added input 'hyprland/hyprcursor/nixpkgs':
    follows 'hyprland/nixpkgs'
• Added input 'hyprland/hyprcursor/systems':
    follows 'hyprland/systems'
• Added input 'hyprland/hyprgraphics':
    'github:hyprwm/hyprgraphics/c7225d73755a6c4c7c72f4d4f3925ea426e325a8?narHash=sha256-8qiKEWcxUrjpUpK%2BWyFNg/72C8rp70LUuyTD23T%2BSdQ%3D' (2025-06-06)
• Added input 'hyprland/hyprgraphics/hyprutils':
    follows 'hyprland/hyprutils'
• Added input 'hyprland/hyprgraphics/nixpkgs':
    follows 'hyprland/nixpkgs'
• Added input 'hyprland/hyprgraphics/systems':
    follows 'hyprland/systems'
• Added input 'hyprland/hyprland-protocols':
    'github:hyprwm/hyprland-protocols/613878cb6f459c5e323aaafe1e6f388ac8a36330?narHash=sha256-kymV5FMnddYGI%2BUjwIw8ceDjdeg7ToDVjbHCvUlhn14%3D' (2025-06-04)
• Added input 'hyprland/hyprland-protocols/nixpkgs':
    follows 'hyprland/nixpkgs'
• Added input 'hyprland/hyprland-protocols/systems':
    follows 'hyprland/systems'
• Added input 'hyprland/hyprland-qtutils':
    'github:hyprwm/hyprland-qtutils/396e8aa1c06274835b69da7f9a015fff9a9b7522?narHash=sha256-t1PM0wxQLQwv2F2AW23uA7pm5giwmcgYEWbNIRct9r4%3D' (2025-06-05)
• Added input 'hyprland/hyprland-qtutils/hyprland-qt-support':
    'github:hyprwm/hyprland-qt-support/4c8053c3c888138a30c3a6c45c2e45f5484f2074?narHash=sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE%3D' (2025-06-05)
• Added input 'hyprland/hyprland-qtutils/hyprland-qt-support/hyprlang':
    follows 'hyprland/hyprland-qtutils/hyprlang'
• Added input 'hyprland/hyprland-qtutils/hyprland-qt-support/nixpkgs':
    follows 'hyprland/hyprland-qtutils/nixpkgs'
• Added input 'hyprland/hyprland-qtutils/hyprland-qt-support/systems':
    follows 'hyprland/hyprland-qtutils/systems'
• Added input 'hyprland/hyprland-qtutils/hyprlang':
    follows 'hyprland/hyprlang'
• Added input 'hyprland/hyprland-qtutils/hyprutils':
    follows 'hyprland/hyprland-qtutils/hyprlang/hyprutils'
• Added input 'hyprland/hyprland-qtutils/nixpkgs':
    follows 'hyprland/nixpkgs'
• Added input 'hyprland/hyprland-qtutils/systems':
    follows 'hyprland/systems'
• Added input 'hyprland/hyprlang':
    'github:hyprwm/hyprlang/1bfb84f54d50c7ae6558c794d3cfd5f6a7e6e676?narHash=sha256-qr0KXeczF8Sma3Ae7%2BdR2NHhvG7YeLBJv19W4oMu6ZE%3D' (2025-06-05)
• Added input 'hyprland/hyprlang/hyprutils':
    follows 'hyprland/hyprutils'
• Added input 'hyprland/hyprlang/nixpkgs':
    follows 'hyprland/nixpkgs'
• Added input 'hyprland/hyprlang/systems':
    follows 'hyprland/systems'
• Added input 'hyprland/hyprutils':
    'github:hyprwm/hyprutils/e36db00dfb3a3d3fdcc4069cb292ff60d2699ccb?narHash=sha256-Q8mAKMDsFbCEuq7zoSlcTuxgbIBVhfIYpX0RjE32PS0%3D' (2025-06-05)
• Added input 'hyprland/hyprutils/nixpkgs':
    follows 'hyprland/nixpkgs'
• Added input 'hyprland/hyprutils/systems':
    follows 'hyprland/systems'
• Added input 'hyprland/hyprwayland-scanner':
    'github:hyprwm/hyprwayland-scanner/817918315ea016cc2d94004bfb3223b5fd9dfcc6?narHash=sha256-IHaGWpGrv7seFWdw/1A%2BwHtTsPlOGIKMrk1TUIYJEFI%3D' (2025-06-05)
• Added input 'hyprland/hyprwayland-scanner/nixpkgs':
    follows 'hyprland/nixpkgs'
• Added input 'hyprland/hyprwayland-scanner/systems':
    follows 'hyprland/systems'
• Added input 'hyprland/nixpkgs':
    'github:NixOS/nixpkgs/d3d2d80a2191a73d1e86456a751b83aa13085d7d?narHash=sha256-QuUtALJpVrPnPeozlUG/y%2BoIMSLdptHxb3GK6cpSVhA%3D' (2025-06-05)
• Added input 'hyprland/pre-commit-hooks':
    'github:cachix/git-hooks.nix/80479b6ec16fefd9c1db3ea13aeb038c60530f46?narHash=sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo%2BbnXU9D9k%3D' (2025-05-16)
• Added input 'hyprland/pre-commit-hooks/flake-compat':
    'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33?narHash=sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U%3D' (2023-10-04)
• Added input 'hyprland/pre-commit-hooks/gitignore':
    'github:hercules-ci/gitignore.nix/637db329424fd7e46cf4185293b9cc8c88c95394?narHash=sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs%3D' (2024-02-28)
• Added input 'hyprland/pre-commit-hooks/gitignore/nixpkgs':
    follows 'hyprland/pre-commit-hooks/nixpkgs'
• Added input 'hyprland/pre-commit-hooks/nixpkgs':
    follows 'hyprland/nixpkgs'
• Added input 'hyprland/systems':
    'github:nix-systems/default-linux/31732fcf5e8fea42e59c2488ad31a0e651500f68?narHash=sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80%3D' (2023-07-14)
• Added input 'hyprland/xdph':
    'github:hyprwm/xdg-desktop-portal-hyprland/44bf29f1df45786098920c655af523535a9191ae?narHash=sha256-KIkJu3zF8MF3DuGwzAmo3Ww9wsWXolwV30SjJRTAxYE%3D' (2025-06-05)
• Added input 'hyprland/xdph/hyprland-protocols':
    follows 'hyprland/hyprland-protocols'
• Added input 'hyprland/xdph/hyprlang':
    follows 'hyprland/hyprlang'
• Added input 'hyprland/xdph/hyprutils':
    follows 'hyprland/hyprutils'
• Added input 'hyprland/xdph/hyprwayland-scanner':
    follows 'hyprland/hyprwayland-scanner'
• Added input 'hyprland/xdph/nixpkgs':
    follows 'hyprland/nixpkgs'
• Added input 'hyprland/xdph/systems':
    follows 'hyprland/systems'
2025-06-14 18:22:28 +01:00
ffebf63fe8 fonts: refactor
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m15s
2025-06-14 17:44:21 +01:00
cf8d18515f treewide: remove stylix module
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m15s
2025-06-14 17:12:55 +01:00
a1a6a8ffc7 hyprland: remove stylix theming
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m15s
2025-06-14 17:11:15 +01:00
73f4258ca4 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m25s
Flake lock file updates:

• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/b328aa7871068d9f98b656d8f6829b39a541a114?narHash=sha256-VQ2HFRVz0VxjYYFtdRTlAq/PuOT%2Bj876YTWubk0WLJM%3D' (2025-06-13)
  → 'github:NixOS/nixos-hardware/db030f62a449568345372bd62ed8c5be4824fa49?narHash=sha256-lfxhuxAaHlYFGr8yOrAXZqdMt8PrFLzjVqH9v3lQaoY%3D' (2025-06-13)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/3e3afe5174c561dee0df6f2c2b2236990146329f?narHash=sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU%3D' (2025-06-07)
  → 'github:NixOS/nixpkgs/ee930f9755f58096ac6e8ca94a1887e0534e2d81?narHash=sha256-Kh9K4taXbVuaLC0IL%2B9HcfvxsSUx8dPB5s5weJcc9pc%3D' (2025-06-13)
• Updated input 'stylix':
    'github:danth/stylix/e1cfc2b69432ac2abe95db133dcbdfc96cd3bedb?narHash=sha256-xtWRTlYBs%2BwYE8NaV%2BmwdlVYWX0k2BkCuFdjexjEebY%3D' (2025-06-12)
  → 'github:danth/stylix/1a11f3526fb0b51f1dffebb328d187daee97fbcf?narHash=sha256-smQ53ejSSB6PyXv84Wj269RxdA6WDIjz0fK1GTmM7Js%3D' (2025-06-13)
2025-06-14 09:34:55 +01:00
2b44c2c2bf hyprland: use Adwaita Sans font
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m26s
2025-06-13 20:27:47 +01:00
77399b70cb flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m18s
Flake lock file updates:

• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/4602f7e1d3f197b3cb540d5accf5669121629628?narHash=sha256-W5GKQHgunda/OP9sbKENBZhMBDNu2QahoIPwnsF6CeM%3D' (2025-06-06)
  → 'github:NixOS/nixos-hardware/b328aa7871068d9f98b656d8f6829b39a541a114?narHash=sha256-VQ2HFRVz0VxjYYFtdRTlAq/PuOT%2Bj876YTWubk0WLJM%3D' (2025-06-13)
• Updated input 'stylix':
    'github:danth/stylix/1e9b92c4fceb54bf47ed1b53739f681333c45469?narHash=sha256-WZPmoflozppSwgUjGQPBBMUyPJFrHeYhHxPvS/ZqHz0%3D' (2025-06-12)
  → 'github:danth/stylix/e1cfc2b69432ac2abe95db133dcbdfc96cd3bedb?narHash=sha256-xtWRTlYBs%2BwYE8NaV%2BmwdlVYWX0k2BkCuFdjexjEebY%3D' (2025-06-12)
2025-06-13 11:07:05 +01:00
c83d754117 helios: enable hyprland
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m18s
2025-06-12 21:17:32 +01:00
71ff49c411 stylix: enable font targets 2025-06-12 21:17:15 +01:00
cf1cab83db flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m37s
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/17d08c65c241b1d65b3ddf79e3fac1ddc870b0f6?narHash=sha256-W8KiJIrVwmf43JOPbbTu5lzq%2BcmdtRqaNbOsZigjioY%3D' (2025-06-06)
  → 'github:nix-community/disko/dfa4d1b9c39c0342ef133795127a3af14598017a?narHash=sha256-CqmqU5FRg5AadtIkxwu8ulDSOSoIisUMZRLlcED3Q5w%3D' (2025-06-09)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/70c74b02eac46f4e4aa071e45a6189ce0f6d9265?narHash=sha256-N5waoqWt8aMr/MykZjSErOokYH6rOsMMXu3UOVH5kiw%3D' (2025-06-06)
  → 'github:NixOS/nixpkgs/fd487183437963a59ba763c0cc4f27e3447dd6dd?narHash=sha256-mHv/yeUbmL91/TvV95p%2BmBVahm9mdQMJoqaTVTALaFw%3D' (2025-06-12)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/d3d2d80a2191a73d1e86456a751b83aa13085d7d?narHash=sha256-QuUtALJpVrPnPeozlUG/y%2BoIMSLdptHxb3GK6cpSVhA%3D' (2025-06-05)
  → 'github:NixOS/nixpkgs/3e3afe5174c561dee0df6f2c2b2236990146329f?narHash=sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU%3D' (2025-06-07)
• Updated input 'nixvim':
    'github:nix-community/nixvim/168a51a36f3a10f0046dcec125ee9b3480dc622b?narHash=sha256-x9YXIwWgxLmqpmKVdA0JojCbL4hNNwxKKFXFuM0Jo54%3D' (2025-06-08)
  → 'github:nix-community/nixvim/88f452558ea37ab8ab2052cf45b5a5653a1e556b?narHash=sha256-X%2BPDQ9kgt3/nOUQWSyz/8WHFOp%2BSyDND%2BbKpVufxpdE%3D' (2025-06-12)
• Updated input 'pre-commit-hooks':
    'github:cachix/git-hooks.nix/80479b6ec16fefd9c1db3ea13aeb038c60530f46?narHash=sha256-2Y53NGIX2vxfie1rOW0Qb86vjRZ7ngizoo%2BbnXU9D9k%3D' (2025-05-16)
  → 'github:cachix/git-hooks.nix/623c56286de5a3193aa38891a6991b28f9bab056?narHash=sha256-WUaIlOlPLyPgz9be7fqWJA5iG6rHcGRtLERSCfUDne4%3D' (2025-06-11)
• Updated input 'stylix':
    'github:danth/stylix/bf5ab9df57a3d77847289c39c3a537bd6e6ac6f4?narHash=sha256-//wZBnlBJ7Ki5/ZdafiAZwVFZd/2HhKqEbOupo/HcRA%3D' (2025-06-08)
  → 'github:danth/stylix/1e9b92c4fceb54bf47ed1b53739f681333c45469?narHash=sha256-WZPmoflozppSwgUjGQPBBMUyPJFrHeYhHxPvS/ZqHz0%3D' (2025-06-12)
2025-06-12 20:52:14 +01:00
0ba904c576 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m40s
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/4792576cb003c994bd7cc1edada3129def20b27d?narHash=sha256-DJcgJMekoxVesl9kKjfLPix2Nbr42i7cpEHJiTnBUwU%3D' (2025-06-05)
  → 'github:NixOS/nixpkgs/70c74b02eac46f4e4aa071e45a6189ce0f6d9265?narHash=sha256-N5waoqWt8aMr/MykZjSErOokYH6rOsMMXu3UOVH5kiw%3D' (2025-06-06)
• Updated input 'nixvim':
    'github:nix-community/nixvim/9a8a103ab2ce3bb2965a469a07d244277e68b56d?narHash=sha256-GSU6VdK0IY1ukFV/0BrlShkuMUdNm7BG0RNTVHG0Jyg%3D' (2025-06-06)
  → 'github:nix-community/nixvim/168a51a36f3a10f0046dcec125ee9b3480dc622b?narHash=sha256-x9YXIwWgxLmqpmKVdA0JojCbL4hNNwxKKFXFuM0Jo54%3D' (2025-06-08)
• Updated input 'nixvim/flake-parts':
    'github:hercules-ci/flake-parts/c621e8422220273271f52058f618c94e405bb0f5?narHash=sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY%3D' (2025-04-01)
  → 'github:hercules-ci/flake-parts/49f0870db23e8c1ca0b5259734a02cd9e1e371a1?narHash=sha256-F82%2BgS044J1APL0n4hH50GYdPRv/5JWm34oCJYmVKdE%3D' (2025-06-01)
• Updated input 'stylix':
    'github:danth/stylix/2759a42f9be7adf3ca09c7a6c3bf8b94d61fba84?narHash=sha256-pM5Mw81XTgMcrzw%2Bbr2ES/THEN1jrznEtWZ%2BSqnQAEY%3D' (2025-06-06)
  → 'github:danth/stylix/bf5ab9df57a3d77847289c39c3a537bd6e6ac6f4?narHash=sha256-//wZBnlBJ7Ki5/ZdafiAZwVFZd/2HhKqEbOupo/HcRA%3D' (2025-06-08)
2025-06-08 15:09:53 +01:00
5cf9a5c72c flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m22s
Flake lock file updates:

• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/c2a03962b8e24e669fb37b7df10e7c79531ff1a4?narHash=sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj%2BQ%3D' (2025-06-03)
  → 'github:NixOS/nixpkgs/d3d2d80a2191a73d1e86456a751b83aa13085d7d?narHash=sha256-QuUtALJpVrPnPeozlUG/y%2BoIMSLdptHxb3GK6cpSVhA%3D' (2025-06-05)
• Updated input 'stylix':
    'github:danth/stylix/3979552fe5fb3627a85cc70ceff6efb770c44531?narHash=sha256-9VUpw7i1VYaRybn6uOqtYAxKbYPZVi%2BGEDTBkTFlt1Q%3D' (2025-06-05)
  → 'github:danth/stylix/2759a42f9be7adf3ca09c7a6c3bf8b94d61fba84?narHash=sha256-pM5Mw81XTgMcrzw%2Bbr2ES/THEN1jrznEtWZ%2BSqnQAEY%3D' (2025-06-06)
2025-06-07 20:23:45 +01:00
f06229b84e flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m22s
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/d74db625a5cf3f46cf8fa545d6ef10bd3463ea07?narHash=sha256-UvCI5f1qD9l1fCQkoG/kJI0yNjDQIiJaN7gkve8fmII%3D' (2025-06-05)
  → 'github:nix-community/disko/17d08c65c241b1d65b3ddf79e3fac1ddc870b0f6?narHash=sha256-W8KiJIrVwmf43JOPbbTu5lzq%2BcmdtRqaNbOsZigjioY%3D' (2025-06-06)
• Updated input 'home-manager':
    'github:nix-community/home-manager/b949584034d25bdc802de28051192b622a058142?narHash=sha256-Pw5xFy2gGNE2qLk29S/OFZlTYwtkDNqkGBOgw%2BK8jvU%3D' (2025-06-05)
  → 'github:nix-community/home-manager/7aae0ee71a17b19708b93b3ed448a1a0952bf111?narHash=sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg%3D' (2025-06-05)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/029bd66faa180e11262dd1bc2732254c33415f52?narHash=sha256-QITcurR19KZlrCngBoCjsFF2BdYsiCG4UqmlrVcLb8Q%3D' (2025-06-04)
  → 'github:NixOS/nixos-hardware/4602f7e1d3f197b3cb540d5accf5669121629628?narHash=sha256-W5GKQHgunda/OP9sbKENBZhMBDNu2QahoIPwnsF6CeM%3D' (2025-06-06)
• Updated input 'nixvim':
    'github:nix-community/nixvim/8917e2e8ecc957037c712145ddcfce08d00c1cad?narHash=sha256-eLz/5C3qQN8w7dyLnY8zKdwLuHuS03s8csuLjTis2No%3D' (2025-06-03)
  → 'github:nix-community/nixvim/9a8a103ab2ce3bb2965a469a07d244277e68b56d?narHash=sha256-GSU6VdK0IY1ukFV/0BrlShkuMUdNm7BG0RNTVHG0Jyg%3D' (2025-06-06)
• Updated input 'stylix':
    'github:danth/stylix/689d4db89d3be6fd82b7dcb41a1cea5c4743b1ef?narHash=sha256-8fUXBczmQ7/Y8nrc988oaN4M7YZz/RbzZa0n1d8i3GM%3D' (2025-06-04)
  → 'github:danth/stylix/3979552fe5fb3627a85cc70ceff6efb770c44531?narHash=sha256-9VUpw7i1VYaRybn6uOqtYAxKbYPZVi%2BGEDTBkTFlt1Q%3D' (2025-06-05)
2025-06-06 19:01:14 +01:00
e0e6ee3039 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m27s
Flake lock file updates:

• Updated input 'deploy-rs':
    'github:serokell/deploy-rs/aa07eb05537d4cd025e2310397a6adcedfe72c76?narHash=sha256-3KyjMPUKHkiWhwR91J1YchF6zb6gvckCAY1jOE%2Bne0U%3D' (2024-09-27)
  → 'github:serokell/deploy-rs/6bc76b872374845ba9d645a2f012b764fecd765f?narHash=sha256-hXh76y/wDl15almBcqvjryB50B0BaiXJKk20f314RoE%3D' (2025-06-05)
• Updated input 'deploy-rs/flake-compat':
    'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33?narHash=sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U%3D' (2023-10-04)
  → 'github:edolstra/flake-compat/ff81ac966bb2cae68946d5ed5fc4994f96d0ffec?narHash=sha256-NeCCThCEP3eCl2l/%2B27kNNK7QrwZB1IJCrXfrbv5oqU%3D' (2024-12-04)
• Updated input 'deploy-rs/nixpkgs':
    'github:NixOS/nixpkgs/e97b3e4186bcadf0ef1b6be22b8558eab1cdeb5d?narHash=sha256-D%2BzHwkwPc6oYQ4G3A1HuadopqRwUY/JkMwHz1YF7j4Q%3D' (2023-12-11)
  → 'github:NixOS/nixpkgs/bd3bac8bfb542dbde7ffffb6987a1a1f9d41699f?narHash=sha256-jAIUqsiN2r3hCuHji80U7NNEafpIMBXiwKlSrjWMlpg%3D' (2025-03-26)
• Updated input 'deploy-rs/utils':
    'github:numtide/flake-utils/4022d587cbbfd70fe950c1e2083a02621806a725?narHash=sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8%3D' (2023-12-04)
  → 'github:numtide/flake-utils/11707dc2f618dd54ca8739b309ec4fc024de578b?narHash=sha256-l0KFg5HjrsfsO/JpG%2Br7fRrqm12kzFHyUHqHCVpMMbI%3D' (2024-11-13)
• Updated input 'disko':
    'github:nix-community/disko/58d6e5a83fff9982d57e0a0a994d4e5c0af441e4?narHash=sha256-/CtyLVfNaFP7PrOPrTEuGOJBIhcBKVQ91KiEbtXJi0A%3D' (2025-06-02)
  → 'github:nix-community/disko/d74db625a5cf3f46cf8fa545d6ef10bd3463ea07?narHash=sha256-UvCI5f1qD9l1fCQkoG/kJI0yNjDQIiJaN7gkve8fmII%3D' (2025-06-05)
• Updated input 'home-manager':
    'github:nix-community/home-manager/282e1e029cb6ab4811114fc85110613d72771dea?narHash=sha256-RMhjnPKWtCoIIHiuR9QKD7xfsKb3agxzMfJY8V9MOew%3D' (2025-05-31)
  → 'github:nix-community/home-manager/b949584034d25bdc802de28051192b622a058142?narHash=sha256-Pw5xFy2gGNE2qLk29S/OFZlTYwtkDNqkGBOgw%2BK8jvU%3D' (2025-06-05)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/fc7c4714125cfaa19b048e8aaf86b9c53e04d853?narHash=sha256-HEu2gTct7nY0tAPRgBtqYepallryBKR1U8B4v2zEEqA%3D' (2025-06-03)
  → 'github:NixOS/nixos-hardware/029bd66faa180e11262dd1bc2732254c33415f52?narHash=sha256-QITcurR19KZlrCngBoCjsFF2BdYsiCG4UqmlrVcLb8Q%3D' (2025-06-04)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/10d7f8d34e5eb9c0f9a0485186c1ca691d2c5922?narHash=sha256-Hb4iMhIbjX45GcrgOp3b8xnyli%2BysRPqAgZ/LZgyT5k%3D' (2025-06-02)
  → 'github:NixOS/nixpkgs/4792576cb003c994bd7cc1edada3129def20b27d?narHash=sha256-DJcgJMekoxVesl9kKjfLPix2Nbr42i7cpEHJiTnBUwU%3D' (2025-06-05)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/910796cabe436259a29a72e8d3f5e180fc6dfacc?narHash=sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8%3D' (2025-05-31)
  → 'github:NixOS/nixpkgs/c2a03962b8e24e669fb37b7df10e7c79531ff1a4?narHash=sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj%2BQ%3D' (2025-06-03)
• Updated input 'nixvim':
    'github:nix-community/nixvim/70e8dfadba195dbc119b41e33df7e804fa9f4fb8?narHash=sha256-hTJZxcy2B0ezGhI0NPuoxlJXTVqPwPztV75jhFzsoRY%3D' (2025-06-03)
  → 'github:nix-community/nixvim/8917e2e8ecc957037c712145ddcfce08d00c1cad?narHash=sha256-eLz/5C3qQN8w7dyLnY8zKdwLuHuS03s8csuLjTis2No%3D' (2025-06-03)
• Updated input 'stylix':
    'github:danth/stylix/f756c257890a04b4d743b2165efaebad8e651978?narHash=sha256-vB57L1K/q42f4x2VfdUAKqN1XpfPYvTubRb1aZDmFcI%3D' (2025-06-03)
  → 'github:danth/stylix/689d4db89d3be6fd82b7dcb41a1cea5c4743b1ef?narHash=sha256-8fUXBczmQ7/Y8nrc988oaN4M7YZz/RbzZa0n1d8i3GM%3D' (2025-06-04)
2025-06-05 19:40:52 +01:00
70f046eb6b hosts/odyssey: disable sunshine
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
2025-06-03 21:31:51 +01:00
7317211271 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m18s
Flake lock file updates:

• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/daa628a725ab4948e0e2b795e8fb6f4c3e289a7a?narHash=sha256-pZH4bqbOd8S%2Bsi6UcfjHovWDiWKiIGRNRMpmRWaDIms%3D' (2025-05-30)
  → 'github:NixOS/nixos-hardware/fc7c4714125cfaa19b048e8aaf86b9c53e04d853?narHash=sha256-HEu2gTct7nY0tAPRgBtqYepallryBKR1U8B4v2zEEqA%3D' (2025-06-03)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/a59eb7800787c926045d51b70982ae285faa2346?narHash=sha256-q8jG2HJWgooWa9H0iatZqBPF3bp0504e05MevFmnFLY%3D' (2025-05-31)
  → 'github:NixOS/nixpkgs/10d7f8d34e5eb9c0f9a0485186c1ca691d2c5922?narHash=sha256-Hb4iMhIbjX45GcrgOp3b8xnyli%2BysRPqAgZ/LZgyT5k%3D' (2025-06-02)
• Updated input 'nixvim':
    'github:nix-community/nixvim/d14de7a243f9d99d1f48c569e156d756fc0e638d?narHash=sha256-TLRow4rQ5RTVBg5iS779nK4itEmlXjd2GcN7GgMLZ90%3D' (2025-06-02)
  → 'github:nix-community/nixvim/70e8dfadba195dbc119b41e33df7e804fa9f4fb8?narHash=sha256-hTJZxcy2B0ezGhI0NPuoxlJXTVqPwPztV75jhFzsoRY%3D' (2025-06-03)
• Updated input 'stylix':
    'github:danth/stylix/40ed368ca342dfd9a69a3007410be7d20eb04a0c?narHash=sha256-l9F8IGqmkMYlMLABvoQu5QZIzZzzUIM9r0saqAiWi64%3D' (2025-06-02)
  → 'github:danth/stylix/f756c257890a04b4d743b2165efaebad8e651978?narHash=sha256-vB57L1K/q42f4x2VfdUAKqN1XpfPYvTubRb1aZDmFcI%3D' (2025-06-03)
2025-06-03 19:01:33 +01:00
9e267aa32e open-webui: proxy websockets
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
2025-06-03 00:19:30 +01:00
abe4d7dda5 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
Flake lock file updates:

• Updated input 'secrets':
    'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=900d707866109485d776256a8717a8c2610706b2' (2025-06-02)
  → 'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=c6f23eddf543b4de1c8c596e51be1d5ba1137673' (2025-06-02)
2025-06-03 00:06:04 +01:00
13163dc1fb hosts/library: add open-webui
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m17s
2025-06-02 23:21:29 +01:00
471c46d4cb hosts/library: extract jellyfin config
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m15s
2025-06-02 22:54:54 +01:00
2a395d5efb hosts/library: extract nginx config 2025-06-02 22:52:09 +01:00
4f49a8da98 hosts/library: extract SSH tunnel config 2025-06-02 22:50:52 +01:00
06a48940a9 hosts/library: extract prometheus config 2025-06-02 22:49:53 +01:00
b4ef349c9c hosts/library: extract grafana config 2025-06-02 22:48:48 +01:00
0cda947ca5 nixpkgs: allow unfree everywhere 2025-06-02 21:14:04 +01:00
7569a548e2 flake.lock: Update
Flake lock file updates:

• Updated input 'nixvim':
    'github:nix-community/nixvim/82fafc9f9f89b54e13cff3c51582b6c228ec8331?narHash=sha256-oztcrhUwXAqPRBqyh9yJo6Ymiu4T94MdPARa/fTw75I%3D' (2025-05-31)
  → 'github:nix-community/nixvim/d14de7a243f9d99d1f48c569e156d756fc0e638d?narHash=sha256-TLRow4rQ5RTVBg5iS779nK4itEmlXjd2GcN7GgMLZ90%3D' (2025-06-02)
• Updated input 'stylix':
    'github:danth/stylix/275e1acae94a1c5495352fd317a87377322a5259?narHash=sha256-GPVR1UT1r0J1Lgux0h28CVCqoh0dJ67qKn2k%2BCTL/TI%3D' (2025-06-01)
  → 'github:danth/stylix/40ed368ca342dfd9a69a3007410be7d20eb04a0c?narHash=sha256-l9F8IGqmkMYlMLABvoQu5QZIzZzzUIM9r0saqAiWi64%3D' (2025-06-02)
2025-06-02 21:12:07 +01:00
a4f2ab59a3 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m37s
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/a894f2811e1ee8d10c50560551e50d6ab3c392ba?narHash=sha256-AzlJCKaM4wbEyEpV3I/PUq5mHnib2ryEy32c%2Bqfj6xk%3D' (2025-05-26)
  → 'github:nix-community/disko/58d6e5a83fff9982d57e0a0a994d4e5c0af441e4?narHash=sha256-/CtyLVfNaFP7PrOPrTEuGOJBIhcBKVQ91KiEbtXJi0A%3D' (2025-06-02)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/7282cb574e0607e65224d33be8241eae7cfe0979?narHash=sha256-hYKMs3ilp09anGO7xzfGs3JqEgUqFMnZ8GMAqI6/k04%3D' (2025-05-28)
  → 'github:NixOS/nixpkgs/a59eb7800787c926045d51b70982ae285faa2346?narHash=sha256-q8jG2HJWgooWa9H0iatZqBPF3bp0504e05MevFmnFLY%3D' (2025-05-31)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/96ec055edbe5ee227f28cdbc3f1ddf1df5965102?narHash=sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg%3D' (2025-05-28)
  → 'github:NixOS/nixpkgs/910796cabe436259a29a72e8d3f5e180fc6dfacc?narHash=sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8%3D' (2025-05-31)
• Updated input 'nixvim':
    'github:nix-community/nixvim/cfea16cdbe4f13b5d39dfe3df747092448252c9d?narHash=sha256-1bGQAkqnGyov/tfiJw1HTK3vTHrgEo977J6RfjqrH0s%3D' (2025-05-25)
  → 'github:nix-community/nixvim/82fafc9f9f89b54e13cff3c51582b6c228ec8331?narHash=sha256-oztcrhUwXAqPRBqyh9yJo6Ymiu4T94MdPARa/fTw75I%3D' (2025-05-31)
• Updated input 'nixvim/nuschtosSearch':
    'github:NuschtOS/search/066afe8643274470f4a294442aadd988356a478f?narHash=sha256-8v4y6k16Ra/fiecb4DxhsoOGtzLKgKlS%2B9/XJ9z0T2I%3D' (2025-04-19)
  → 'github:NuschtOS/search/f8a1c221afb8b4c642ed11ac5ee6746b0fe1d32f?narHash=sha256-PP11GVwUt7F4ZZi5A5%2B99isuq39C59CKc5u5yVisU/U%3D' (2025-05-26)
• Updated input 'nixvim/nuschtosSearch/ixx':
    'github:NuschtOS/ixx/a1176e2a10ce745ff8f63e4af124ece8fe0b1648?narHash=sha256-fTVAWzT1UMm1lT%2BYxHuVPtH%2BDATrhYfea3B0MxG/cGw%3D' (2025-01-20)
  → 'github:NuschtOS/ixx/cc5f390f7caf265461d4aab37e98d2292ebbdb85?narHash=sha256-FVO01jdmUNArzBS7NmaktLdGA5qA3lUMJ4B7a05Iynw%3D' (2025-05-26)
• Updated input 'stylix':
    'github:danth/stylix/f48e34f222c8a54b2ebdd12d83a13b3c2680e22a?narHash=sha256-%2BVzzHtLY6OU4VNJ/ssx6J7Mqu0Zv4eJ4OnfYtynBXOA%3D' (2025-05-31)
  → 'github:danth/stylix/275e1acae94a1c5495352fd317a87377322a5259?narHash=sha256-GPVR1UT1r0J1Lgux0h28CVCqoh0dJ67qKn2k%2BCTL/TI%3D' (2025-06-01)
2025-06-02 09:09:35 +01:00
8a6661277b kitty: set transparent background 2025-06-01 11:01:41 +01:00
b855451408 stylix: disable application targets
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m20s
2025-05-31 18:44:30 +01:00
598cf6b130 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/afe9ce8b2014fa1230ade38bf07156cdcef63658?narHash=sha256-1hFy%2BbZRZoYb7RaUXsW%2B9YFtjjFrQpschd8qZpy9org%3D' (2025-05-30)
  → 'github:nix-community/home-manager/282e1e029cb6ab4811114fc85110613d72771dea?narHash=sha256-RMhjnPKWtCoIIHiuR9QKD7xfsKb3agxzMfJY8V9MOew%3D' (2025-05-31)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/b9d69212b5e65620e7d5b08df818db656f7fefb3?narHash=sha256-SLB2MV138ujdjw0ETEakNt/o2O%2Bd/QtvNLlwaBZSWKg%3D' (2025-05-30)
  → 'github:NixOS/nixos-hardware/daa628a725ab4948e0e2b795e8fb6f4c3e289a7a?narHash=sha256-pZH4bqbOd8S%2Bsi6UcfjHovWDiWKiIGRNRMpmRWaDIms%3D' (2025-05-30)
• Updated input 'stylix':
    'github:danth/stylix/79ec2e885e2b66f2fc6e6b6db15c49c81ebaf7d8?narHash=sha256-nnvjhz1PtS/Vfw8bgU0AkXq1U42gilzfFak65EmHW4g%3D' (2025-05-30)
  → 'github:danth/stylix/f48e34f222c8a54b2ebdd12d83a13b3c2680e22a?narHash=sha256-%2BVzzHtLY6OU4VNJ/ssx6J7Mqu0Zv4eJ4OnfYtynBXOA%3D' (2025-05-31)
2025-05-31 18:39:38 +01:00
0177768633 Revert "stylix: enable firefox target"
This reverts commit 3a03a578c8.
2025-05-31 18:36:18 +01:00
46a5a208ff home-manager: activate on switch
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
2025-05-30 23:18:01 +01:00
0322e2aa74 flake.lock: Update
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/0d13ea58d565d3c1c1468ddae1f623316dc395d9?narHash=sha256-e9zc/rHdoH9i%2BsFFhhQiKoF6IuD%2BT2rB/nUyPaO7CCg%3D' (2025-05-29)
  → 'github:nix-community/home-manager/afe9ce8b2014fa1230ade38bf07156cdcef63658?narHash=sha256-1hFy%2BbZRZoYb7RaUXsW%2B9YFtjjFrQpschd8qZpy9org%3D' (2025-05-30)
• Updated input 'nixos-hardware':
    'github:NixOS/nixos-hardware/11f2d9ea49c3e964315215d6baa73a8d42672f06?narHash=sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg%3D' (2025-05-22)
  → 'github:NixOS/nixos-hardware/b9d69212b5e65620e7d5b08df818db656f7fefb3?narHash=sha256-SLB2MV138ujdjw0ETEakNt/o2O%2Bd/QtvNLlwaBZSWKg%3D' (2025-05-30)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/7848cd8c982f7740edf76ddb3b43d234cb80fc4d?narHash=sha256-ixMT0a8mM091vSswlTORZj93WQAJsRNmEvqLL%2BqwTFM%3D' (2025-05-26)
  → 'github:NixOS/nixpkgs/7282cb574e0607e65224d33be8241eae7cfe0979?narHash=sha256-hYKMs3ilp09anGO7xzfGs3JqEgUqFMnZ8GMAqI6/k04%3D' (2025-05-28)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/4faa5f5321320e49a78ae7848582f684d64783e9?narHash=sha256-QlL8slIgc16W5UaI3w7xHQEP%2BQmv/6vSNTpoZrrSlbk%3D' (2025-05-27)
  → 'github:NixOS/nixpkgs/96ec055edbe5ee227f28cdbc3f1ddf1df5965102?narHash=sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg%3D' (2025-05-28)
• Updated input 'stylix':
    'github:danth/stylix/e13d234bcff4b65f6601a87d4a243f5d29141dbf?narHash=sha256-/KFwI0YHL0dzRKEtxiTRnjKzs3CPGVrFHP4gpN3n91Q%3D' (2025-05-28)
  → 'github:danth/stylix/79ec2e885e2b66f2fc6e6b6db15c49c81ebaf7d8?narHash=sha256-nnvjhz1PtS/Vfw8bgU0AkXq1U42gilzfFak65EmHW4g%3D' (2025-05-30)
2025-05-30 20:20:18 +01:00
9e9df641aa hyprlock: add keybinding
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m15s
2025-05-30 20:12:02 +01:00
3b3ac72e27 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
Flake lock file updates:

• Updated input 'nixos-mailserver':
    'gitlab:simple-nixos-mailserver/nixos-mailserver/506c6151d6f1dc11c4de3876863b9793fe8f3c8f?narHash=sha256-UcPtnBgdIzsTwmw9MBOtxZsT8MHrVCwO11%2B04pHRuJU%3D' (2025-05-29)
  → 'gitlab:simple-nixos-mailserver/nixos-mailserver/53007af63fade28853408370c4c600a63dd97f41?narHash=sha256-BW3ktviEhfCN/z3%2BkEyzpDKAI8qFTwO7%2BS0NVA0C90o%3D' (2025-05-23)
2025-05-30 08:59:32 +01:00
990c26b035 flake.lock: Update
Some checks failed
Check flake / build-amd64-linux (push) Failing after 51s
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/529d2aac542a42c57d4b765501ace564b07e3d99?narHash=sha256-4n9uDN54LSgN7WVEzj2r0nBthV5m0uFi9BgiD0dfS54%3D' (2025-05-28)
  → 'github:nix-community/home-manager/0d13ea58d565d3c1c1468ddae1f623316dc395d9?narHash=sha256-e9zc/rHdoH9i%2BsFFhhQiKoF6IuD%2BT2rB/nUyPaO7CCg%3D' (2025-05-29)
• Updated input 'nixos-mailserver':
    'gitlab:simple-nixos-mailserver/nixos-mailserver/53007af63fade28853408370c4c600a63dd97f41?narHash=sha256-BW3ktviEhfCN/z3%2BkEyzpDKAI8qFTwO7%2BS0NVA0C90o%3D' (2025-05-23)
  → 'gitlab:simple-nixos-mailserver/nixos-mailserver/506c6151d6f1dc11c4de3876863b9793fe8f3c8f?narHash=sha256-UcPtnBgdIzsTwmw9MBOtxZsT8MHrVCwO11%2B04pHRuJU%3D' (2025-05-29)
2025-05-29 18:15:52 +01:00
fac5ccad5c flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m20s
Flake lock file updates:

• Updated input 'home-manager':
    'github:nix-community/home-manager/83665c39fa688bd6a1f7c43cf7997a70f6a109f9?narHash=sha256-GaBRgxjWO1bAQa8P2%2BFDxG4ANBVhjnSjBms096qQdxo%3D' (2025-05-26)
  → 'github:nix-community/home-manager/529d2aac542a42c57d4b765501ace564b07e3d99?narHash=sha256-4n9uDN54LSgN7WVEzj2r0nBthV5m0uFi9BgiD0dfS54%3D' (2025-05-28)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/7c43f080a7f28b2774f3b3f43234ca11661bf334?narHash=sha256-rqc2RKYTxP3tbjA%2BPB3VMRQNnjesrT0pEofXQTrMsS8%3D' (2025-05-25)
  → 'github:NixOS/nixpkgs/7848cd8c982f7740edf76ddb3b43d234cb80fc4d?narHash=sha256-ixMT0a8mM091vSswlTORZj93WQAJsRNmEvqLL%2BqwTFM%3D' (2025-05-26)
• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/62b852f6c6742134ade1abdd2a21685fd617a291?narHash=sha256-R5HJFflOfsP5FBtk%2BzE8FpL8uqE7n62jqOsADvVshhE%3D' (2025-05-25)
  → 'github:NixOS/nixpkgs/4faa5f5321320e49a78ae7848582f684d64783e9?narHash=sha256-QlL8slIgc16W5UaI3w7xHQEP%2BQmv/6vSNTpoZrrSlbk%3D' (2025-05-27)
• Updated input 'stylix':
    'github:danth/stylix/a835b8f6efd172a4635352902f9ba2e6bd22dcdb?narHash=sha256-v6fniljfK6GXBuKk%2B60okdLewbRbnkf%2BXV8vH1394hw%3D' (2025-05-27)
  → 'github:danth/stylix/e13d234bcff4b65f6601a87d4a243f5d29141dbf?narHash=sha256-/KFwI0YHL0dzRKEtxiTRnjKzs3CPGVrFHP4gpN3n91Q%3D' (2025-05-28)
2025-05-28 22:07:03 +01:00
920714f3aa flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m18s
Flake lock file updates:

• Updated input 'stylix':
    'github:danth/stylix/c36cc92e08f1ce24a772d2f3ac9f049b963a07f0?narHash=sha256-pjNhKw3wdj4n1zQrTyuZjpTpr%2BssQzG0EPeWMQr9gHo%3D' (2025-05-26)
  → 'github:danth/stylix/a835b8f6efd172a4635352902f9ba2e6bd22dcdb?narHash=sha256-v6fniljfK6GXBuKk%2B60okdLewbRbnkf%2BXV8vH1394hw%3D' (2025-05-27)
2025-05-27 22:14:57 +01:00
8669904f38 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m15s
Flake lock file updates:

• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/063f43f2dbdef86376cc29ad646c45c46e93234c?narHash=sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o%3D' (2025-05-23)
  → 'github:NixOS/nixpkgs/62b852f6c6742134ade1abdd2a21685fd617a291?narHash=sha256-R5HJFflOfsP5FBtk%2BzE8FpL8uqE7n62jqOsADvVshhE%3D' (2025-05-25)
• Updated input 'stylix':
    'github:danth/stylix/c8e57b9bba85458a376c8c12aafe55ffc6ba2cb1?narHash=sha256-Xs2uQz5HI0o/zsenCcfPz9d0oZij0//Fa1OLAu1zhS8%3D' (2025-05-25)
  → 'github:danth/stylix/c36cc92e08f1ce24a772d2f3ac9f049b963a07f0?narHash=sha256-pjNhKw3wdj4n1zQrTyuZjpTpr%2BssQzG0EPeWMQr9gHo%3D' (2025-05-26)
2025-05-26 23:20:15 +01:00
8a7f4e5340 hosts/mail: allow aliased sending on some domains
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m16s
2025-05-26 22:33:36 +01:00
59f771e4e4 hosts/mail: add SMTP relay configuration
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m15s
2025-05-26 21:43:55 +01:00
109300680d 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=4e69a52227a61bf4bfbfd9b781bef4bf1fa0bd2b' (2025-02-24)
  → 'git+ssh://git@git.vimium.com/jordan/nix-secrets.git?ref=refs/heads/master&rev=175720e8761b9eb2e8616bee78825750d0600a69' (2025-05-26)
2025-05-26 21:36:18 +01:00
c139062bcb flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m30s
Flake lock file updates:

• Updated input 'disko':
    'github:nix-community/disko/df522e787fdffc4f32ed3e1fca9ed0968a384d62?narHash=sha256-kYL4GCwwznsypvsnA20oyvW8zB/Dvn6K5G/tgMjVMT4%3D' (2025-05-20)
  → 'github:nix-community/disko/a894f2811e1ee8d10c50560551e50d6ab3c392ba?narHash=sha256-AzlJCKaM4wbEyEpV3I/PUq5mHnib2ryEy32c%2Bqfj6xk%3D' (2025-05-26)
• Updated input 'home-manager':
    'github:nix-community/home-manager/d0bbd221482c2713cccb80220f3c9d16a6e20a33?narHash=sha256-Qb84nbYFFk0DzFeqVoHltS2RodAYY5/HZQKE8WnBDsc%3D' (2025-05-18)
  → 'github:nix-community/home-manager/83665c39fa688bd6a1f7c43cf7997a70f6a109f9?narHash=sha256-GaBRgxjWO1bAQa8P2%2BFDxG4ANBVhjnSjBms096qQdxo%3D' (2025-05-26)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/55d1f923c480dadce40f5231feb472e81b0bab48?narHash=sha256-y2ZtlIlNTuVJUZCqzZAhIw5rrKP4DOSklev6c8PyCkQ%3D' (2025-05-22)
  → 'github:NixOS/nixpkgs/7c43f080a7f28b2774f3b3f43234ca11661bf334?narHash=sha256-rqc2RKYTxP3tbjA%2BPB3VMRQNnjesrT0pEofXQTrMsS8%3D' (2025-05-25)
• Updated input 'nixvim':
    'github:nix-community/nixvim/9a252f90400ee57cfadcf65aeff999513313166e?narHash=sha256-xhyQ1QaMfeNOvYCANbi6rh6OC9OZ94Dx97RLNPUgCeI%3D' (2025-05-24)
  → 'github:nix-community/nixvim/cfea16cdbe4f13b5d39dfe3df747092448252c9d?narHash=sha256-1bGQAkqnGyov/tfiJw1HTK3vTHrgEo977J6RfjqrH0s%3D' (2025-05-25)
• Updated input 'stylix':
    'github:danth/stylix/df93f602dd8c84e7bd067654cc2f6422d5868496?narHash=sha256-qHewVAhQ2kaZLHcO9lDzMeAGDFmbDd36kls7bi7HgMQ%3D' (2025-05-23)
  → 'github:danth/stylix/c8e57b9bba85458a376c8c12aafe55ffc6ba2cb1?narHash=sha256-Xs2uQz5HI0o/zsenCcfPz9d0oZij0//Fa1OLAu1zhS8%3D' (2025-05-25)
2025-05-26 14:54:30 +01:00
ac35e86be9 flake.lock: Update
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m31s
Flake lock file updates:

• Updated input 'nixpkgs-unstable':
    'github:NixOS/nixpkgs/2795c506fe8fb7b03c36ccb51f75b6df0ab2553f?narHash=sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q%3D' (2025-05-20)
  → 'github:NixOS/nixpkgs/063f43f2dbdef86376cc29ad646c45c46e93234c?narHash=sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o%3D' (2025-05-23)
• Updated input 'nixvim':
    'github:nix-community/nixvim/da74b4111807138dae4663da6b442beab8b24395?narHash=sha256-0a/4HEZiUON9Y4rupb0dZUeMcWUKBOidVxERrP1rhJI%3D' (2025-05-24)
  → 'github:nix-community/nixvim/9a252f90400ee57cfadcf65aeff999513313166e?narHash=sha256-xhyQ1QaMfeNOvYCANbi6rh6OC9OZ94Dx97RLNPUgCeI%3D' (2025-05-24)
2025-05-25 10:26:34 +01:00
a3f6d7f079 hyprland: disable update news
All checks were successful
Check flake / build-amd64-linux (push) Successful in 1m18s
2025-05-24 12:42:28 +01:00
52 changed files with 1569 additions and 1272 deletions

886
flake.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -15,6 +15,15 @@
url = "github:nix-community/home-manager/release-25.05";
inputs.nixpkgs.follows = "nixpkgs";
};
hyprland.url = "github:hyprwm/Hyprland";
hyprland-plugins = {
url = "github:hyprwm/hyprland-plugins";
inputs.hyprland.follows = "hyprland";
};
firefox-gnome-theme = {
url = "github:rafaelmardojai/firefox-gnome-theme";
flake = false;
};
gitea-github-theme = {
url = "git+ssh://git@git.vimium.com/jordan/gitea-github-theme.git?ref=main";
flake = false;
@ -26,7 +35,7 @@
};
nixos-hardware.url = "github:NixOS/nixos-hardware";
nixos-mailserver = {
url = "gitlab:simple-nixos-mailserver/nixos-mailserver";
url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-25.05";
inputs.nixpkgs.follows = "nixpkgs";
};
nixvim = {
@ -41,7 +50,6 @@
url = "git+ssh://git@git.vimium.com/jordan/nix-secrets.git";
flake = false;
};
stylix.url = "github:danth/stylix/release-25.05";
thunderbird-gnome-theme = {
url = "github:rafaelmardojai/thunderbird-gnome-theme";
flake = false;
@ -128,6 +136,7 @@
nixfmt-rfc-style.enable = true;
trim-trailing-whitespace.enable = true;
};
excludes = [ "pkgs/libcamera-rpi/libcamera-rpi-ipa-priv-key.pem" ];
};
}));
@ -149,8 +158,8 @@
sshUser = "root";
nodes = lib.genAttrs [
"mail"
# "pi"
# "skycam"
"pi"
"skycam"
"vps1"
] mkDeployNode;
};

View File

@ -9,17 +9,24 @@
imports = [
inputs.agenix.nixosModules.age
inputs.home-manager.nixosModules.home-manager
inputs.stylix.nixosModules.stylix
../modules/nixos
];
nixpkgs.overlays = [
nixpkgs = {
config.allowUnfree = true;
overlays = [
inputs.agenix.overlays.default
(import ../overlays/default.nix)
(final: prev: {
unstable = import inputs.nixpkgs-unstable { system = final.system; };
unstable = import inputs.nixpkgs-unstable {
config = {
allowUnfree = true;
};
system = final.system;
};
})
];
};
time.timeZone = "Europe/London";
@ -69,7 +76,7 @@
'';
buildMachines = [
{
hostName = "10.0.1.79";
hostName = "10.0.1.235";
sshUser = "root";
system = "aarch64-linux";
maxJobs = 6;

View File

@ -9,10 +9,6 @@
../users/jordan
];
nixpkgs = {
config.allowUnfree = true;
};
services.printing.enable = true;
services.openssh.startWhenNeeded = true;
@ -50,15 +46,6 @@
systemd.services.NetworkManager-wait-online.enable = false;
fonts.packages = with pkgs; [
corefonts
noto-fonts
nerd-fonts.bigblue-terminal
nerd-fonts.comic-shanns-mono
nerd-fonts.terminess-ttf
nerd-fonts.ubuntu-mono
];
modules = {
system.desktop.gnome.enable = true;
services.tailscale.enable = true;

View File

@ -28,6 +28,8 @@
supportedFilesystems = [ "zfs" ];
};
powerManagement.cpuFreqGovernor = "schedutil";
fileSystems."/" = {
device = "rpool/system/root";
fsType = "zfs";

View File

@ -16,7 +16,6 @@
nixpkgs = {
hostPlatform = "x86_64-linux";
config = {
allowUnfree = true;
nvidia.acceptLicense = true;
};
};

View File

@ -8,12 +8,12 @@ Media and public file server.
* Chipset - AMD B550
* Memory - 64 GB DDR4
* Motherboard - ASRock B550M Pro4
* Case - Fractal Design Node 804
* Case - JMCD-12S4
### 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)
Samsung 970 Evo Plus | `/dev/nvme0n1p1` (EFI, 512 MiB, NixOS Boot) <br> `/dev/nvme0n1p2` (ZFS `rpool`, 200 GiB, NixOS Root)
#### ZFS datasets
```

38
hosts/library/ai.nix Normal file
View File

@ -0,0 +1,38 @@
{
inputs,
config,
pkgs,
...
}:
{
age.secrets."files/services/open-webui/envfile" = {
file = "${inputs.secrets}/files/services/open-webui/envfile.age";
};
services.open-webui = {
enable = true;
package = pkgs.unstable.open-webui;
port = 8081;
environment =
let
clientId = "open-webui";
publicUrl = "https://chat.ai.vimium.com";
in
{
WEBUI_URL = publicUrl;
ENABLE_LOGIN_FORM = "False";
ENABLE_OAUTH_SIGNUP = "True";
ENABLE_OAUTH_ROLE_MANAGEMENT = "True";
OAUTH_CLIENT_ID = clientId;
OAUTH_PROVIDER_NAME = "Vimium";
OPENID_PROVIDER_URL = "https://auth.vimium.com/oauth2/openid/${clientId}/.well-known/openid-configuration";
OPENID_REDIRECT_URI = "${publicUrl}/oauth/oidc/callback";
};
environmentFile = config.age.secrets."files/services/open-webui/envfile".path;
};
modules.services.borgmatic.directories = [
"/var/lib/private/open-webui"
];
}

View File

@ -1,8 +1,17 @@
{ config, pkgs, ... }:
{
...
}:
{
imports = [
./hardware-configuration.nix
./ai.nix
./grafana.nix
./jellyfin.nix
./jellysearch.nix
./nginx.nix
./prometheus.nix
./tunnel.nix
../server.nix
];
@ -11,7 +20,10 @@
boot = {
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
zfs.extraPools = [ "library" ];
zfs.extraPools = [
"downloads"
"library"
];
};
networking = {
@ -46,147 +58,12 @@
enable = true;
};
services.grafana = {
enable = true;
settings = {
server = {
domain = "library.mesh.vimium.net";
http_addr = "0.0.0.0";
http_port = 3000;
};
};
};
services.prometheus = {
enable = true;
port = 9001;
exporters = {
node = {
enable = true;
enabledCollectors = [ "systemd" ];
port = 9002;
};
zfs = {
enable = true;
port = 9003;
};
};
scrapeConfigs = [
{
job_name = "node";
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";
};
};
};
};
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
vaapiVdpau
];
};
users.users.jellyfin.extraGroups = [
"video"
"render"
];
services.jellyfin = {
enable = true;
package = pkgs.unstable.jellyfin;
cacheDir = "/var/cache/jellyfin";
dataDir = "/var/lib/jellyfin";
};
modules = {
podman.enable = true;
services = {
borgmatic = {
enable = true;
directories = [
config.services.jellyfin.dataDir
"/home/jordan"
];
repoPath = "ssh://b61758r4@b61758r4.repo.borgbase.com/./repo";

16
hosts/library/grafana.nix Normal file
View File

@ -0,0 +1,16 @@
{
...
}:
{
services.grafana = {
enable = true;
settings = {
server = {
domain = "library.mesh.vimium.net";
http_addr = "0.0.0.0";
http_port = 3000;
};
};
};
}

View File

@ -0,0 +1,30 @@
{
config,
pkgs,
...
}:
{
hardware.graphics = {
enable = true;
extraPackages = with pkgs; [
vaapiVdpau
];
};
users.users.jellyfin.extraGroups = [
"video"
"render"
];
services.jellyfin = {
enable = true;
package = pkgs.unstable.jellyfin;
cacheDir = "/var/cache/jellyfin";
dataDir = "/var/lib/jellyfin";
};
modules.services.borgmatic.directories = [
config.services.jellyfin.dataDir
];
}

View File

@ -0,0 +1,58 @@
{
inputs,
config,
pkgs,
...
}:
{
age.secrets."files/services/meilisearch/envfile" = {
file = "${inputs.secrets}/files/services/meilisearch/envfile.age";
};
services.meilisearch = {
enable = true;
package = pkgs.meilisearch;
masterKeyEnvironmentFile = config.age.secrets."files/services/meilisearch/envfile".path;
};
users.users.jellysearch = {
group = "jellysearch";
isSystemUser = true;
};
users.groups.jellysearch = { };
systemd.services.jellysearch = {
enable = true;
description = "JellySearch";
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
serviceConfig = {
Restart = "on-failure";
ExecStart = "${pkgs.jellysearch}/bin/jellysearch";
StateDirectory = "jellysearch";
StateDirectoryMode = "0750";
WorkingDirectory = "/var/lib/jellysearch";
EnvironmentFile = config.age.secrets."files/services/meilisearch/envfile".path;
NoNewPrivileges = true;
SystemCallArchitectures = "native";
RestrictRealtime = true;
RestrictSUIDSGID = true;
ProtectHostname = true;
LockPersonality = true;
PrivateDevices = true;
PrivateUsers = true;
RemoveIPC = true;
};
environment = {
DOTNET_ENVIRONMENT = "Production";
INDEX_CRON = "0 0 0/2 ? * * *";
JELLYFIN_URL = "http://localhost:8096";
JELLYFIN_CONFIG_DIR = "${toString config.services.jellyfin.dataDir}";
MEILI_URL = "http://localhost:${toString config.services.meilisearch.listenPort}";
};
};
}

88
hosts/library/nginx.nix Normal file
View File

@ -0,0 +1,88 @@
{
pkgs,
...
}:
{
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_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;
'';
};
};
"chat.ai.vimium.com" = {
listen = [
{
addr = "127.0.0.1";
port = 8001;
}
];
locations."/" = {
proxyPass = "http://localhost:8081";
extraConfig =
proxyConfig
+ ''
# Disable proxy buffering for better streaming response from models
proxy_buffering off;
# Increase max request size for large attachments and long audio messages
client_max_body_size 20M;
proxy_read_timeout 10m;
'';
};
};
"jellyfin.vimium.com" = {
default = true;
listen = [
{
addr = "127.0.0.1";
port = 8000;
}
];
locations."/" = {
extraConfig =
''
# Proxy JellySearch first
if ($arg_searchTerm) {
proxy_pass http://localhost:5000;
break;
}
proxy_pass http://localhost:8096;
''
+ proxyConfig
+ ''
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
'';
};
locations."/metrics" = {
return = "404";
};
};
};
};
}

View File

@ -0,0 +1,35 @@
{
config,
...
}:
{
services.prometheus = {
enable = true;
port = 9001;
exporters = {
node = {
enable = true;
enabledCollectors = [ "systemd" ];
port = 9002;
};
zfs = {
enable = true;
port = 9003;
};
};
scrapeConfigs = [
{
job_name = "node";
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}"
];
}
];
}
];
};
}

33
hosts/library/tunnel.nix Normal file
View File

@ -0,0 +1,33 @@
{
pkgs,
...
}:
{
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 \
-R localhost:8001:localhost:8001 \
jellyfin@vps1.mesh.vimium.net
'';
Restart = "always";
RestartSec = 20;
};
wantedBy = [ "default.target" ];
};
}

View File

@ -5,25 +5,32 @@
}:
let
domains = [
"h0lt.com"
sendingDomains = [
"jdholt.com"
"vimium.com"
];
receiveOnlyDomains = [
"h0lt.com"
"jordanholt.xyz"
"vimium.co"
"vimium.com"
"vimium.co.uk"
"vimium.info"
"vimium.net"
"vimium.org"
"vimium.xyz"
];
allDomains = sendingDomains ++ receiveOnlyDomains;
in
{
imports = [
inputs.nixos-mailserver.nixosModule
];
age.secrets."passwords/users/jordan".file = "${inputs.secrets}/passwords/users/jordan.age";
age.secrets = {
"files/services/postfix/sasl_passwd".file =
"${inputs.secrets}/files/services/postfix/sasl_passwd.age";
"passwords/users/jordan".file = "${inputs.secrets}/passwords/users/jordan.age";
};
services.roundcube = {
enable = true;
@ -46,7 +53,7 @@ in
mailserver = {
enable = true;
fqdn = "mail.vimium.com";
domains = domains;
domains = allDomains;
indexDir = "/var/lib/dovecot/indices";
certificateDomains = [
@ -60,15 +67,22 @@ in
loginAccounts = {
"jordan@vimium.com" = {
hashedPasswordFile = config.age.secrets."passwords/users/jordan".path;
catchAll = domains;
aliases = map (domain: "@" + domain) sendingDomains;
catchAll = receiveOnlyDomains;
};
};
};
extraVirtualAliases = {
"hostmaster@vimium.com" = "jordan@vimium.com";
"postmaster@vimium.com" = "jordan@vimium.com";
"webmaster@vimium.com" = "jordan@vimium.com";
"abuse@vimium.com" = "jordan@vimium.com";
};
services.postfix.config = {
relayhost = "[mail.smtp2go.com]:2525";
smtp_sasl_auth_enable = "yes";
smtp_sasl_password_maps = "texthash:${
config.age.secrets."files/services/postfix/sasl_passwd".path
}";
smtp_sasl_security_options = "noanonymous";
smtp_destination_concurrency_limit = "20";
header_size_limit = "4096000";
};
}

View File

@ -15,7 +15,6 @@
nixpkgs = {
hostPlatform = "x86_64-linux";
config = {
allowUnfree = true;
nvidia.acceptLicense = true;
};
};
@ -44,7 +43,7 @@
};
services.sunshine = {
enable = true;
enable = false;
package = pkgs.unstable.sunshine;
capSysAdmin = true;
};

View File

@ -9,6 +9,7 @@
inputs.nixos-hardware.nixosModules.raspberry-pi-4
./hardware-configuration.nix
./home-assistant
./snapcast.nix
../server.nix
];

View File

@ -1,6 +1,5 @@
{
lib,
pkgs,
modulesPath,
...
}:
@ -11,44 +10,6 @@
];
boot = {
kernelPackages =
let
version = "6.1.73";
tag = "stable_20240124";
srcHash = "sha256-P4ExzxWqZj+9FZr9U2tmh7rfs/3+iHEv0m74PCoXVuM=";
in
pkgs.linuxPackagesFor (
pkgs.linux_rpi4.override {
argsOverride = {
src = pkgs.fetchFromGitHub {
owner = "raspberrypi";
repo = "linux";
rev = tag;
hash = srcHash;
};
version = version;
modDirVersion = version;
structuredExtraConfig = { };
kernelPatches = [
{
name = "drm-rp1-depends-on-instead-of-select-MFD_RP1.patch";
patch = pkgs.fetchpatch {
url = "https://github.com/peat-psuwit/rpi-linux/commit/6de0bb51929cd3ad4fa27b2a421a2af12e6468f5.patch";
hash = "sha256-9pHcbgWTiztu48SBaLPVroUnxnXMKeCGt5vEo9V8WGw=";
};
}
{
name = "iommu-bcm2712-don-t-allow-building-as-module.patch";
patch = pkgs.fetchpatch {
url = "https://github.com/peat-psuwit/rpi-linux/commit/693a5e69bddbcbe1d1b796ebc7581c3597685b1b.patch";
hash = "sha256-8BYYQDM5By8cTk48ASYKJhGVQnZBIK4PXtV70UtfS+A=";
};
}
];
};
}
);
# Stop ZFS kernel being built
supportedFilesystems = lib.mkForce [
"btrfs"
@ -69,23 +30,6 @@
(final: prev: {
makeModulesClosure = x: prev.makeModulesClosure (x // { allowMissing = true; });
})
(final: prev: {
raspberrypifw =
let
version = "1.20240529";
srcHash = "sha256-KsCo7ZG6vKstxRyFljZtbQvnDSqiAPdUza32xTY/tlA=";
in
pkgs.raspberrypifw.override {
argsOverride = {
src = prev.fetchFromGitHub {
owner = "raspberrypi";
repo = "firmware";
rev = "${version}";
hash = srcHash;
};
};
};
})
];
fileSystems = {

View File

@ -63,7 +63,6 @@
};
media_player = [ ];
mobile_app = { };
onkyo = { };
open_meteo = { };
recorder = {
purge_keep_days = 365;

43
hosts/pi/snapcast.nix Normal file
View File

@ -0,0 +1,43 @@
{
pkgs,
...
}:
{
# Put all sinks in pipewire group
services.pipewire.systemWide = true;
services.avahi = {
enable = true;
nssmdns4 = true;
publish = {
enable = true;
domain = true;
addresses = true;
};
};
services.snapserver = {
enable = true;
streams = {
default = {
type = "file";
location = "/var/lib/snapserver/test.wav";
sampleFormat = "44100:16:2";
codec = "flac";
};
};
};
systemd.services.snapclient = {
wantedBy = [ "multi-user.target" ];
after = [ "pipewire.service" ];
requires = [ "pipewire.service" ];
description = "Snapcast client";
serviceConfig = {
ExecStart = "${pkgs.snapcast}/bin/snapclient -h 127.0.0.1 --player pulse --mixer hardware";
DynamicUser = true;
SupplementaryGroups = [ "pipewire" ];
};
};
}

View File

@ -50,11 +50,6 @@ in
AllowSuspend=no
AllowHibernation=no
'';
watchdog = {
runtimeTime = "20s";
rebootTime = "30s";
};
};
services.fail2ban = {

View File

@ -1,77 +1,16 @@
{
inputs,
config,
pkgs,
...
}:
{
imports = [
inputs.nixos-hardware.nixosModules.raspberry-pi-4
./hardware-configuration.nix
../server.nix
];
nixpkgs.hostPlatform = "aarch64-linux";
hardware = {
raspberry-pi."4" = {
apply-overlays-dtmerge.enable = true;
audio.enable = false;
xhci.enable = false;
};
deviceTree = {
enable = true;
filter = "*rpi-4-*.dtb";
# From https://github.com/Electrostasy/dots/blob/3b81723feece67610a252ce754912f6769f0cd34/hosts/phobos/klipper.nix#L43-L65
overlays =
let
mkCompatibleDtsFile =
dtbo:
let
drv =
pkgs.runCommand "fix-dts"
{
nativeBuildInputs = with pkgs; [
dtc
gnused
];
}
''
mkdir "$out"
dtc -I dtb -O dts ${dtbo} | sed -e 's/bcm2835/bcm2711/' > $out/overlay.dts
'';
in
"${drv}/overlay.dts";
inherit (config.boot.kernelPackages) kernel;
in
[
{
name = "imx708.dtbo";
dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/imx708.dtbo";
}
{
name = "vc4-kms-v3d-pi4.dtbo";
dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/vc4-kms-v3d-pi4.dtbo";
}
];
};
firmware = with pkgs; [
firmwareLinuxNonfree
];
};
services.udev.extraRules = ''
SUBSYSTEM=="rpivid-*", GROUP="video", MODE="0660"
KERNEL=="vcsm-cma", GROUP="video", MODE="0660"
SUBSYSTEM=="dma_heap", GROUP="video", MODE="0660"
'';
nixpkgs.overlays = [
(import ./../../overlays/libcamera.nix)
];
networking = {
hostId = "731d1660";
firewall = {
@ -81,37 +20,59 @@
};
};
systemd.services.ustreamer = {
services.go2rtc =
let
rpicam-vid = "${pkgs.rpicam-apps}/bin/rpicam-vid";
in
{
enable = true;
description = "uStreamer service";
unitConfig = {
Type = "simple";
ConditionPathExists = "/sys/bus/i2c/drivers/imx708/10-001a/video4linux";
settings = {
streams.rpicam = "exec:${rpicam-vid} -v1 -t0 -o- --inline --width=4608 --height=2592 --framerate=14 --codec mjpeg --quality 90 --denoise=cdn_off --sharpness 1.25 --exposure long --gain 3";
};
serviceConfig = {
ExecStart = ''
${pkgs.libcamera}/bin/libcamerify ${pkgs.unstable.ustreamer}/bin/ustreamer \
--host=0.0.0.0 \
--resolution=4608x2592
};
systemd.services.skycam-archiver =
let
snapshotScript = pkgs.writeShellScript "skycam-archiver" ''
${pkgs.lib.getExe pkgs.curl} -s -o "/var/lib/skycam-archiver/snapshot-$(date +%Y%m%d-%H%M%S).jpg" "http://skycam.mesh.vimium.net:1984/api/frame.jpeg?src=rpicam"
'';
DynamicUser = "yes";
SupplementaryGroups = [ "video" ];
Restart = "always";
RestartSec = 10;
in
{
description = "Capture skycam snapshot and save with timestamp";
serviceConfig = {
Type = "oneshot";
StateDirectory = "skycam-archiver";
ExecStart = "${snapshotScript}";
};
wantedBy = [ "network-online.target" ];
confinement.mode = "chroot-only";
requires = [ "go2rtc.service" ];
after = [ "go2rtc.service" ];
};
systemd.timers.skycam-archiver = {
description = "Timer for capturing skycam snapshots every 30 minutes";
wantedBy = [ "timers.target" ];
timerConfig = {
OnBootSec = "5min";
OnUnitActiveSec = "30min";
Unit = "skycam-archiver.service";
};
};
modules.services.borgmatic = {
enable = true;
directories = [
"/var/lib/skycam-archiver"
];
repoPath = "ssh://m94ekv2i@m94ekv2i.repo.borgbase.com/./repo";
};
environment.systemPackages = with pkgs; [
camera-streamer
git
neovim
libcamera
libraspberrypi
raspberrypi-eeprom
v4l-utils
unstable.ustreamer
rpicam-apps
];
system.stateVersion = "24.05";

View File

@ -1,18 +1,20 @@
{
inputs,
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
inputs.nixos-hardware.nixosModules.raspberry-pi-4
(modulesPath + "/installer/sd-card/sd-image-aarch64.nix")
];
boot = {
kernelModules = [ "bcm2835-v4l2" ];
kernelParams = [
"cma=512M"
"panic=0"
];
supportedFilesystems = lib.mkForce [
@ -23,6 +25,61 @@
tmp.cleanOnBoot = false;
};
hardware = {
raspberry-pi."4" = {
apply-overlays-dtmerge.enable = true;
audio.enable = false;
xhci.enable = false;
};
deviceTree = {
enable = true;
filter = "*rpi-4-*.dtb";
# From https://github.com/Electrostasy/dots/blob/3b81723feece67610a252ce754912f6769f0cd34/hosts/phobos/klipper.nix#L43-L65
overlays =
let
mkCompatibleDtsFile =
dtbo:
let
drv =
pkgs.runCommand "fix-dts"
{
nativeBuildInputs = with pkgs; [
dtc
gnused
];
}
''
mkdir "$out"
dtc -I dtb -O dts ${dtbo} | sed -e 's/bcm2835/bcm2711/' > $out/overlay.dts
'';
in
"${drv}/overlay.dts";
inherit (config.boot.kernelPackages) kernel;
in
[
{
name = "imx708.dtbo";
dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/imx708.dtbo";
}
{
name = "vc4-kms-v3d-pi4.dtbo";
dtsFile = mkCompatibleDtsFile "${kernel}/dtbs/overlays/vc4-kms-v3d-pi4.dtbo";
}
];
};
firmware = with pkgs; [
firmwareLinuxNonfree
];
};
services.udev.extraRules = ''
SUBSYSTEM=="rpivid-*", GROUP="video", MODE="0660"
KERNEL=="vcsm-cma", GROUP="video", MODE="0660"
SUBSYSTEM=="dma_heap", GROUP="video", MODE="0660"
SUBSYSTEM=="dma_heap", KERNEL=="linux,cma", SYMLINK+="dma_heap/vidbuf_cached", OPTIONS+="link_priority=-50"
'';
nixpkgs.overlays = [
(final: super: {
makeModulesClosure = x: super.makeModulesClosure (x // { allowMissing = true; });

View File

@ -85,6 +85,31 @@ in
virtualHosts =
{
## Static sites
"chat.ai.vimium.com" = {
forceSSL = true;
enableACME = true;
extraConfig = nginxErrorPages + nginxEdgeHeaders;
locations."/" = {
proxyPass = "http://localhost:8001";
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_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# Disable proxy buffering for better streaming response from models
proxy_buffering off;
# Increase max request size for large attachments and long audio messages
client_max_body_size 20M;
proxy_read_timeout 10m;
'';
};
};
"jellyfin.vimium.com" = {
forceSSL = true;
enableACME = true;
@ -111,13 +136,16 @@ in
enableACME = true;
serverAliases = [ "www.jdholt.com" ];
extraConfig = nginxErrorPages + nginxEdgeHeaders + nginxStrictHeaders;
locations."/skycam" = {
root = "/var/www/jdholt.com";
};
locations."/skycam/snapshot.jpg" = {
extraConfig = ''
set $backend "skycam.mesh.vimium.net:8080";
set $backend "skycam.mesh.vimium.net:1984";
resolver 100.100.100.100;
proxy_pass http://$backend/snapshot;
proxy_pass http://$backend/api/frame.jpeg?src=rpicam;
proxy_cache skycam_cache;
proxy_cache_valid any 10s;
proxy_ignore_headers Cache-Control Expires Set-Cookie;

View File

@ -7,8 +7,6 @@ let
domain = "outline.vimium.com";
in
{
nixpkgs.config.allowUnfree = true;
services.nginx.virtualHosts = {
"${domain}" = {
forceSSL = true;

View File

@ -64,7 +64,8 @@ in
];
# Add `pg_dumpall` to unit environment
systemd.services.borgmatic.path = [ config.services.postgresql.package ];
systemd.services.borgmatic.path =
if config.services.postgresql.enable then [ config.services.postgresql.package ] else [ ];
# Without this override, `cat` is unavailable for `encryption_passcommand`
systemd.services.borgmatic.confinement.fullUnit = true;

View File

@ -1,5 +1,4 @@
{
pkgs,
config,
lib,
...
@ -22,16 +21,5 @@ in
enable = true;
withUWSM = true;
};
nixpkgs.config.allowUnfree = true;
stylix = {
enable = true;
autoEnable = false;
image = config.lib.stylix.pixel "base00";
polarity = "dark";
base16Scheme = "${pkgs.base16-schemes}/share/themes/colors.yaml";
};
};
}

View File

@ -1,24 +0,0 @@
From 625939e594ce255afa3fab3a40c3e524460e1f8b Mon Sep 17 00:00:00 2001
From: Jordan Holt <jordan@vimium.com>
Date: Sat, 10 Aug 2024 18:28:08 +0100
Subject: [PATCH] Ignore IPA signing
---
src/libcamera/ipa_manager.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp
index 6d5bbd05..43004175 100644
--- a/src/libcamera/ipa_manager.cpp
+++ b/src/libcamera/ipa_manager.cpp
@@ -295,7 +295,7 @@ bool IPAManager::isSignatureValid([[maybe_unused]] IPAModule *ipa) const
if (data.empty())
return false;
- bool valid = pubKey_.verify(data, ipa->signature());
+ bool valid = true;
LOG(IPAManager, Debug)
<< "IPA module " << ipa->path() << " signature is "
--
2.44.1

View File

@ -1,141 +0,0 @@
From 57128bb78f56cadf9e2dcca5ba4d710c3bd478a7 Mon Sep 17 00:00:00 2001
From: Jordan Holt <jordan@vimium.com>
Date: Mon, 5 Aug 2024 21:53:09 +0100
Subject: [PATCH] Remove relative config lookups
---
src/libcamera/ipa_manager.cpp | 16 ----------
src/libcamera/ipa_proxy.cpp | 48 ++----------------------------
src/libcamera/pipeline_handler.cpp | 21 ++-----------
3 files changed, 4 insertions(+), 81 deletions(-)
diff --git a/src/libcamera/ipa_manager.cpp b/src/libcamera/ipa_manager.cpp
index f4e0b633..6d5bbd05 100644
--- a/src/libcamera/ipa_manager.cpp
+++ b/src/libcamera/ipa_manager.cpp
@@ -131,22 +131,6 @@ IPAManager::IPAManager()
<< "No IPA found in '" << modulePaths << "'";
}
- /*
- * When libcamera is used before it is installed, load IPAs from the
- * same build directory as the libcamera library itself.
- */
- std::string root = utils::libcameraBuildPath();
- if (!root.empty()) {
- std::string ipaBuildPath = root + "src/ipa";
- constexpr int maxDepth = 2;
-
- LOG(IPAManager, Info)
- << "libcamera is not installed. Adding '"
- << ipaBuildPath << "' to the IPA search path";
-
- ipaCount += addDir(ipaBuildPath.c_str(), maxDepth);
- }
-
/* Finally try to load IPAs from the installed system path. */
ipaCount += addDir(IPA_MODULE_DIR);
diff --git a/src/libcamera/ipa_proxy.cpp b/src/libcamera/ipa_proxy.cpp
index 69975d8f..cd9284a3 100644
--- a/src/libcamera/ipa_proxy.cpp
+++ b/src/libcamera/ipa_proxy.cpp
@@ -122,33 +122,11 @@ std::string IPAProxy::configurationFile(const std::string &name,
}
}
- std::string root = utils::libcameraSourcePath();
- if (!root.empty()) {
- /*
- * When libcamera is used before it is installed, load
- * configuration files from the source directory. The
- * configuration files are then located in the 'data'
- * subdirectory of the corresponding IPA module.
- */
- std::string ipaConfDir = root + "src/ipa/" + ipaName + "/data";
-
- LOG(IPAProxy, Info)
- << "libcamera is not installed. Loading IPA configuration from '"
- << ipaConfDir << "'";
-
- std::string confPath = ipaConfDir + "/" + name;
+ for (const auto &dir : utils::split(IPA_CONFIG_DIR, ":")) {
+ std::string confPath = dir + "/" + ipaName + "/" + name;
ret = stat(confPath.c_str(), &statbuf);
if (ret == 0 && (statbuf.st_mode & S_IFMT) == S_IFREG)
return confPath;
-
- } else {
- /* Else look in the system locations. */
- for (const auto &dir : utils::split(IPA_CONFIG_DIR, ":")) {
- std::string confPath = dir + "/" + ipaName + "/" + name;
- ret = stat(confPath.c_str(), &statbuf);
- if (ret == 0 && (statbuf.st_mode & S_IFMT) == S_IFREG)
- return confPath;
- }
}
if (fallbackName.empty()) {
@@ -197,28 +175,6 @@ std::string IPAProxy::resolvePath(const std::string &file) const
}
}
- /*
- * When libcamera is used before it is installed, load proxy workers
- * from the same build directory as the libcamera directory itself.
- * This requires identifying the path of the libcamera.so, and
- * referencing a relative path for the proxy workers from that point.
- */
- std::string root = utils::libcameraBuildPath();
- if (!root.empty()) {
- std::string ipaProxyDir = root + "src/libcamera/proxy/worker";
-
- LOG(IPAProxy, Info)
- << "libcamera is not installed. Loading proxy workers from '"
- << ipaProxyDir << "'";
-
- std::string proxyPath = ipaProxyDir + proxyFile;
- if (!access(proxyPath.c_str(), X_OK))
- return proxyPath;
-
- return std::string();
- }
-
- /* Else try finding the exec target from the install directory. */
std::string proxyPath = std::string(IPA_PROXY_DIR) + proxyFile;
if (!access(proxyPath.c_str(), X_OK))
return proxyPath;
diff --git a/src/libcamera/pipeline_handler.cpp b/src/libcamera/pipeline_handler.cpp
index 5ea2ca78..fd8555ca 100644
--- a/src/libcamera/pipeline_handler.cpp
+++ b/src/libcamera/pipeline_handler.cpp
@@ -561,25 +561,8 @@ std::string PipelineHandler::configurationFile(const std::string &subdir,
struct stat statbuf;
int ret;
- std::string root = utils::libcameraSourcePath();
- if (!root.empty()) {
- /*
- * When libcamera is used before it is installed, load
- * configuration files from the source directory. The
- * configuration files are then located in the 'data'
- * subdirectory of the corresponding pipeline handler.
- */
- std::string confDir = root + "src/libcamera/pipeline/";
- confPath = confDir + subdir + "/data/" + name;
-
- LOG(Pipeline, Info)
- << "libcamera is not installed. Loading platform configuration file from '"
- << confPath << "'";
- } else {
- /* Else look in the system locations. */
- confPath = std::string(LIBCAMERA_DATA_DIR)
- + "/pipeline/" + subdir + '/' + name;
- }
+ confPath = std::string(LIBCAMERA_DATA_DIR)
+ + "/pipeline/" + subdir + '/' + name;
ret = stat(confPath.c_str(), &statbuf);
if (ret == 0 && (statbuf.st_mode & S_IFMT) == S_IFREG)
--
2.44.1

View File

@ -1,65 +0,0 @@
final: prev: {
libpisp = final.stdenv.mkDerivation {
name = "libpisp";
version = "1.0.5";
src = final.fetchFromGitHub {
owner = "raspberrypi";
repo = "libpisp";
rev = "v1.0.5";
hash = "sha256-CHd44CH5dBcZuK+5fZtONZ8HE/lwGKwK5U0BYUK8gG4=";
};
nativeBuildInputs = with final; [
pkg-config
meson
ninja
];
buildInputs = with final; [
nlohmann_json
boost
];
BOOST_INCLUDEDIR = "${prev.lib.getDev final.boost}/include";
BOOST_LIBRARYDIR = "${prev.lib.getLib final.boost}/lib";
};
libcamera = prev.libcamera.overrideAttrs (old: {
src = final.fetchFromGitHub {
owner = "raspberrypi";
repo = "libcamera";
rev = "eb00c13d7c9f937732305d47af5b8ccf895e700f";
hash = "sha256-p0/inkHPRUkxSIsTmj7VI7sIaX7OXdqjMGZ31W7cnt4=";
};
postPatch = ''
patchShebangs utils/ src/py/
'';
patches = [
./0001-Remove-relative-config-lookups.patch
./0001-Ignore-IPA-signing.patch
];
buildInputs =
old.buildInputs
++ (with final; [
libpisp
libglibutil
]);
mesonFlags = old.mesonFlags ++ [
"--buildtype=release"
"-Dpipelines=rpi/vc4,rpi/pisp"
"-Dipas=rpi/vc4,rpi/pisp"
"-Dgstreamer=enabled"
"-Dtest=false"
"-Dcam=enabled"
"-Dpycamera=disabled"
];
});
camera-streamer = prev.callPackage ../pkgs/camera-streamer/package.nix {
libcamera = final.libcamera;
};
}

View File

@ -1,24 +0,0 @@
From 0f17bb86772afe9495891e420a809a0b3c071caf Mon Sep 17 00:00:00 2001
From: Jordan Holt <jordan@vimium.com>
Date: Sat, 10 Aug 2024 15:37:15 +0100
Subject: [PATCH] Disable libdatachannel
---
Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index d5029bd..e50ba1a 100644
--- a/Makefile
+++ b/Makefile
@@ -23,7 +23,7 @@ USE_HW_H264 ?= 1
USE_FFMPEG ?= $(shell pkg-config libavutil libavformat libavcodec && echo 1)
USE_LIBCAMERA ?= $(shell pkg-config libcamera && echo 1)
USE_RTSP ?= $(shell pkg-config live555 && echo 1)
-USE_LIBDATACHANNEL ?= $(shell [ -e $(LIBDATACHANNEL_PATH)/CMakeLists.txt ] && echo 1)
+USE_LIBDATACHANNEL ?= 0
ifeq (1,$(DEBUG))
CFLAGS += -g
--
2.44.1

View File

@ -1,82 +0,0 @@
{
stdenv,
fetchFromGitHub,
cmake,
gnumake,
pkg-config,
xxd,
v4l-utils,
nlohmann_json,
ffmpegSupport ? true,
ffmpeg,
libcameraSupport ? true,
libcamera,
rtspSupport ? false,
live555,
webrtcSupport ? false,
openssl,
lib,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "camera-streamer";
version = "0.2.8";
src = fetchFromGitHub {
owner = "ayufan";
repo = "camera-streamer";
rev = "refs/tags/v${finalAttrs.version}";
hash = "sha256-8vV8BMFoDeh22I1/qxk6zttJROaD/lrThBxXHZSPpT4=";
fetchSubmodules = true;
};
patches = [
./0001-Disable-libdatachannel.patch
];
# Second replacement fixes literal newline in generated version.h.
postPatch = ''
substituteInPlace Makefile \
--replace '/usr/local/bin' '/bin' \
--replace 'echo "#define' 'echo -e "#define'
'';
env.NIX_CFLAGS_COMPILE = builtins.toString [
"-Wno-error=stringop-overflow"
"-Wno-error=format"
"-Wno-format"
"-Wno-format-security"
"-Wno-error=unused-result"
];
nativeBuildInputs = [
cmake
gnumake
pkg-config
xxd
];
dontUseCmakeConfigure = true;
buildInputs =
[
nlohmann_json
v4l-utils
]
++ (lib.optional ffmpegSupport ffmpeg)
++ (lib.optional libcameraSupport libcamera)
++ (lib.optional rtspSupport live555)
++ (lib.optional webrtcSupport openssl);
installFlags = [ "DESTDIR=${builtins.placeholder "out"}" ];
preInstall = "mkdir -p $out/bin";
meta = with lib; {
description = "High-performance low-latency camera streamer for Raspberry Pi's";
website = "https://github.com/ayufan/camera-streamer";
license = licenses.gpl3Only;
};
})

View File

@ -0,0 +1,172 @@
[
{
"pname": "MeiliSearch",
"version": "0.15.0",
"hash": "sha256-MM8Z8xc+AG0m+jNXAHSLhUB2egJC4lI+u6BDTVaOwzg="
},
{
"pname": "Microsoft.AspNetCore.OpenApi",
"version": "8.0.4",
"hash": "sha256-Y/UnyBlwraJjxDmEO3vsgB63GO1M7OXyIS10vL1Fs5A="
},
{
"pname": "Microsoft.Data.Sqlite",
"version": "8.0.6",
"hash": "sha256-t1g1cF4T26Np10H7opo/vCMTMNb9SS9pmLA9pSCUBp4="
},
{
"pname": "Microsoft.Data.Sqlite.Core",
"version": "8.0.6",
"hash": "sha256-MgUBbb0LDM1ixm8pBfBrSTVjNoGFn6NQMD36mirELmo="
},
{
"pname": "Microsoft.Extensions.ApiDescription.Server",
"version": "6.0.5",
"hash": "sha256-RJjBWz+UHxkQE2s7CeGYdTZ218mCufrxl0eBykZdIt4="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "2.1.1",
"hash": "sha256-TzbYgz4EemrYKHMvB9HWDkFmq0BkTetKPUwBpYHk9+k="
},
{
"pname": "Microsoft.IdentityModel.Abstractions",
"version": "7.4.0",
"hash": "sha256-rzTsvh5hDX7zk6wYzUKNg7lIQf38G/EeR6qUq/j3Eo0="
},
{
"pname": "Microsoft.IdentityModel.JsonWebTokens",
"version": "7.4.0",
"hash": "sha256-IeezkUkScumgLQZqq2Zu4YsyldIUA/XpTeONB2AtYDc="
},
{
"pname": "Microsoft.IdentityModel.Logging",
"version": "7.4.0",
"hash": "sha256-rudTpYcSlIlE1OX2LO3Qd6DAisqd5vsuX/Edu7rHIJs="
},
{
"pname": "Microsoft.IdentityModel.Tokens",
"version": "7.4.0",
"hash": "sha256-qVqVYxBy5p6Jerd1rfMUgApV7vcH54N4neS2x+N5zRQ="
},
{
"pname": "Microsoft.OpenApi",
"version": "1.2.3",
"hash": "sha256-OafkxXKnDmLZo5tjifjycax0n0F/OnWQTEZCntBMYR0="
},
{
"pname": "Microsoft.OpenApi",
"version": "1.4.3",
"hash": "sha256-vk47e78OwopXJx2LhDRbKFObqF3GShHfNHR2SzvbQeA="
},
{
"pname": "Microsoft.Win32.SystemEvents",
"version": "6.0.0",
"hash": "sha256-N9EVZbl5w1VnMywGXyaVWzT9lh84iaJ3aD48hIBk1zA="
},
{
"pname": "Quartz",
"version": "3.10.0",
"hash": "sha256-1sb+JKJdS01lScgVjcbDHxbXSpHeMn1Mqg/CQ8r+BKI="
},
{
"pname": "SQLitePCLRaw.bundle_e_sqlite3",
"version": "2.1.6",
"hash": "sha256-dZD/bZsYXjOu46ZH5Y/wgh0uhHOqIxC+S+0ecKhr718="
},
{
"pname": "SQLitePCLRaw.core",
"version": "2.1.6",
"hash": "sha256-RxWjm52PdmMV98dgDy0BCpF988+BssRZUgALLv7TH/E="
},
{
"pname": "SQLitePCLRaw.lib.e_sqlite3",
"version": "2.1.6",
"hash": "sha256-uHt5d+SFUkSd6WD7Tg0J3e8eVoxy/FM/t4PAkc9PJT0="
},
{
"pname": "SQLitePCLRaw.provider.e_sqlite3",
"version": "2.1.6",
"hash": "sha256-zHc/YZsd72eXlI8ba1tv58HZWUIiyjJaxq2CCP1hQe8="
},
{
"pname": "Swashbuckle.AspNetCore",
"version": "6.4.0",
"hash": "sha256-czuCv3Os7Oo06m3W+auJjrTGuYT82E+Bi80sJqeVb8o="
},
{
"pname": "Swashbuckle.AspNetCore.Swagger",
"version": "6.4.0",
"hash": "sha256-1u4A9vzDUJ+wLoxH5yQEVhpOxi+VnAMd64Z18SLqjPE="
},
{
"pname": "Swashbuckle.AspNetCore.SwaggerGen",
"version": "6.4.0",
"hash": "sha256-Alra5J+i0L/4JoS5pATJexVu8LId8HZcofkx7KiRqMw="
},
{
"pname": "Swashbuckle.AspNetCore.SwaggerUI",
"version": "6.4.0",
"hash": "sha256-P84wlE4EVruLVGGTUHK29wWYs/BTq/MR5P7PuSBwr+c="
},
{
"pname": "System.Configuration.ConfigurationManager",
"version": "6.0.1",
"hash": "sha256-U/0HyekAZK5ya2VNfGA1HeuQyJChoaqcoIv57xLpzLQ="
},
{
"pname": "System.Drawing.Common",
"version": "6.0.0",
"hash": "sha256-/9EaAbEeOjELRSMZaImS1O8FmUe8j4WuFUw1VOrPyAo="
},
{
"pname": "System.IdentityModel.Tokens.Jwt",
"version": "7.4.0",
"hash": "sha256-LYvdJPbPuxr8V3FJacStflSf9GVStprl1Wr+dfgqMdw="
},
{
"pname": "System.Memory",
"version": "4.5.3",
"hash": "sha256-Cvl7RbRbRu9qKzeRBWjavUkseT2jhZBUWV1SPipUWFk="
},
{
"pname": "System.Net.Http.Json",
"version": "6.0.0",
"hash": "sha256-R4s4Fb3OTKpg9gXSv+8CQ9gPJPJMmj3/nagzaRndm+g="
},
{
"pname": "System.Runtime.CompilerServices.Unsafe",
"version": "6.0.0",
"hash": "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I="
},
{
"pname": "System.Security.AccessControl",
"version": "6.0.0",
"hash": "sha256-qOyWEBbNr3EjyS+etFG8/zMbuPjA+O+di717JP9Cxyg="
},
{
"pname": "System.Security.Cryptography.ProtectedData",
"version": "6.0.0",
"hash": "sha256-Wi9I9NbZlpQDXgS7Kl06RIFxY/9674S7hKiYw5EabRY="
},
{
"pname": "System.Security.Permissions",
"version": "6.0.0",
"hash": "sha256-/MMvtFWGN/vOQfjXdOhet1gsnMgh6lh5DCHimVsnVEs="
},
{
"pname": "System.Text.Encodings.Web",
"version": "6.0.0",
"hash": "sha256-UemDHGFoQIG7ObQwRluhVf6AgtQikfHEoPLC6gbFyRo="
},
{
"pname": "System.Text.Json",
"version": "6.0.0",
"hash": "sha256-9AE/5ds4DqEfb0l+27fCBTSeYCdRWhxh2Bhg8IKvIuo="
},
{
"pname": "System.Windows.Extensions",
"version": "6.0.0",
"hash": "sha256-N+qg1E6FDJ9A9L50wmVt3xPQV8ZxlG1xeXgFuxO+yfM="
}
]

View File

@ -0,0 +1,36 @@
{
lib,
fetchFromGitLab,
buildDotnetModule,
dotnetCorePackages,
}:
buildDotnetModule rec {
pname = "jellysearch";
version = "0.0.1";
src = fetchFromGitLab {
owner = "DomiStyle";
repo = "JellySearch";
rev = "7397e3f8c7daa6f0d30b22dda7c5159a913ca6b8";
hash = "sha256-7t0j4S5A9yvRN8zjToMNsxJ72OjU3j++EAqq9CKcPaI=";
};
patches = [
./patches/Only-listen-on-loopback-interface.patch
];
projectFile = "src/JellySearch/JellySearch.csproj";
executables = [ "jellysearch" ];
nugetDeps = ./nuget-deps.json;
dotnet-sdk = dotnetCorePackages.sdk_8_0;
dotnet-runtime = dotnetCorePackages.aspnetcore_8_0;
meta = with lib; {
description = "A fast full-text search proxy for Jellyfin";
homepage = "https://gitlab.com/DomiStyle/jellysearch";
license = licenses.mit;
mainProgram = "JellySearch";
platforms = dotnet-runtime.meta.platforms;
};
}

View File

@ -0,0 +1,24 @@
From dede2b55ef53028b1347ccb731657a12d7fa3d15 Mon Sep 17 00:00:00 2001
From: Jordan Holt <jordan@vimium.com>
Date: Sun, 22 Jun 2025 17:16:56 +0100
Subject: [PATCH] Only listen on loopback interface
---
src/JellySearch/Program.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/JellySearch/Program.cs b/src/JellySearch/Program.cs
index a0c6ee1..98798f7 100644
--- a/src/JellySearch/Program.cs
+++ b/src/JellySearch/Program.cs
@@ -6,7 +6,7 @@ using Quartz.Impl;
var builder = WebApplication.CreateBuilder(args);
-builder.WebHost.UseUrls("http://0.0.0.0:5000"); // Listen on every IP
+builder.WebHost.UseUrls("http://127.0.0.1:5000"); // Listen on loopback only
builder.Services.AddCors(options =>
{
--
2.49.0

View File

@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCocmtyzPPjv+52
JiZrpZFfaZ0eeUgugc8gV+0+2Q9GEkl/xxqjiDVg31gBO3iwQov2NmGuPbXr+vwZ
QcUqNQakmmdi22tBaTtd6hMuhu9OfbP8sIFaf0dToZRHkPgf63+WCF6w0O9enEz4
zjW3kPa1eVRVekiYCXGML/VhN+h5WwWouNWgEOw5JH39ZuGmhsGN5XekkHtyMkwq
Vr+JodoSizhYs9VBYNA1J4PlyiS4BYr4pLiLffzPwRjcSS777x33g+nWNr1lsFxB
nDoVvVnq0E7fiXxlmCtAr/7dv0Ug5ixuNfZ9yoT0f+mfUiG/anmfodHujIm2Db37
jvmfxaq1AgMBAAECggEAFhJKBHSY92xod0g37A55fiZFTV8oZ1mgdXU386522yBd
y5Wf5rIcBmm1axHrFjNeCgClq3JQEk/kdP3Ccy2YBXzq04/7HYrHmd5oLYZGOINt
kExjYqN/SdTH7FmxPWN66AKIP8RcvQmfZ1GDxd4DiZNQitO3S96e53bIQPkVp8Lg
GfK6LQCdOGimD00wvRoeqbV0PWGGVMfx+KvD5hxKYolyi/hNUxToD28qCAoMlMTi
yL+17q3nIYZvUmL0k7d64U+lXF8ov3cVXNJzAzFi41MXZ2Xqk3Lj+IhNweUhlOyn
fTo8QntNlirNL/XmtJ+5mPbGufE/6zsSNOf2Cyz2aQKBgQDio/tA3tFBzOz31hox
gW6NKarhp7e5R3XHQjZPmQXKq2lGCTBN+LzwCLYDa+ZWkS+cel/xSbkUFl0dopCu
7uGrSvmVAv+l1k879WHsYmLlDjJSa8WmDtVQ0SJr70X9UJmD2BivWnTnzrpZFu2A
Nv57gvebJTI4tLfAAyIfbg8gOQKBgQC+RJRv8/jVha/4sPonQYvpH0scS0Xzwca6
xd23e+vULBpk7IVzMbVGJEDdfWXVJeAO++FSQcgTJA38nfYm2XRPZAProliLaW8o
XVhhhWbXP7Jc8BmL5zyfDaLOXNFBX2kfr/oKeOoQ+0dRDlWKlarw1SxC+RT6i2qQ
YETgXHKmXQKBgGk8mWsqy2HRZOtDqE/6eLnlciprtVy7+M14Sj21oUHVTAGwPJTH
/fs7IEEAdikWK1RuYmRoxh60r7IWDTadR35BRxjRFqILnCkMLNcVbDRN3kH1NwZ/
dr+bDG+v4ADazx2wVu39g7Erhc3eXpOddZcmXhDVObeo+nWXPt33PeDJAoGBAJ4v
+FVnuo8Tee1Cfogat87W5KSedIcnqSjpjt+Y2MXq8PrNplnSjwrE42UCd6KRvcnX
Ykr4Q/ad+D75uYgtLMVAuv2yWPl3bCJcETnrJkh5PbqFKEgntT/rn1sA0j0OrSDa
NwFz6+64a1+ZkkcJDjjykr0Px4BSXwOv9jOuyOdFAoGADZEADOLX5y4utxboe1M0
UnaFKGEDE6H8qdRJQ9bSvEwJI142al02CvnvqvP4cpd8rKOCRs9nSXFJFXCedTLy
ojSVfjTyJMTVJxab/c/Qugkxb/TqGfEnZF2yoTsfPYp2pXRd6DvyKlDQzlSOj933
FrqeSe1QKapuPRsujVwLZDU=
-----END PRIVATE KEY-----

View File

@ -0,0 +1,66 @@
{
lib,
fetchFromGitHub,
libcamera,
boost,
nlohmann_json,
python3Packages,
git,
cacert,
meson,
}:
libcamera.overrideAttrs (old: {
buildInputs = old.buildInputs ++ [
boost
nlohmann_json
];
nativeBuildInputs = old.nativeBuildInputs ++ [ python3Packages.pybind11 ];
BOOST_INCLUDEDIR = "${lib.getDev boost}/include";
BOOST_LIBRARYDIR = "${lib.getLib boost}/lib";
patches = [
./patches/libcamera-installed.patch
./patches/libcamera-no-timeout.patch
];
postPatch =
old.postPatch
+ ''
patchShebangs src/py/libcamera
'';
preBuild = ''
ninja src/ipa-priv-key.pem
install -D ${./libcamera-rpi-ipa-priv-key.pem} src/ipa-priv-key.pem
'';
mesonFlags = old.mesonFlags ++ [
"--buildtype=release"
"-Dcam=disabled"
"-Dgstreamer=disabled"
"-Dipas=rpi/vc4,rpi/pisp"
"-Dpipelines=rpi/vc4,rpi/pisp"
"-Dtest=false"
];
src = fetchFromGitHub {
owner = "raspberrypi";
repo = "libcamera";
rev = "d83ff0a4ae4503bc56b7ed48cd142c3dd423ad3b";
sha256 = "sha256-VP0s1jOON9J3gn81aiemsChvGeqx0PPivQF5rmSga6M=";
nativeBuildInputs = [ git ];
postFetch = ''
cd "$out"
export NIX_SSL_CERT_FILE=${cacert}/etc/ssl/certs/ca-bundle.crt
${lib.getExe meson} subprojects download \
libpisp
find subprojects -type d -name .git -prune -execdir rm -r {} +
'';
};
})

View File

@ -0,0 +1,53 @@
From e65bbb6e263d99212cd29a32d89e4c45d0c05353 Mon Sep 17 00:00:00 2001
From: Jordan Holt <jordan@vimium.com>
Date: Sat, 21 Jun 2025 18:38:38 +0100
Subject: [PATCH] libcamera installed
---
src/libcamera/source_paths.cpp | 9 ---------
src/py/libcamera/meson.build | 4 ++--
2 files changed, 2 insertions(+), 11 deletions(-)
diff --git a/src/libcamera/source_paths.cpp b/src/libcamera/source_paths.cpp
index 1af5386a..3fc7d044 100644
--- a/src/libcamera/source_paths.cpp
+++ b/src/libcamera/source_paths.cpp
@@ -39,15 +39,6 @@ namespace {
*/
bool isLibcameraInstalled()
{
- /*
- * DT_RUNPATH (DT_RPATH when the linker uses old dtags) is removed on
- * install.
- */
- for (const ElfW(Dyn) *dyn = _DYNAMIC; dyn->d_tag != DT_NULL; ++dyn) {
- if (dyn->d_tag == DT_RUNPATH || dyn->d_tag == DT_RPATH)
- return false;
- }
-
return true;
}
diff --git a/src/py/libcamera/meson.build b/src/py/libcamera/meson.build
index 596a203c..c0b1db59 100644
--- a/src/py/libcamera/meson.build
+++ b/src/py/libcamera/meson.build
@@ -34,14 +34,14 @@ gen_py_controls = files('gen-py-controls.py')
pycamera_sources += custom_target('py_gen_controls',
input : controls_files,
output : ['py_controls_generated.cpp'],
- command : [gen_py_controls, '--mode', 'controls', '-o', '@OUTPUT@',
+ command : ['python3', gen_py_controls, '--mode', 'controls', '-o', '@OUTPUT@',
'-t', gen_py_controls_template, '@INPUT@'],
env : py_build_env)
pycamera_sources += custom_target('py_gen_properties',
input : properties_files,
output : ['py_properties_generated.cpp'],
- command : [gen_py_controls, '--mode', 'properties', '-o', '@OUTPUT@',
+ command : ['python3', gen_py_controls, '--mode', 'properties', '-o', '@OUTPUT@',
'-t', gen_py_controls_template, '@INPUT@'],
env : py_build_env)
--
2.49.0

View File

@ -0,0 +1,29 @@
From 98918c4efdcf03701908bb756f252ba11b59490b Mon Sep 17 00:00:00 2001
From: Jordan Holt <jordan@vimium.com>
Date: Sat, 21 Jun 2025 18:41:54 +0100
Subject: [PATCH] libcamera no timeout
---
src/libcamera/ipc_pipe_unixsocket.cpp | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/libcamera/ipc_pipe_unixsocket.cpp b/src/libcamera/ipc_pipe_unixsocket.cpp
index 668ec73b..faf7e2a5 100644
--- a/src/libcamera/ipc_pipe_unixsocket.cpp
+++ b/src/libcamera/ipc_pipe_unixsocket.cpp
@@ -130,11 +130,13 @@ int IPCPipeUnixSocket::call(const IPCUnixSocket::Payload &message,
/* \todo Make this less dangerous, see IPCPipe::sendSync() */
timeout.start(2000ms);
while (!iter->second.done) {
+ #if 0
if (!timeout.isRunning()) {
LOG(IPCPipe, Error) << "Call timeout!";
callData_.erase(iter);
return -ETIMEDOUT;
}
+ #endif
Thread::current()->eventDispatcher()->processEvents();
}
--
2.49.0

View File

@ -1,58 +1,68 @@
{
stdenv,
callPackage,
fetchFromGitHub,
makeWrapper,
meson,
ninja,
pkg-config,
boost,
ffmpeg,
libcamera,
ffmpeg-headless,
libdrm,
libepoxy,
libexif,
libjpeg,
libpng,
libtiff,
lib,
libX11,
}:
let
libcamera-rpi = callPackage (import ../libcamera-rpi/package.nix) { };
in
stdenv.mkDerivation (finalAttrs: {
pname = "rpicam-apps";
version = "1.4.1";
version = "1.7.0";
src = fetchFromGitHub {
owner = "raspberrypi";
repo = "rpicam-apps";
rev = "v" + finalAttrs.version;
hash = "sha256-3NG2ZE/Ub3lTbfne0LCXuDgLGTPaAAADRdElEbZwvls=";
rev = "v${finalAttrs.version}";
hash = "sha256-79qpAfY83YOZdM5ZPyIOkg3s7x75hvjG6Cc96UAIdb0=";
};
buildInputs = [
boost
ffmpeg-headless
libcamera-rpi
libdrm
libepoxy # GLES/EGL preview window
libexif
libjpeg
libpng
libtiff
libX11
];
nativeBuildInputs = [
makeWrapper
meson
ninja
pkg-config
];
buildInputs = [
boost
ffmpeg
libcamera
libdrm
libexif
libjpeg
libpng
libtiff
# See all options here: https://github.com/raspberrypi/rpicam-apps/blob/main/meson_options.txt
mesonFlags = [
"-Denable_drm=disabled"
"-Denable_egl=disabled"
"-Denable_hailo=disabled"
"-Denable_qt=disabled"
"-Denable_libav=disabled"
];
# Meson is no longer able to pick up Boost automatically:
# https://github.com/NixOS/nixpkgs/issues/86131
BOOST_INCLUDEDIR = "${lib.getDev boost}/include";
BOOST_LIBRARYDIR = "${lib.getLib boost}/lib";
meta = with lib; {
description = ''
libcamera-based applications to drive the cameras on a Raspberry Pi platform
postInstall = ''
for f in rpicam-hello rpicam-jpeg rpicam-raw rpicam-still rpicam-vid
do
wrapProgram $out/bin/$f --set-default LIBCAMERA_IPA_PROXY_PATH ${libcamera-rpi}/libexec/libcamera
done
'';
homepage = "https://github.com/raspberrypi/rpicam-apps";
license = licenses.bsd2;
};
})

View File

@ -1,25 +0,0 @@
From 18efb9b5c8e562b169425f6ba79977e52e8b91b9 Mon Sep 17 00:00:00 2001
From: Pavel Sobolev <paveloomm@gmail.com>
Date: Sat, 13 Jan 2024 12:49:45 +0000
Subject: [PATCH] Ensure the default config file is writable.
---
streamrip/config.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/streamrip/config.py b/streamrip/config.py
index 7ee2f57..88a5fef 100644
--- a/streamrip/config.py
+++ b/streamrip/config.py
@@ -378,6 +378,9 @@ def set_user_defaults(path: str, /):
"""Update the TOML file at the path with user-specific default values."""
shutil.copy(BLANK_CONFIG_PATH, path)
+ # Ensure the default config file is writable
+ os.chmod(path, 0o644)
+
with open(path) as f:
toml = parse(f.read())
toml["downloads"]["folder"] = DEFAULT_DOWNLOADS_FOLDER # type: ignore
--
2.42.0

View File

@ -1,78 +0,0 @@
{
lib,
python3Packages,
fetchFromGitHub,
ffmpeg,
}:
python3Packages.buildPythonApplication {
pname = "streamrip";
version = "2.0.7";
pyproject = true;
src = fetchFromGitHub {
owner = "nathom";
repo = "streamrip";
rev = "46b570dbb6f81d604cbaa3bfa379463e0a20a841";
hash = "sha256-LD99OjguaBnrQxCwmCeHvmBMq5aOfobwnMd5/aCRZW8=";
};
patches = [
./ensure-the-default-config-file-is-writable.patch
];
nativeBuildInputs = with python3Packages; [
poetry-core
];
propagatedBuildInputs = with python3Packages; [
aiodns
aiofiles
aiohttp
aiolimiter
appdirs
cleo
click-help-colors
deezer-py
m3u8
mutagen
pathvalidate
pillow
pycryptodomex
pytest-asyncio
pytest-mock
rich
simple-term-menu
tomlkit
tqdm
];
nativeCheckInputs = with python3Packages; [
pytestCheckHook
];
prePatch = ''
sed -i 's#aiofiles = ".*"#aiofiles = "*"#' pyproject.toml
sed -i 's#deezer-py = ".*"#deezer-py = "*"#' pyproject.toml
sed -i 's#m3u8 = ".*"#m3u8 = "*"#' pyproject.toml
sed -i 's#pathvalidate = ".*"#pathvalidate = "*"#' pyproject.toml
sed -i 's#Pillow = ".*"#Pillow = "*"#' pyproject.toml
sed -i 's#pytest-asyncio = ".*"#pytest-asyncio = "*"#' pyproject.toml
sed -i 's#tomlkit = ".*"#tomlkit = "*"#' pyproject.toml
sed -i 's#"ffmpeg"#"${lib.getBin ffmpeg}/bin/ffmpeg"#g' streamrip/client/downloadable.py
'';
preCheck = ''
export HOME=$(mktemp -d)
'';
meta = with lib; {
description = "Scriptable music downloader for Qobuz, Tidal, SoundCloud, and Deezer";
homepage = "https://github.com/nathom/streamrip";
license = licenses.gpl3Only;
maintainers = with maintainers; [ paveloom ];
mainProgram = "rip";
};
}

View File

@ -130,6 +130,4 @@
};
home.sessionVariables.EDITOR = "nvim";
stylix.targets.nixvim.enable = true;
}

View File

@ -1,13 +1,10 @@
{
inputs,
...
}:
{
stylix.targets.firefox = {
enable = true;
firefoxGnomeTheme.enable = true;
profileNames = [ "Default" ];
};
home.file.".mozilla/firefox/Default/chrome/firefox-gnome-theme".source = inputs.firefox-gnome-theme;
programs.firefox = {
enable = true;
@ -17,6 +14,12 @@
privateDefault = "ddg";
force = true;
};
userChrome = ''
@import "firefox-gnome-theme/userChrome.css";
'';
userContent = ''
@import "firefox-gnome-theme/userContent.css";
'';
settings = {
## GNOME theme
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; # Enable customChrome.css

View File

@ -0,0 +1,17 @@
{
pkgs,
...
}:
{
home.packages = with pkgs; [
adwaita-fonts
apple-color-emoji
corefonts
nerd-fonts.bigblue-terminal
nerd-fonts.comic-shanns-mono
nerd-fonts.terminess-ttf
nerd-fonts.ubuntu-mono
sf-pro
];
}

View File

@ -58,8 +58,13 @@ in
wayland.windowManager.hyprland = {
enable = true;
package = pkgs.unstable.hyprland;
# plugins = [ hypr-dynamic-cursors ]; # https://github.com/VirtCode/hypr-dynamic-cursors
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage =
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
plugins = [
pkgs.unstable.hyprlandPlugins.hyprbars
pkgs.unstable.hyprlandPlugins.hypr-dynamic-cursors
];
settings = {
general = {
gaps_in = 5;
@ -71,6 +76,22 @@ in
layout = "dwindle";
};
plugin = {
dynamic-cursors = {
enabled = true;
mode = "none";
shake = {
enabled = true;
};
};
hyprbars = {
enabled = true;
bar_height = 20;
bar_blur = true;
};
};
dwindle = {
pseudotile = true;
preserve_split = true;
@ -85,6 +106,11 @@ in
disable_hyprland_logo = true;
};
ecosystem = {
no_donation_nag = true;
no_update_news = true;
};
decoration = {
rounding = 10;
@ -221,10 +247,6 @@ in
};
};
fonts.fontconfig.defaultFonts.sansSerif = [
"SF Pro Text"
];
xdg.configFile = mkIf osConfig.programs.hyprland.withUWSM {
"Kvantum/kvantum.kvconfig".text = toINI { } {
General.theme = "KvLibadwaitaDark";
@ -238,45 +260,40 @@ in
) hyprVariables;
};
stylix = {
home.pointerCursor = {
enable = true;
autoEnable = false;
image = osConfig.lib.stylix.pixel "base00";
polarity = "dark";
# colors, dracula, eris, google-dark, framer, horizon-terminal-dark, humanoid-dark, isotope, onedark-dark, spacemacs, windows-nt
base16Scheme = "${pkgs.base16-schemes}/share/themes/ayu-dark.yaml";
cursor = {
gtk.enable = true;
name = "macOS";
package = pkgs.apple-cursor;
size = 28;
};
fonts = {
sansSerif = {
name = "SF Pro Text";
package = pkgs.sf-pro;
};
emoji = {
name = "Apple Color Emoji";
package = pkgs.apple-color-emoji;
};
};
gtk = {
enable = true;
iconTheme = {
enable = true;
name = "MoreWaita";
package = pkgs.unstable.morewaita-icon-theme;
dark = "MoreWaita";
light = "MoreWaita";
};
};
targets = {
bat.enable = true;
btop.enable = true;
gtk.enable = true;
hyprland.enable = true;
kitty.enable = true;
fonts.fontconfig = {
enable = true;
defaultFonts = {
sansSerif = [
"Adwaita Sans"
];
emoji = [
"Apple Color Emoji"
];
};
};
programs.kitty = {
enable = true;
settings = {
background = "#000000";
background_opacity = 0.7;
};
};
@ -284,7 +301,6 @@ in
anyrun
clipse
dunst
kitty
libsForQt5.qtstyleplugin-kvantum
loupe
mpv

View File

@ -1,8 +1,18 @@
{
config,
lib,
...
}:
let
inherit (lib)
getExe
;
in
{
wayland.windowManager.hyprland.settings.bind = [
"$mainMod, L, exec, uwsm app -- ${getExe config.programs.hyprlock.package}"
];
programs.hyprlock = {
enable = true;
settings = {

View File

@ -50,4 +50,9 @@ in
xdg.enable = true;
};
# Workaround: https://github.com/nix-community/home-manager/issues/7166
systemd.services."home-manager-${name}".serviceConfig = {
RemainAfterExit = "yes";
};
}

View File

@ -6,9 +6,13 @@
{
imports = [
./common/optional/graphical/firefox.nix
./common/optional/graphical/gnome.nix
./common/optional/graphical/fonts.nix
./common/optional/graphical/hyprland
./common/optional/graphical/mimeapps.nix
];
programs.nh.enable = true;
home.packages = with pkgs; [
jellyfin-media-player
];

View File

@ -6,6 +6,7 @@
{
imports = [
./common/optional/graphical/firefox.nix
./common/optional/graphical/fonts.nix
./common/optional/graphical/gnome.nix
];

View File

@ -6,6 +6,7 @@
{
imports = [
./common/optional/graphical/firefox.nix
./common/optional/graphical/fonts.nix
./common/optional/graphical/hyprland
./common/optional/graphical/libreoffice.nix
./common/optional/graphical/mimeapps.nix