55 Commits

Author SHA1 Message Date
262f6779b1 wip: fix(copypary): zotero webdav
All checks were successful
build / build (push) Successful in 1m36s
2026-03-29 19:05:29 -06:00
9ffa14e536 fix(jellyfin-rpc): systemd unit dependencies
All checks were successful
build / build (push) Successful in 2m44s
2026-03-29 19:05:17 -06:00
8c41e3b8df feat(gitea): set default merge style
All checks were successful
build / build (push) Successful in 6s
2026-03-28 14:21:40 -06:00
a9ac5ae964 feat(gitea): 도기 보나와 한국어 2026-03-28 14:21:40 -06:00
258c3edeab fix(emacs): o kepeken ilo Syd/handle
All checks were successful
build / build (push) Successful in 1m14s
2026-03-26 10:31:37 -06:00
5d5036a83c feat(emacs): eshell aliases from home.shellAliases
All checks were successful
build / build (push) Successful in 1m52s
2026-03-26 10:22:23 -06:00
da60eaa936 feat(bash): alias completions 2026-03-26 09:19:52 -06:00
c551e8f86e refactor: move crumb bash to msyds 2026-03-26 08:22:27 -06:00
de5b56d1b1 feat: markdown prose mode
All checks were successful
build / build (push) Successful in 3m4s
2026-03-24 20:00:08 -06:00
cbb7f3c7a7 fix: mark compilation buffer as popup 2026-03-24 19:59:42 -06:00
d0b5b42dca fix(fruitbook): disable bluetooth (since DMS provides it)
Some checks failed
build / build (push) Failing after 22m33s
2026-03-23 11:36:43 -06:00
7ea2a79aca fix(kdeconnect): o awen e ijo Kde-connect State
All checks were successful
build / build (push) Successful in 1m43s
closes #18
2026-03-22 02:27:45 -06:00
182198230a feat(gitea): 이메일 더함
All checks were successful
build / build (push) Successful in 6s
2026-03-22 02:23:34 -06:00
36be01d80e fix(emacs): o lon e fcitx-remote-command
All checks were successful
build / build (push) Successful in 1m23s
2026-03-22 01:31:22 -06:00
148597d593 refactor(fruitbook): niri 대신에 dms로 잠금
All checks were successful
build / build (push) Successful in 1m47s
2026-03-22 01:27:45 -06:00
087f015340 fix(fruitbook): 전지 그림을 보임
그런데 한 거만 해야 돼: upower을 켰어.
2026-03-22 01:18:52 -06:00
ab7d28ac0f fix(fruitbook): 노트북 닫을 때 화면을 잠금
All checks were successful
build / build (push) Successful in 1m37s
2026-03-22 00:50:51 -06:00
a913e4f5c7 fix(toki-pona): nasin pini la kepeken e sitelen pona 2026-03-22 00:45:46 -06:00
b31bcae064 fix(ci): o ante e pali mute kama pali lili
All checks were successful
build / build (push) Successful in 1m14s
2026-03-22 00:15:01 -06:00
2146717898 chore: sydpc밖에 steam, slippi, openutau를 끔
All checks were successful
build / build-sydpc (push) Successful in 2m10s
build / build-fruitbook (push) Successful in 36s
build / build-deertopia (push) Successful in 41s
2026-03-21 23:55:41 -06:00
584489c853 fix(fruitbook): nixos-modules를 빠른 선풍기 없이 켬 2026-03-21 23:55:22 -06:00
a3ead883fe fix(emacs): clojure-refactor mode hook
All checks were successful
build / build-sydpc (push) Successful in 2m4s
build / build-fruitbook (push) Successful in 24s
build / build-deertopia (push) Successful in 33s
2026-03-20 18:17:49 -06:00
86b80e887c feat(emacs): fcitx
All checks were successful
build / build-sydpc (push) Successful in 27s
build / build-fruitbook (push) Successful in 22s
build / build-deertopia (push) Successful in 25s
2026-03-17 12:45:20 -06:00
178f3b9c31 feat(toki-pona): apply in ghostty
All checks were successful
build / build-sydpc (push) Successful in 2m5s
build / build-fruitbook (push) Successful in 29s
build / build-deertopia (push) Successful in 42s
2026-03-17 11:43:54 -06:00
425f502bba fix(emacs): EXPAND TABS 2026-03-17 11:43:32 -06:00
077a709f65 fix(fruitbook): temporarily disable nixos-hardware
my laptop fans were going wild
2026-03-17 11:42:54 -06:00
989aaa37da feat(fruitbook): nixos-hardware
All checks were successful
build / build-sydpc (push) Successful in 4s
build / build-fruitbook (push) Successful in 3s
build / build-deertopia (push) Successful in 3s
2026-03-16 18:31:32 -06:00
02a3702e8e fix(bepasty): workaround for nixpkgs#500538
All checks were successful
build / build-sydpc (push) Successful in 34s
build / build-fruitbook (push) Successful in 24s
build / build-deertopia (push) Successful in 36s
https://github.com/NixOS/nixpkgs/pull/500538
2026-03-16 18:11:58 -06:00
2905839509 refactor(bepasty): no with lib 2026-03-16 16:50:32 -06:00
df0062f89b feat(toki-pona): spellcheck
Some checks failed
build / build-sydpc (push) Successful in 2m5s
build / build-fruitbook (push) Successful in 43s
build / build-deertopia (push) Failing after 43s
2026-03-15 18:09:56 -06:00
b13a985d87 refactor(toki-pona): all in one module 2026-03-15 18:09:38 -06:00
dc1a34de65 chore: bump nixpkgs, hm 2026-03-15 18:07:13 -06:00
8010658111 fix(emacs): don't replace roam: links
Some checks failed
build / build-sydpc (push) Successful in 31s
build / build-fruitbook (push) Successful in 25s
build / build-deertopia (push) Failing after 34s
2026-03-14 17:29:35 -06:00
ef03e80d2c feat(emacs): clj-refactor
Some checks failed
build / build-sydpc (push) Successful in 29s
build / build-deertopia (push) Has been cancelled
build / build-fruitbook (push) Has been cancelled
2026-03-14 17:26:03 -06:00
3788f7027e feat(emacs): toki pona fonts
Some checks failed
build / build-deertopia (push) Failing after 38s
build / build-sydpc (push) Successful in 43s
build / build-fruitbook (push) Successful in 29s
2026-03-14 17:25:45 -06:00
56f8f48e2b feat(toki-pona): add sitelen seli kiwen 2026-03-14 17:25:30 -06:00
69484833c8 feat(discord): voice message plugin
Some checks failed
build / build-sydpc (push) Successful in 1m56s
build / build-fruitbook (push) Successful in 29s
build / build-deertopia (push) Failing after 36s
2026-03-14 13:37:03 -06:00
c52bd6ae85 feat(toki-pona): init
Some checks failed
build / build-sydpc (push) Successful in 4s
build / build-fruitbook (push) Successful in 3s
build / build-deertopia (push) Failing after 5s
2026-03-12 08:41:24 -06:00
ca6fd41f35 chore(sioyek): don't use smooth movement (cause it sucks)
Some checks failed
build / build-sydpc (push) Successful in 1m39s
build / build-fruitbook (push) Successful in 22s
build / build-deertopia (push) Failing after 46s
2026-03-08 14:35:28 -06:00
f0841fdd0d fix(discord): fix jellyfin-rpc dependencies
Some checks failed
build / build-sydpc (push) Successful in 1m48s
build / build-fruitbook (push) Successful in 29s
build / build-deertopia (push) Failing after 51s
- use a systemd oneshot service again lol.
- fix dependencies to run jellyfin-rpc-configure ONCE, and not
  repeatedly each time jellyfin-rpc starts.
2026-03-08 12:04:06 -06:00
d5a2f4026a feat(documentation): init
Some checks failed
build / build-sydpc (push) Successful in 43s
build / build-fruitbook (push) Successful in 31s
build / build-deertopia (push) Failing after 41s
2026-03-07 21:00:00 -07:00
8684c3b92c fix(discord): configure jellyfin-rpc on activation rather than before service 2026-03-07 20:59:59 -07:00
a44b435a5e bump home-manager 2026-03-07 19:41:50 -07:00
24d6a52f4f feat(emacs): auctex
Some checks failed
build / build-sydpc (push) Failing after 3s
build / build-fruitbook (push) Failing after 4s
build / build-deertopia (push) Failing after 4s
2026-03-07 15:58:36 -07:00
e7c17a948a fix(emacs): make default application
Some checks failed
build / build-sydpc (push) Failing after 3s
build / build-fruitbook (push) Failing after 3s
build / build-deertopia (push) Failing after 3s
2026-03-07 15:58:01 -07:00
fbeed753e9 chore(sioyek): binds
Some checks failed
build / build-sydpc (push) Failing after 5s
build / build-fruitbook (push) Failing after 4s
build / build-deertopia (push) Failing after 6s
2026-03-07 15:56:19 -07:00
89eb11f635 feat(sioyek): init 2026-03-07 15:56:19 -07:00
31f362aa45 fix(fruitbook): disable user crumb
Some checks failed
build / build-sydpc (push) Successful in 2m17s
build / build-fruitbook (push) Successful in 46s
build / build-deertopia (push) Failing after 53s
2026-03-07 14:44:43 -07:00
2360bd01e9 fix(discord): don't announce anything but music
Some checks failed
build / build-sydpc (push) Successful in 39s
build / build-fruitbook (push) Failing after 4s
build / build-deertopia (push) Failing after 39s
2026-03-06 19:26:31 -07:00
bdeba55f0f chore: oops this shouldn't be here
Some checks failed
build / build-sydpc (push) Successful in 30s
build / build-fruitbook (push) Failing after 3s
build / build-deertopia (push) Failing after 35s
2026-03-06 16:10:34 -07:00
af9db3867e Merge pull request 'feat(discord): jellyfin-rpc' (#6) from jellyfin-rpc into main
Some checks failed
build / build-sydpc (push) Successful in 30s
build / build-fruitbook (push) Failing after 4s
build / build-deertopia (push) Failing after 37s
Reviewed-on: #6
2026-03-06 15:30:51 -07:00
550da5a27c feat(discord): jellyfin-rpc
Some checks failed
build / build-sydpc (push) Successful in 42s
build / build-fruitbook (push) Failing after 3s
build / build-deertopia (push) Failing after 41s
2026-03-06 15:28:57 -07:00
0cb3d69fd4 chore: bumpies 2
Some checks failed
build / build-sydpc (push) Successful in 2m23s
build / build-fruitbook (push) Failing after 4s
build / build-deertopia (push) Failing after 1m10s
2026-03-06 13:06:21 -07:00
1158dad1f1 chore: bumpies
Some checks failed
build / build-deertopia (push) Waiting to run
build / build-sydpc (push) Successful in 2m2s
build / build-fruitbook (push) Failing after 4s
2026-03-06 13:05:14 -07:00
f15efb661e refactor(gitea-actions-runner): config
All checks were successful
build / build-sydpc (push) Successful in 2m0s
build / build-fruitbook (push) Successful in 24s
build / build-deertopia (push) Successful in 44s
2026-03-05 10:16:12 -07:00
50 changed files with 863 additions and 380 deletions

View File

@@ -4,26 +4,14 @@ on: [push]
jobs:
build-sydpc:
build:
runs-on: nixos
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: build sydpc
run: nix build -L .#nixosConfigurations.sydpc.config.system.build.toplevel
build-fruitbook:
runs-on: nixos
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: build fruitbook
run: nix build -L .#nixosConfigurations.fruitbook.config.system.build.toplevel
build-deertopia:
runs-on: nixos
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: build deertopia
run: nix build -L .#nixosConfigurations.deertopia.config.system.build.toplevel

213
flake.lock generated
View File

@@ -21,28 +21,28 @@
"base16-fish": {
"flake": false,
"locked": {
"lastModified": 1754405784,
"narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=",
"lastModified": 1765809053,
"narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=",
"owner": "tomyun",
"repo": "base16-fish",
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
"type": "github"
},
"original": {
"owner": "tomyun",
"repo": "base16-fish",
"rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782",
"type": "github"
}
},
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1752979451,
"narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=",
"lastModified": 1760703920,
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "27cf1e66e50abc622fb76a3019012dc07c678fac",
"rev": "d646af9b7d14bff08824538164af99d0c521b185",
"type": "github"
},
"original": {
@@ -76,11 +76,11 @@
]
},
"locked": {
"lastModified": 1762095388,
"narHash": "sha256-7Q8LtcvKWHbP8znARRTOY2tpU5WoV6FHwp5TZJOI8Us=",
"lastModified": 1774411715,
"narHash": "sha256-mceIHtVMXpLAfr1W0VK9ceTBX5yKu4gGWpVbThWTsAA=",
"owner": "9001",
"repo": "copyparty",
"rev": "ac085b8149ff50e03d260128596dd130ed1c7cae",
"rev": "26e663d111e39ca96c63702ad27a05b6736607cf",
"type": "github"
},
"original": {
@@ -129,11 +129,11 @@
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1758112371,
"narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=",
"lastModified": 1764873433,
"narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d",
"rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92",
"type": "github"
},
"original": {
@@ -149,7 +149,7 @@
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"revCount": 69,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz?rev=ff81ac966bb2cae68946d5ed5fc4994f96d0ffec&revCount=69"
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz"
},
"original": {
"type": "tarball",
@@ -161,11 +161,11 @@
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1754091436,
"narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=",
"lastModified": 1772408722,
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd",
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3",
"type": "github"
},
"original": {
@@ -203,11 +203,11 @@
]
},
"locked": {
"lastModified": 1756770412,
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"lastModified": 1767609335,
"narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "4524271976b625a4a605beefd893f270620fd751",
"rev": "250481aafeb741edfe23d29195671c19b36b6dca",
"type": "github"
},
"original": {
@@ -287,11 +287,11 @@
"flake": false,
"locked": {
"host": "gitlab.gnome.org",
"lastModified": 1762869044,
"narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=",
"lastModified": 1767737596,
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad",
"rev": "ef02db02bf0ff342734d525b5767814770d85b49",
"type": "gitlab"
},
"original": {
@@ -307,11 +307,11 @@
"nixpkgs": "nixpkgs_3"
},
"locked": {
"lastModified": 1768325819,
"narHash": "sha256-mBKqOJkxCRwEhIXfq93WTcDXsBlJ/f1Dfv9thJxrDPs=",
"lastModified": 1773608492,
"narHash": "sha256-QZteyExJYSQzgxqdsesDPbQgjctGG7iKV/6ooyQPITk=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "b1fa714d6cd656e3105d1965637be6ab7541d7d7",
"rev": "9a40ec3b78fc688d0908485887d355caa5666d18",
"type": "github"
},
"original": {
@@ -345,11 +345,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1768306584,
"narHash": "sha256-GWLONqOKcsWKFYqoEIFbIv6Ti/xoSvsYC9LzZzB1oj4=",
"lastModified": 1772698812,
"narHash": "sha256-7+K/VaZ7TXUeUGSYshg8wC3UsRZHB+M4x6r38Q1B79c=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "1b8c8ba473cf336d74ffb05ee453c8fe6a05bbbc",
"rev": "5641625ef950f024e3e0e3f38bb91f876290c0be",
"type": "github"
},
"original": {
@@ -378,11 +378,11 @@
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1768196703,
"narHash": "sha256-mttBQdVnVFO3mn+M+oqCsZZOtS2HvXYy+VaHxb8YuMw=",
"lastModified": 1772207631,
"narHash": "sha256-Jkkg+KqshFO3CbTszVVpkKN2AOObYz+wMsM3ONo1z5g=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "3672e79369d72297abda8878245ea4ec327062c6",
"rev": "e708f546153f74acf33eb183b3b2992587a701e5",
"type": "github"
},
"original": {
@@ -423,11 +423,11 @@
"nixpkgs": "nixpkgs_5"
},
"locked": {
"lastModified": 1764576281,
"narHash": "sha256-f6vfwmIb9C3brI4/KJ9MFUDWt6FsKQ0dbMO6AuFc7E0=",
"lastModified": 1772813986,
"narHash": "sha256-x0fD+LL+O99p36c2UnjnHvVq4/7TvGH/8G5lTNIJBCo=",
"owner": "KaylorBen",
"repo": "nixcord",
"rev": "c8f47894134a4984acd319e66c4384eb1ff886e2",
"rev": "e433a2919eb9b3a8c85ab3017c08685816e63a66",
"type": "github"
},
"original": {
@@ -436,6 +436,21 @@
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1773533765,
"narHash": "sha256-qonGfS2lzCgCl59Zl63jF6dIRRpvW3AJooBGMaXjHiY=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "f8e82243fd601afb9f59ad230958bd073795cbfe",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixos-hardware",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1741402956,
@@ -454,11 +469,11 @@
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1753579242,
"narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=",
"lastModified": 1772328832,
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=",
"owner": "nix-community",
"repo": "nixpkgs.lib",
"rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e",
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742",
"type": "github"
},
"original": {
@@ -485,11 +500,11 @@
},
"nixpkgs-stable_2": {
"locked": {
"lastModified": 1768242861,
"narHash": "sha256-F4IIxa5xDHjtrmMcayM8lHctUq1oGltfBQu2+oqDWP4=",
"lastModified": 1772598333,
"narHash": "sha256-YaHht/C35INEX3DeJQNWjNaTcPjYmBwwjFJ2jdtr+5U=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "1327e798cb055f96f92685df444e9a2c326ab5ed",
"rev": "fabb8c9deee281e50b1065002c9828f2cf7b2239",
"type": "github"
},
"original": {
@@ -500,22 +515,6 @@
}
},
"nixpkgs_10": {
"locked": {
"lastModified": 1750386251,
"narHash": "sha256-1ovgdmuDYVo5OUC5NzdF+V4zx2uT8RtsgZahxidBTyw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "076e8c6678d8c54204abcb4b1b14c366835a58bb",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_11": {
"locked": {
"lastModified": 1743568003,
"narHash": "sha256-ZID5T65E8ruHqWRcdvZLsczWDOAWIE7om+vQOREwiX0=",
@@ -549,11 +548,11 @@
},
"nixpkgs_3": {
"locked": {
"lastModified": 1767892417,
"narHash": "sha256-dhhvQY67aboBk8b0/u0XB6vwHdgbROZT3fJAjyNh5Ww=",
"lastModified": 1773389992,
"narHash": "sha256-wvfdLLWJ2I9oEpDd9PfMA8osfIZicoQ5MT1jIwNs9Tk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"rev": "c06b4ae3d6599a672a6210b7021d699c351eebda",
"type": "github"
},
"original": {
@@ -565,11 +564,11 @@
},
"nixpkgs_4": {
"locked": {
"lastModified": 1768127708,
"narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=",
"lastModified": 1772624091,
"narHash": "sha256-QKyJ0QGWBn6r0invrMAK8dmJoBYWoOWy7lN+UHzW1jc=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38",
"rev": "80bdc1e5ce51f56b19791b52b2901187931f5353",
"type": "github"
},
"original": {
@@ -581,32 +580,32 @@
},
"nixpkgs_5": {
"locked": {
"lastModified": 1754028485,
"narHash": "sha256-IiiXB3BDTi6UqzAZcf2S797hWEPCRZOwyNThJIYhUfk=",
"lastModified": 1772465433,
"narHash": "sha256-ywy9troNEfpgh0Ee+zaV1UTgU8kYBVKtvPSxh6clYGU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "59e69648d345d6e8fef86158c555730fa12af9de",
"rev": "c581273b8d5bdf1c6ce7e0a54da9841e6a763913",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_6": {
"locked": {
"lastModified": 1768178648,
"narHash": "sha256-kz/F6mhESPvU1diB7tOM3nLcBfQe7GU7GQCymRlTi/s=",
"owner": "NixOS",
"lastModified": 1773700673,
"narHash": "sha256-RLidgpn3mN3cVkIiiYehcmM2ImBnPudwISFLy71zN0o=",
"owner": "msyds",
"repo": "nixpkgs",
"rev": "3fbab70c6e69c87ea2b6e48aa6629da2aa6a23b0",
"rev": "2595b5f0592534492bce3cb61c2c9bf5ba03ffbe",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"owner": "msyds",
"ref": "fix-bepasty",
"repo": "nixpkgs",
"type": "github"
}
@@ -629,11 +628,11 @@
},
"nixpkgs_8": {
"locked": {
"lastModified": 1762977756,
"narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=",
"lastModified": 1767767207,
"narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55",
"rev": "5912c1772a44e31bf1c63c0390b90501e5026886",
"type": "github"
},
"original": {
@@ -693,11 +692,11 @@
]
},
"locked": {
"lastModified": 1758998580,
"narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=",
"lastModified": 1767810917,
"narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=",
"owner": "nix-community",
"repo": "NUR",
"rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728",
"rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4",
"type": "github"
},
"original": {
@@ -716,6 +715,7 @@
"niri": "niri",
"nixarr": "nixarr",
"nixcord": "nixcord",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_6",
"nur": "nur",
"sops-nix": "sops-nix",
@@ -763,11 +763,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1764550443,
"narHash": "sha256-ArO2V1YEHmEILilTj4KPtqF4gqc1q2HBrrrmygQ/UyU=",
"lastModified": 1772296853,
"narHash": "sha256-pAtzPsgHRKw/2Kv8HgAjSJg450FDldHPWsP3AKG/Xj0=",
"owner": "danth",
"repo": "stylix",
"rev": "794b6e1fa75177ebfeb32967f135858a1ab1ba15",
"rev": "c4b8e80a1020e09a1f081ad0f98ce804a6e85acf",
"type": "github"
},
"original": {
@@ -797,20 +797,23 @@
},
"sydpkgs": {
"inputs": {
"nixpkgs": "nixpkgs_10"
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1767975357,
"narHash": "sha256-MDVh3/aVhkD1bh/r8c0gs9DL4e78CrUbUxOZHWlCwLM=",
"owner": "msyds",
"repo": "sydpkgs",
"rev": "233479ab277d47b1dbda202eafca50e61c659151",
"type": "github"
"lastModified": 1773275674,
"narHash": "sha256-kULSjFWDoDatz31aIses5q51ESUi0ASUc3MKmBYLnRY=",
"ref": "fcitx5-toki-pona",
"rev": "03f6a67a0a3b3c00ff4566147eddb0123cfe3d14",
"revCount": 38,
"type": "git",
"url": "https://git.deertopia.net/msyds/sydpkgs"
},
"original": {
"owner": "msyds",
"repo": "sydpkgs",
"type": "github"
"ref": "fcitx5-toki-pona",
"type": "git",
"url": "https://git.deertopia.net/msyds/sydpkgs"
}
},
"systems": {
@@ -861,7 +864,7 @@
"tf2-nix": {
"inputs": {
"flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_11"
"nixpkgs": "nixpkgs_10"
},
"locked": {
"lastModified": 1761467191,
@@ -913,11 +916,11 @@
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1757716333,
"narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=",
"lastModified": 1767710407,
"narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "317a5e10c35825a6c905d912e480dfe8e71c7559",
"rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2",
"type": "github"
},
"original": {
@@ -929,11 +932,11 @@
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1757811970,
"narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=",
"lastModified": 1767489635,
"narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e",
"rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184",
"type": "github"
},
"original": {
@@ -945,11 +948,11 @@
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1757811247,
"narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=",
"lastModified": 1767488740,
"narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e",
"rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40",
"type": "github"
},
"original": {
@@ -1035,11 +1038,11 @@
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1768106915,
"narHash": "sha256-HlLo9zH4ULRXlmlIK948cHmdVhxyHgTHxGaoCRlW4k8=",
"lastModified": 1772429643,
"narHash": "sha256-M+bAeCCcjBnVk6w/4dIVvXvpJwOKnXjwi/lDbaN6Yws=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "72245e108f3b03c3c4474d2de9de2d1830849603",
"rev": "10f985b84cdbcc3bbf35b3e7e43d1b2a84fa9ce2",
"type": "github"
},
"original": {

View File

@@ -3,7 +3,9 @@
inputs = {
disko.url = "github:nix-community/disko";
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
# nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
# Waiting on https://github.com/NixOS/nixpkgs/pull/500538
nixpkgs.url = "github:msyds/nixpkgs/fix-bepasty";
impermanence.url = "github:nix-community/impermanence";
home-manager.url = "github:nix-community/home-manager";
sops-nix.url = "github:Mic92/sops-nix";
@@ -21,6 +23,7 @@
inputs.nixpkgs.follows = "nixpkgs";
inputs.vpnconfinement.follows = "vpn-confinement";
};
nixos-hardware.url = "github:NixOS/nixos-hardware";
# Used for Firefox extensions/addons.
nur = {
url = "github:nix-community/NUR";
@@ -29,7 +32,10 @@
tf2-nix.url = "gitlab:msyds/tf2-nix";
syd-fcitx5-tables.url =
"git+https://git.deertopia.net/msyds/syd-fcitx5-tables";
sydpkgs.url = "github:msyds/sydpkgs";
sydpkgs = {
url = "git+https://git.deertopia.net/msyds/sydpkgs?ref=fcitx5-toki-pona";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, ... }@inputs:

View File

@@ -49,7 +49,6 @@
deertopia = {
authelia.enable = true;
atticd.enable = true;
gitea.enable = true;
quiver.enable = true;
www.enable = true;
@@ -59,7 +58,7 @@
lldap.pam.enable = true;
nginx.enable = true;
slskd.enable = true;
webdav.enable = true;
# webdav.enable = true;
copyparty.enable = true;
syncthing.enable = true;
cache.enable = true;

View File

@@ -1,26 +1,30 @@
{ config, pkgs, lib, disko, ... }:
{ config, pkgs, lib, disko, nixos-hardware, ... }:
{
imports = [
./hardware.nix
./filesystems.nix
nixos-hardware.nixosModules.apple-macbook-pro-12-1
];
# Enabled by default by Nixos-hardware.
services.mbpfan.enable = false;
sydnix = {
filesystemType = "btrfs";
wifi.enable = true;
stylix.enable = true;
niri.enable = true;
steam.enable = true;
bluetooth.enable = true;
# gdm.enable = true;
# blueman.enable = true;
openssh.enable = true;
sydpkgs.overlay.enable = true;
dank-material-shell.enable = true;
kdeconnect.enable = true;
upower.enable = true;
users.users = [
"crumb"
# "crumb"
"msyds"
];

16
modules/home/bash.nix Normal file
View File

@@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.bash;
in {
options.sydnix.bash = {
enable = lib.mkEnableOption "Bash";
};
imports = [
./bash/complete-alias.nix
];
config = lib.mkIf cfg.enable {
programs.bash.enable = true;
};
}

View File

@@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sydnix.bash.complete-alias;
in {
options.sydnix.bash.complete-alias = {
enable = lib.mkEnableOption "Alias completion";
};
config = lib.mkIf cfg.enable {
programs.bash.initExtra = lib.mkAfter ''
. ${lib.getExe pkgs.complete-alias}
complete -F _complete_alias "''${!BASH_ALIASES[@]}"
'';
};
}

View File

@@ -13,51 +13,36 @@ in {
};
};
config = lib.mkIf cfg.enable
(let
# Fixes flickering and platform detection on Wayland.
vesktop-wayland-wrapper =
pkgs.symlinkJoin {
name = "vesktop-wayland-wrapper";
paths = [ pkgs.callPackage pkgs.vesktop ];
buildInputs = [ pkgs.makeWrapper ];
postBuild = ''
wrapProgram $out/bin/vesktop \
--add-flags "--disable-gpu-compositing"
# --add-flags "--disable-gpu-compositing --ozone-platform-hint=auto"
'';
};
in {
sydnix.impermanence.directories =
let xdg-config-home =
config.home.confighome
or "${config.home.homeDirectory}/.config";
in [
# This directory should really be written in terms of
# `config.programs.nixcord.vesktopConfigDir`, but it defaults to null
# for unknown reasons. This is in conflict with the docs, which claim
# it should be the path used here.
(lib.removePrefix
config.home.homeDirectory
"${xdg-config-home}/vesktop")
];
imports = [
./discord/jellyfin-rpc.nix
];
programs.nixcord = {
enable = true;
discord = {
# Install Vesktop without Discord.
enable = false;
# openASAR.enable = true;
vencord.enable = false;
vencord.package = pkgs.vencord;
};
vesktop = {
enable = true;
# package =
# if cfg.fixWayland
# then vesktop-wayland-wrapper
# else pkgs.vesktop;
};
config = lib.mkIf cfg.enable {
sydnix.impermanence.directories =
let xdg-config-home =
config.home.confighome
or "${config.home.homeDirectory}/.config";
in [
# This directory should really be written in terms of
# `config.programs.nixcord.vesktopConfigDir`, but it
# defaults to null for unknown reasons. This is in conflict
# with the docs, which claim it should be the path used
# here.
(lib.removePrefix
config.home.homeDirectory
"${xdg-config-home}/vesktop")
];
programs.nixcord = {
enable = true;
discord = {
enable = false;
vencord.enable = false;
vencord.package = pkgs.vencord;
};
});
vesktop = {
enable = true;
};
};
};
}

View File

@@ -0,0 +1,95 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sydnix.discord.jellyfin-rpc;
vesktop-wrapper =
pkgs.vesktop.overrideAttrs (finalAttrs: prevAttrs: {
postFixup = ''
${prevAttrs.postFixup or ""}
if [[ -e $out/bin/.vesktop-wrapped ]]; then
echo ".vesktop-wrapped already exists..."
exit 1
fi
mv $out/bin/vesktop $out/bin/.vesktop-wrapped
tee $out/bin/vesktop <<EOF
#!/usr/bin/env bash
systemctl start --user jellyfin-rpc
$out/bin/.vesktop-wrapped "\$@"
systemctl stop --user jellyfin-rpc
EOF
chmod +x $out/bin/vesktop
'';
});
jellyfin-rpc-config-template =
pkgs.writeText "jellyfin-rpc-config-template"
(lib.toJSON {
jellyfin = {
url = "https://watch.deertopia.net";
username = ["lain" "msyds"];
music = {
display = ["year" "album" "genres"];
separator = "";
};
blacklist.libraries = [
"episode"
"movie"
"book"
"audiobook"
"livetv"
];
};
images = {
enable_images = true;
imgur_images = false;
};
});
in {
options.sydnix.discord.jellyfin-rpc = {
enable = lib.mkEnableOption "Jellyfin rich presence";
};
config = lib.mkIf cfg.enable {
systemd.user.services.jellyfin-rpc-configure =
let api-key-file = config.sops.secrets.jellyfin-rpc-api-key.path;
in {
Unit = {
After = [ "sops-nix.service" ];
Requires = [ "sops-nix.service" ];
X-Restart-Triggers = [ api-key-file ];
};
Install.WantedBy = [ "default.target" ];
Service = {
Type = "oneshot";
ExecStart =
pkgs.writeShellScript "jellyfin-rpc-configure" ''
dest=''${XDG_CONFIG_HOME:-$HOME/.config}/jellyfin-rpc/main.json
mkdir -p "$(dirname "$dest")"
umask 177
[[ -f "$dest" ]] && chmod 600 "$dest"
${lib.getExe pkgs.jq} \
< ${jellyfin-rpc-config-template} \
> "$dest" \
--rawfile api_key ${api-key-file} \
'.jellyfin.api_key = $api_key'
'';
};
};
systemd.user.services.jellyfin-rpc = {
Unit.Requires = [ "jellyfin-rpc-configure.service" ];
Unit.After = [ "jellyfin-rpc-configure.service" ];
Install.WantedBy = [ "default.target" ];
Service.ExecStart = lib.getExe pkgs.jellyfin-rpc;
};
sydnix.sops.secrets.jellyfin-rpc-api-key = {};
programs.nixcord.vesktop.package = vesktop-wrapper;
assertions = [{
assertion = config.programs.nixcord.vesktop.enable;
message = "Jellyfin RPC requires Vesktop.";
}];
};
}

View File

@@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.documentation;
in {
options.sydnix.documentation = {
enable = lib.mkEnableOption "Docs";
};
config = lib.mkIf cfg.enable {
home.extraOutputsToInstall = [
"doc"
"info"
"man"
];
};
}

View File

@@ -128,6 +128,13 @@ in {
version = cfg.package.version;
};
in {
xdg.mimeApps = {
enable = true;
defaultApplicationPackages = [
sydmacs
];
};
# Set emacsclient as the default editor for the time being.
home.sessionVariables = {

View File

@@ -7,6 +7,10 @@ in {
};
config = lib.mkIf cfg.enable {
sydnix.impermanence.directories = [
".config/kdeconnect"
];
services.kdeconnect = {
enable = true;
indicator = true;

View File

@@ -0,0 +1,18 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.prism-launcher;
in {
options.sydnix.prism-launcher = {
enable = lib.mkEnableOption "Prism Launcher";
};
config = lib.mkIf cfg.enable {
home.packages = [
pkgs.prismlauncher
];
sydnix.impermanence.directories = [
".local/share/PrismLauncher"
];
};
}

View File

@@ -0,0 +1,33 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.toki-pona;
in {
options.sydnix.toki-pona = {
enable = lib.mkEnableOption "Toki Pona fonts, input, and spell-check";
};
config = lib.mkIf cfg.enable {
i18n.inputMethod.fcitx5.addons = [
(pkgs.fcitx5-toki-pona.overrideAttrs (final: prev: {
patches = prev.patches or [] ++ [
./toki-pona/punctuation.patch
];
}))
];
programs.ghostty.settings.font-family = lib.mkAfter [
"sitelen seli kiwen mono juniko"
];
sydnix.hunspell.dictionaries = ds: with ds; [
tok
];
home.packages = with pkgs; [
# nasin-nanpa-ucsur
nasin-nanpa
nasin-nanpa-helvetica
sitelen-seli-kiwen
];
};
}

View File

@@ -0,0 +1,22 @@
diff --git a/static_tables/toki_pona_ucsur.txt b/static_tables/toki_pona_ucsur.txt
index 1bacd3a..53f5c8e 100644
--- a/static_tables/toki_pona_ucsur.txt
+++ b/static_tables/toki_pona_ucsur.txt
@@ -1,4 +1,4 @@
-KeyCode=mnptkswljiueoa()[]{}^*.:"-_
+KeyCode=mnptkswljiueoa()[]{}^*.:"-_<>,
Length=16
Prompt=
ConstructPhrase=
@@ -13,8 +13,11 @@ _  
^ 󱦕
* 󱦖
. 󱦜
+, 。
: 󱦝 
-
+< 「
+> 」
a 󱤀
akesi 󱤁
ala 󱤂

View File

@@ -1,34 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sydnix.users.crumb.bash;
in {
options.sydnix.users.crumb.bash.enable = lib.mkEnableOption "Bash, à la crumb";
config = lib.mkIf cfg.enable {
programs.bash = {
enable = true;
shellOptions = [
# Correct minor typos in cd commands.
"cdspell"
"autocd"
# Extra glob power.
"extglob"
# Recursive glob w/ **.
"globstar"
# Append to history file.
"histappend"
# Require user confirmation for commands using expansion.
"histverify"
# Re-edit failed history substitutions.
"histreedit"
];
};
home.shellAliases = {
nix2json = "nix eval --impure --json --file -";
"..." = "cd ../..";
"...." = "cd ../../..";
};
};
}

View File

@@ -26,8 +26,8 @@ in {
};
globalOptions = {
# Disable shift to toggle. I accidentally press it all the time.
# 날 미치게 만들어요.
# Disable shift to toggle. I accidentally press it all
# the time. 날 미치게 만들어요.
Hotkey.AltTriggerKeys = "";
};

View File

@@ -0,0 +1,36 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sydnix.users.msyds.bash;
in {
options.sydnix.users.msyds.bash.enable =
lib.mkEnableOption "Bash, à la msyds";
config = lib.mkIf cfg.enable {
sydnix.bash.enable = true;
sydnix.bash.complete-alias.enable = true;
programs.bash.shellOptions = [
# Correct minor typos in cd commands.
"cdspell"
# Implicitly prepend `cd` to directory names.
"autocd"
# Extra glob power.
"extglob"
# Recursive glob w/ **.
"globstar"
# Append to history file.
"histappend"
# Require user confirmation for commands using expansion.
"histverify"
# Re-edit failed history substitutions.
"histreedit"
];
home.shellAliases = {
nix2json = "nix eval --impure --json --file -";
"..." = "cd ../..";
"...." = "cd ../../..";
};
};
}

View File

@@ -1,6 +1,11 @@
{ config, lib, pkgs, ... }:
{ config, lib, pkgs, host, ... }:
let cfg = config.sydnix.users.msyds.dank-material-shell;
let
cfg = config.sydnix.users.msyds.dank-material-shell;
on = hosts:
if builtins.isString hosts
then hosts == host
else builtins.elem host hosts;
in {
options.sydnix.users.msyds.dank-material-shell = {
enable = lib.mkEnableOption "Dank Material Shell";
@@ -167,7 +172,7 @@ in {
showControlCenterButton = true;
showCapsLockIndicator = true;
controlCenterShowNetworkIcon = true;
controlCenterShowBluetoothIcon = true;
controlCenterShowBluetoothIcon = on ["fruitbook"];
controlCenterShowAudioIcon = true;
controlCenterShowVpnIcon = true;
controlCenterShowBrightnessIcon = false;
@@ -286,9 +291,9 @@ in {
batterySuspendTimeout = 0;
batterySuspendBehavior = 0;
batteryProfileName = "";
lockBeforeSuspend = false;
lockBeforeSuspend = true;
loginctlLockIntegration = true;
fadeToLockEnabled = false;
fadeToLockEnabled = true;
fadeToLockGracePeriod = 5;
launchPrefix = "";
brightnessDevicePins = {};

View File

@@ -1,15 +1,16 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.users.crumb.discord;
let cfg = config.sydnix.users.msyds.discord;
in {
options.sydnix.users.crumb.discord = {
options.sydnix.users.msyds.discord = {
enable = lib.mkEnableOption "Discord";
};
config = lib.mkIf cfg.enable {
sydnix.discord.enable = true;
sydnix.discord.jellyfin-rpc.enable = true;
stylix.targets.nixcord.enable = true;
stylix.targets.nixcord.enable = false;
programs.nixcord = {
quickCss = ''
@@ -29,6 +30,11 @@ in {
];
plugins = {
ircColors.enable = true;
voiceMessages = {
enable = true;
echoCancellation = false;
noiseSuppression = false;
};
};
};
vesktop = {

View File

@@ -31,6 +31,17 @@ in {
treesit.enable = true;
};
home.sessionVariables = {
ESHELL_ALIASES_FILE = pkgs.writeText "eshell-aliases" ''
alias cdp syd-project-cd
alias jj jj --no-pager $*
${lib.concatMapAttrsStringSep
"\n"
(alias: value: "alias ${alias} ${value} $*")
config.home.shellAliases}
'';
};
sydnix.emacs = {
enable = true;
defaultEditor = true;

View File

@@ -0,0 +1,11 @@
;;;; Emacs Bookmark Format Version 1;;;; -*- coding: utf-8-emacs; mode: lisp-data -*-
;;; This format is meant to be slightly human-readable;
;;; nevertheless, you probably don't want to edit it.
;;; -*- End Of Bookmark File Format Version Stamp -*-
(("org-capture-last-stored"
(filename . "~/org/daily/2026-03-26.org")
(front-context-string . "* The significan")
(rear-context-string . "le: 2026-03-26\n\n")
(position . 89)
(last-modified 27077 32462 617656 528000))
)

View File

@@ -3,6 +3,7 @@
(syd-require-features
'(syd/base
syd/constants
syd/fcitx
syd/dash
syd/disable-package
syd/straight
@@ -49,6 +50,7 @@
syd/direnv
syd/ligature
syd/clojure
syd/auctex
syd/lisp
syd/minibuffer
syd/auto-save
@@ -63,5 +65,6 @@
syd/eshell
syd/treesit
syd/grammatical-framework
syd/tabs
syd/lsp
syd/custom))

View File

@@ -0,0 +1,11 @@
;;; -*- lexical-binding: t; -*-
(require 'syd/base)
(use-package auctex
:config
(add-to-list 'TeX-view-program-selection '(output-pdf "Sioyek")))
(use-package auctex-latexmk)
(provide 'syd/auctex)

View File

@@ -1,6 +1,7 @@
;;; -*- lexical-binding: t; -*-
(require 'syd/base)
(require 'syd/handle)
(require 'syd/popups)
(require 'syd/leader)
@@ -26,7 +27,8 @@
cider-doc-buffer)
(defun syd-clojure-eval-region (beg end)
(cider-eval-region beg end))
(syd-handle '(clojure-mode clojurescript-mode cider-repl-mode)
(syd-handle '(clojure-mode clojurescript-mode cider-repl-mode
cider-clojure-interaction-mode)
:docs #'cider-doc
:eval-region #'syd-clojure-eval-region
:load-buffer #'cider-load-buffer)
@@ -108,4 +110,13 @@
s)
s))))
(defun syd-clojure--setup-clj-refactor ()
(clj-refactor-mode 1)
(yas-minor-mode 1)
(cljr-add-keybindings-with-prefix "C-c r"))
(use-package clj-refactor
:config
(add-hook 'clojure-mode-hook #'syd-clojure--setup-clj-refactor))
(provide 'syd/clojure)

View File

@@ -1,4 +1,7 @@
;;; -*- lexical-binding: t -*-
;; -*- lexical-binding: t -*-
(require 'syd/base)
(require 'syd/popups)
(setq
;; Log native-compiler warnings, but don't display the buffer. Most of the
@@ -8,4 +11,7 @@
;; Scroll compilation buffer to follow output.
compilation-scroll-output t)
(syd-push shackle-rules
'("*compilation*" :select nil :size 0.42 :popup t :align bottom))
(provide 'syd/compilation)

View File

@@ -150,7 +150,9 @@ if FILE-NAME has no TRAMP prefix."
(eshell-last-dir-ring-file-name (file-name-concat
syd-eshell-data-dir "lastdir"))
(eshell-prompt-function #'syd-eshell--prompt-fn)
(eshell-prompt-regexp syd-eshell--prompt-regexp))
(eshell-prompt-regexp syd-eshell--prompt-regexp)
(eshell-aliases-file (or (getenv "ESHELL_ALIASES_FILE")
eshell-aliases-file)))
:general
(:keymaps 'syd-leader-open-map
"e" #'syd-toggle-eshell)

View File

@@ -0,0 +1,10 @@
;;; -*- lexical-binding: t; -*-
(require 'syd/base)
(use-package fcitx
:custom ((fcitx-remote-command "fcitx5-remote"))
:config
(fcitx-aggressive-setup))
(provide 'syd/fcitx)

View File

@@ -12,15 +12,21 @@
(font-spec :family "JuliaMono" :size 16)
"A monospace font secondary to `syd-fixed-pitch-font'.")
(defvar syd-sitelen-pona-font
(font-spec :family "sitelen seli kiwen mono juniko"))
(defun syd-init-fonts-h ()
"Loads `syd-fixed-pitch-font' and `syd-variable-pitch-font'."
(dolist (map `((default . ,syd-fixed-pitch-font)
(fixed-pitch . ,syd-fixed-pitch-font)
(variable-pitch . ,syd-variable-pitch-font)))
(fixed-pitch . ,syd-fixed-pitch-font)
(variable-pitch . ,syd-variable-pitch-font)))
(pcase-let ((`(,face . ,font) map))
(set-face-attribute face nil
:width 'normal :weight 'normal
:slant 'normal :font font))))
:width 'normal :weight 'normal
:slant 'normal :font font)))
(set-fontset-font
t '(#xF1900 . #xF19FF)
syd-sitelen-pona-font))
(let ((hook-point (if (daemonp)
'server-after-make-frame-hook

View File

@@ -5,22 +5,28 @@
(use-package ligature
:config
(ligature-set-ligatures 'prog-mode
'("|||>" "<|||" "<==>" "<!--" "####" "~~>" "***" "||="
"||>" ":::" "::=" "=:=" "===" "==>" "=!=" "=>>"
"=<<" "=/=" "!==" "!!." ">=>" ">>=" ">>>" ">>-"
">->" "->>" "-->" "---" "-<<" "<~~" "<~>" "<*>"
"<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->" "<--"
"<-<" "<<=" "<<-" "<<<" "<+>" "</>" "###" "#_("
"..<" "..." "+++" "/==" "///" "_|_" "www" "&&" "^="
"~~" "~@" "~=" "~>" "~-" "**" "*>" "*/" "||" "|}"
"|]" "|=" "|>" "|-" "{|" "[|" "]#" "::" ":=" ":>"
":<" "$>" "==" "=>" "!=" "!!" ">:" ">=" ">>" ">-"
"-~" "-|" "->" "--" "-<" "<~" "<*" "<|" "<:" "<$"
"<=" "<>" "<-" "<<" "<+" "</" "#{" "#[" "#:" "#="
"#!" "##" "#(" "#?" "#_" "%%" ".=" ".-" ".." ".?"
"+>" "++" "?:" "?=" "?." "??" ";;" ";;;"
"/*" "/=" "/>" "//" "__" "~~" "(*" "*)"
"\\\\" "://"))
'("|||>" "<|||" "<==>" "<!--" "####" "~~>" "***" "||="
"||>" ":::" "::=" "=:=" "===" "==>" "=!=" "=>>"
"=<<" "=/=" "!==" "!!." ">=>" ">>=" ">>>" ">>-"
">->" "->>" "-->" "---" "-<<" "<~~" "<~>" "<*>"
"<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->" "<--"
"<-<" "<<=" "<<-" "<<<" "<+>" "</>" "###" "#_("
"..<" "..." "+++" "/==" "///" "_|_" "www" "&&" "^="
"~~" "~@" "~=" "~>" "~-" "**" "*>" "*/" "||" "|}"
"|]" "|=" "|>" "|-" "{|" "[|" "]#" "::" ":=" ":>"
":<" "$>" "==" "=>" "!=" "!!" ">:" ">=" ">>" ">-"
"-~" "-|" "->" "--" "-<" "<~" "<*" "<|" "<:" "<$"
"<=" "<>" "<-" "<<" "<+" "</" "#{" "#[" "#:" "#="
"#!" "##" "#(" "#?" "#_" "%%" ".=" ".-" ".." ".?"
"+>" "++" "?:" "?=" "?." "??" ";;" ";;;"
"/*" "/=" "/>" "//" "__" "~~" "(*" "*)"
"\\\\" "://"))
;; Sitelen pona glyphs.
(rx-let ((ideograph (any (#xF1900 . #xF198C))))
(ligature-set-ligatures
'fundamental-mode
`(("󱦐" ,(rx (* ideograph)))
("󱥍" ,(rx "󱦗" (* ideograph))))))
(global-ligature-mode 1))
(provide 'syd/ligature)

View File

@@ -0,0 +1,9 @@
;; -*- lexical-binding: t; -*-
(require 'syd/base)
(use-package markdown-mode
:config
(add-hook 'markdown-mode-hook #'syd-prose-mode))
(provide 'syd/markdown)

View File

@@ -80,7 +80,8 @@
:target (file "todays-korean/%<%Y-%m-%d>.org"))
("I" "Korean irregularity class" plain
(file ,(syd-emacs-file "lisp/syd/org/roam/irregularity-class.org"))
:target (file ,default-target-file-name))))))
:target (file ,default-target-file-name)))))
(org-roam-link-auto-replace nil))
:config
(add-to-list 'org-agenda-files org-roam-directory)
(with-eval-after-load 'org-roam-dailies

View File

@@ -0,0 +1,7 @@
;;; -*- lexical-binding: t -*-
(require 'syd/base)
;; Disable tabs by default.
(setq-default indent-tabs-mode nil)
(provide 'syd/tabs)

View File

@@ -0,0 +1 @@
nil

View File

@@ -0,0 +1,20 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.users.msyds.sioyek;
in {
options.sydnix.users.msyds.sioyek = {
enable = lib.mkEnableOption "Sioyek";
};
config = lib.mkIf cfg.enable {
programs.sioyek = {
enable = true;
bindings = {
"move_down" = "j";
"move_up" = "k";
"screen_down" = [ "d" "<C-d>" ];
"screen_up" = [ "u" "<C-u>" ];
};
};
};
}

12
modules/nixos/blueman.nix Normal file
View File

@@ -0,0 +1,12 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.blueman;
in {
options.sydnix.blueman = {
enable = lib.mkEnableOption "Blueman BlueTooth manager";
};
config = lib.mkIf cfg.enable {
services.blueman.enable = true;
};
}

View File

@@ -7,8 +7,6 @@ in {
};
config = lib.mkIf cfg.enable {
services.blueman.enable = true;
hardware.bluetooth = {
enable = true;
powerOnBoot = true;

View File

@@ -1,40 +0,0 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.deertopia.atticd;
in {
options.sydnix.deertopia.atticd = {
enable = lib.mkEnableOption "Atticd";
port = lib.mkOption {
default = 8012;
type = lib.types.port;
};
};
# sudo atticd-atticadm make-token --sub msyds --validity '1 year' --pull 'msyds-*' --push 'msyds-*' --create-cache 'msyds-*' --configure-cache 'msyds-*'
config = lib.mkIf cfg.enable {
sydnix.sops.secrets.atticd-environment-file = {
# owner = config.services.atticd.user;
# group = config.services.atticd.group;
};
services.atticd = {
enable = true;
environmentFile =
config.sops.secrets.atticd-environment-file.path;
settings = {
api-endpoint = "https://attic.deertopia.net/";
listen = "[::]:${toString cfg.port}";
garbage-collection = {
default-retention-period = "3 months";
};
};
};
sydnix.deertopia.nginx.vhosts."attic".vhost = {
forceSSL = true;
enableACME = true;
locations."/".proxyPass =
"http://127.0.0.1:${toString cfg.port}";
};
};
}

View File

@@ -1,12 +1,10 @@
{ config, lib, pkgs, ... }:
with lib;
let cfg = config.sydnix.deertopia.bepasty;
in {
options = {
sydnix.deertopia.bepasty = {
enable = mkEnableOption "Bepasty";
enable = lib.mkEnableOption "Bepasty";
port = lib.mkOption {
default = 22018;
@@ -19,7 +17,7 @@ in {
};
};
config = mkIf cfg.enable {
config = lib.mkIf cfg.enable {
sydnix.sops.secrets.bepasty-secret-key = {};
sydnix.sops.secrets.bepasty-secret-config = {};

View File

@@ -13,10 +13,14 @@ in {
};
};
imports = [ ./copyparty/vault.nix ];
imports = [
./copyparty/vault.nix
./copyparty/webdav.nix
];
config = lib.mkIf cfg.enable {
sydnix.deertopia.copyparty.vault.enable = true;
sydnix.deertopia.copyparty.webdav.enable = true;
sydnix.impermanence.directories = [
"/var/lib/copyparty"
@@ -29,8 +33,8 @@ in {
"media"
];
# HACK: Make files created by copyparty.service initialise with the mode
# 775.
# HACK: Make files created by copyparty.service initialise with
# the mode 775.
systemd.services.copyparty.serviceConfig.UMask = lib.mkForce "002";
services.copyparty = {
@@ -56,7 +60,7 @@ in {
"/Media library" = {
path = "/media/library";
# View and upload, but no deleting.
access.rw = "*";
access.r = "*";
access.rwmd = "@jellyfin-admin";
};
"/Torrents" = {

View File

@@ -36,6 +36,12 @@ in {
access.A = [ "msyds" ];
access.rwmd = [ "zotero" ];
};
"/msyds/zotero-root" = {
path = "/vault/msyds/zotero-root";
flags.daw = true;
access.A = [ "msyds" ];
access.rwmd = [ "zotero" ];
};
"/~msyds/public" = {
path = "/vault/~msyds/public";
access.A = [ "msyds" ];

View File

@@ -0,0 +1,57 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.deertopia.copyparty.webdav;
in {
options.sydnix.deertopia.copyparty.webdav = {
enable = lib.mkEnableOption "WebDAV via copyparty";
port = lib.mkOption {
type = lib.types.port;
description = ''
Port on which Copyparty shall listen for WebDAV traffic.
'';
default = 3924;
};
};
# https://github.com/9001/copyparty/issues/1142
config = lib.mkIf cfg.enable {
services.copyparty.settings = {
rproxy = -1;
xff-src = "lan";
daw = true;
dav-auth = true;
ihead = "*";
ohead = "*";
dav-port = cfg.port;
};
services.authelia.instances.deertopia.settings =
lib.mkIf config.sydnix.deertopia.authelia.enable {
access_control.rules = lib.mkBefore [
{
domain = "dav.deertopia.net";
policy = "bypass";
methods = [ "OPTIONS" "PROPFIND" ];
}
];
};
sydnix.deertopia.nginx.vhosts."dav" = {
directory = null;
vhost = {
forceSSL = true;
enableACME = true;
extraConfig = ''
include ${../authelia/authelia-location.conf};
# Increase limit of upload sizes.
client_max_body_size 20G;
'';
locations."/".extraConfig = ''
include ${../authelia/authelia-authrequest.conf};
include ${../authelia/proxy.conf};
proxy_pass http://localhost:${builtins.toString cfg.port};
'';
};
};
};
}

View File

@@ -1,6 +1,8 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.deertopia.gitea;
let
cfg = config.sydnix.deertopia.gitea;
commas = lib.concatStringsSep ",";
in {
options.sydnix.deertopia.gitea = {
enable = lib.mkEnableOption "Gitea";
@@ -40,11 +42,18 @@ in {
# sudo -u git gitea admin auth add-ldap --name gitea --port 3890 --bind-dn 'uid=gitea,ou=people,dc=deertopia,dc=net' --bind-password «password» --user-search-base 'ou=people,dc=deertopia,dc=net' --user-filter '(&(memberof=cn=git,ou=groups,dc=deertopia,dc=net)(|(uid=%[1]s)(mail=%[1]s)))' --username-attribute uid --firstname-attribute givenName --surname-attribute sn --email-attribute mail --avatar-attribute jpegPhoto --security-protocol unencrypted --host 127.0.0.1 --config /var/lib/gitea/custom/conf/app.ini --synchronize-users
sydnix.sops.secrets.gitea-mailer-password = {
mode = "0440";
owner = "git";
group = "git";
};
services.gitea = {
enable = true;
user = "git";
group = "git";
appName = "GupHub"; # Name per my darling Colestar ♥
appName = "GupHub"; # Name per my dear Astrid ♥!!!!!
mailerPasswordFile = config.sops.secrets.gitea-mailer-password.path;
settings = {
server = {
ROOT_URL = "https://git.deertopia.net/";
@@ -53,7 +62,48 @@ in {
};
service = {
DISABLE_REGISTRATION = true;
ENABLE_NOTIFY_MAIL = true;
};
"repository.pull-request" = {
CLOSE_KEYWORDS = commas [
# en
"close" "closes" "closed" "fix" "fixes" "fixed" "resolve"
"resolves" "resolved"
# tok
"pini e"
# ko
"" "" ""
"" "" "" "" ""
"" "" "" "" ""
];
REOPEN_KEYWORDS = commas [
# en
"reopen" "reopens" "reopened"
# tok
"open sin e" "pakala sin e"
"li pakala sin" "li pakalan sin"
# ko
"" "" " " " " " "
" "
];
WORK_IN_PROGRESS_PREFIXES = commas [
# en
"WIP:" "[WIP]"
# tok
"pini ala:" "awen pali:"
# ko
" :" ":" ":" "[]" ":" "[]"
];
DEFAULT_MERGE_STYLE = "rebase";
};
mailer = {
ENABLED = true;
FROM = "Gitea <no-reply@deertopia.net>";
PROTOCOL = "smtps";
SMTP_ADDR = "smtp.fastmail.com";
SMTP_PORT = 465;
USER = "msyds@deertopia.net";
};
};
};
};

View File

@@ -3,13 +3,51 @@
let
cfg = config.sydnix.gitea-actions-runner;
container-name = "gitea-actions-runner";
gitea-actions-runner-uid = 991;
gitea-actions-runner-gid = 989;
token-file = config.sops.secrets.gitea-actions-runner-token.path;
in {
options.sydnix.gitea-actions-runner = {
enable = lib.mkEnableOption "Gitea actions runner";
instance-name = lib.mkOption {
type = lib.types.str;
default = config.networking.hostName;
description = ''
The name of the runner instance name.
'';
};
user.name = lib.mkOption {
type = lib.types.str;
default = "gitea-actions-runner";
description = ''
The name of the user gitea-actions-runner should run under.
'';
};
user.uid = lib.mkOption {
type = lib.types.int;
default = 991;
description = ''
The UID of the user gitea-actions-runner should run under.
This must be known at evaluation time so that the same UID can
be used both on the host and in the container, allowing the
container to access the host's nix-daemon.
'';
};
group.name = lib.mkOption {
type = lib.types.str;
default = "gitea-actions-runner";
description = ''
The name of the group gitea-actions-runner should run under.
'';
};
group.gid = lib.mkOption {
type = lib.types.int;
default = 989;
description = ''
The GID of the group gitea-actions-runner should run under.
This must be known at evaluation time so that the same GID can
be used both on the host and in the container, allowing the
container to access the host's nix-daemon.
'';
};
};
config = lib.mkIf cfg.enable {
@@ -17,7 +55,7 @@ in {
sydnix.impermanence.directories = [ "/var/lib/gitea-actions-runner" ];
containers.${container-name} = {
containers."gitea-actions-runner" = {
autoStart = true;
ephemeral = true;
@@ -35,9 +73,9 @@ in {
config = { config, lib, pkgs, ... }: {
system.stateVersion = "25.11";
services.gitea-actions-runner.instances.sydpc = {
services.gitea-actions-runner.instances.${cfg.instance-name} = {
enable = true;
name = "sydpc";
name = cfg.instance-name;
url = "https://git.deertopia.net/";
tokenFile = token-file;
labels = [ "nixos:host" ];
@@ -56,23 +94,27 @@ in {
# Disable dynamic user so runner state persists via bind mount
assertions = [{
assertion = config.systemd.services.gitea-actions-runner-sydpc.enable;
assertion =
config.systemd.services.gitea-actions-runner-sydpc.enable;
message = ''
Expected systemd service 'gitea-actions-runner-sydpc' is not
enabled the gitea-actions-runner module may have changed
its naming scheme.
Expected systemd service 'gitea-actions-runner-sydpc' is
not enabled the gitea-actions-runner NixOS module may
have changed its naming scheme.
'';
}];
systemd.services.gitea-actions-runner-sydpc.serviceConfig.DynamicUser
= lib.mkForce false;
users.users.gitea-actions-runner = {
uid = gitea-actions-runner-uid;
users.users.${cfg.user.name} = {
uid = cfg.user.uid;
home = "/var/lib/gitea-actions-runner";
group = "gitea-actions-runner";
group = cfg.group.name;
isSystemUser = true;
createHome = true;
};
users.groups.gitea-actions-runner.gid = gitea-actions-runner-gid;
users.groups.gitea-actions-runner.gid = cfg.group.gid;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
@@ -81,23 +123,27 @@ in {
nodejs
jq
attic-client
omnix
];
};
};
# Needs to be outside of the container because container uses's
# the host's nix-daemon
nix.settings.trusted-users = [ "gitea-actions-runner" ];
nix.settings.trusted-users = [
cfg.user.name
];
# Matching user on host — the container's gitea-actions-runner UID must be
# recognized by the host's nix-daemon as trusted (shared UID namespace)
users.users.gitea-actions-runner = {
uid = gitea-actions-runner-uid;
# Matching user on host — the container's gitea-actions-runner UID
# must be recognized by the host's nix-daemon as trusted (shared
# UID namespace)
users.users.${cfg.user.name} = {
uid = cfg.user.uid;
home = "/var/lib/gitea-actions-runner";
group = "gitea-actions-runner";
group = cfg.group.name;
isSystemUser = true;
createHome = true;
};
users.groups.gitea-actions-runner.gid = gitea-actions-runner-gid;
users.groups.${cfg.group.name}.gid = cfg.group.gid;
};
}

View File

@@ -70,10 +70,6 @@ in {
};
# O_O what the fuck did i write this for.... CONCERNING.
#
# oh because of these types of errors:
# Directory "/var/lib/private" already exists, but has mode 0755
# that is too permissive (0700 was requested), refusing.
systemd.tmpfiles.settings."10-varlibprivate" = {
"/var/lib/private" = {
z.group = "root";
@@ -82,13 +78,6 @@ in {
};
};
# Workaround for https://github.com/nix-community/impermanence/issues/254.
systemd.services."systemd-tmpfiles-resetup" = {
serviceConfig = {
RemainAfterExit = lib.mkForce false;
};
};
# Permit members of `cfg.persistGroupName` to read, write, and execute
# /persist.
systemd.tmpfiles.settings."10-persist" = {

12
modules/nixos/upower.nix Normal file
View File

@@ -0,0 +1,12 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.upower;
in {
options.sydnix.upower = {
enable = lib.mkEnableOption "UPower";
};
config = lib.mkIf cfg.enable {
services.upower.enable = true;
};
}

View File

@@ -59,6 +59,7 @@ let
pkgs = nixpkgs;
};
inherit inputs system;
host = hostName;
};
})
];

File diff suppressed because one or more lines are too long

View File

@@ -18,59 +18,68 @@
];
};
homeConfiguration = { config, lib, pkgs, ... }: {
home.file.".ssh/id_ed25519".source =
config.lib.file.mkOutOfStoreSymlink
"/persist/private-keys/ssh/msyds@sydpc";
homeConfiguration = { config, lib, pkgs, host, ... }:
let on = hosts:
if builtins.isString hosts
then hosts == host
else builtins.elem host hosts;
in {
home.file.".ssh/id_ed25519".source =
config.lib.file.mkOutOfStoreSymlink
"/persist/private-keys/ssh/msyds@sydpc";
home.file.".face".source = ./avatar.jpg;
home.file.".face".source = ./avatar.jpg;
home.file.".ssh/id_ed25519.pub".source =
../../public-keys/ssh/${"msyds@sydpc.pub"};
home.file.".ssh/id_ed25519.pub".source =
../../public-keys/ssh/${"msyds@sydpc.pub"};
sydnix = {
xdg.enable = true;
steam.enable = true;
zotero.enable = true;
openutau.enable = true;
slippi.enable = true;
desktop-environment.enable = true;
clojure.enable = true;
capitaine-cursors.enable = true;
terraria.enable = true;
kdeconnect.enable = true;
qalculate.enable = true;
sops = {
enable = true;
keyFile = "/persist/private-keys/age/crumb";
};
# Personal configurations.
users.crumb = {
bash.enable = true;
direnv.enable = true;
git.enable = true;
nvim.enable = true;
readline.enable = true;
niri.enable = true;
firefox.enable = true;
ghostty.enable = true;
# waybar.enable = true;
tf2.enable = true;
fcitx5.enable = true;
anki.enable = true;
mumble.enable = true;
};
users.msyds = {
hunspell.enable = true;
emacs.enable = true;
impermanence.enable = true;
syncthing.enable = true;
fonts.enable = true;
dank-material-shell.enable = true;
sydnix = {
documentation.enable = true;
xdg.enable = true;
steam.enable = on "sydpc";
zotero.enable = true;
slippi.enable = on "sydpc";
desktop-environment.enable = true;
clojure.enable = true;
capitaine-cursors.enable = true;
terraria.enable = on "sydpc";
kdeconnect.enable = true;
qalculate.enable = true;
toki-pona.enable = true;
prism-launcher.enable = true;
sops = {
enable = true;
keyFile = "/persist/private-keys/age/crumb";
};
# Personal configurations.
users.crumb = {
direnv.enable = true;
git.enable = true;
nvim.enable = true;
readline.enable = true;
niri.enable = true;
firefox.enable = true;
ghostty.enable = true;
# waybar.enable = true;
tf2.enable = true;
fcitx5.enable = true;
anki.enable = true;
mumble.enable = true;
};
users.msyds = {
discord.enable = true;
bash.enable = true;
hunspell.enable = true;
emacs.enable = true;
impermanence.enable = true;
syncthing.enable = true;
fonts.enable = true;
dank-material-shell.enable = true;
sioyek.enable = true;
};
};
# Don't touch!
home.stateVersion = "18.09";
};
# Don't touch!
home.stateVersion = "18.09";
};
}

View File

@@ -17,6 +17,7 @@ gitlab-oauth: ENC[AES256_GCM,data:1THznoGRZmq7BkisZoGa0ZiPG7aSmkV06SY=,iv:Gq6UPH
anki-username: ENC[AES256_GCM,data:cUWaxIc=,iv:I2wy54406Xe4tVHIhIFZqbezepc2wtp2M15T7ES9zGQ=,tag:FiU2CscHDcNv+6S5pODG7w==,type:str]
anki-password: ENC[AES256_GCM,data:kXQq1JPjTRpQ4f6/BOFj/gBhUA==,iv:P8MVsmCfyOoEJmyAjBfMSRT6mpkwDUBIzr2UjZmjHOA=,tag:D7KWEpldP/H6CUH7y+5/7Q==,type:str]
anki-sync-key: ENC[AES256_GCM,data:wvAo92t6oR8PxE5EId/OC+J4GKs/Rp21PSp+uDt72JWFzeWHO6a1KA==,iv:2yU4skxlDuH6smSr5PnPe8ZkWf4gdxKBXQfzPFiZXoA=,tag:7KXl5A4vzRdkWO++LbMb9A==,type:str]
jellyfin-rpc-api-key: ENC[AES256_GCM,data:srElaGG1JVWwDb+xA4iG9ew6oFUEHSd6AlLUXN8iA3c=,iv:z1UQshfWW6Q7GK8Ff8GK3OD7z0Aa5kePVRPLlUsDmF0=,tag:+csa3asD+0qthO05uZqK0A==,type:str]
sops:
age:
- recipient: age1qayk0d0f765v57pedm7mtau6qkmv8rh6jtaqm40g5g9armaty4jqc0v0y2
@@ -28,7 +29,7 @@ sops:
VVBqSEM2bVFBU0M5YzZBQWIwUmVXUXMKvWb57Rc+rO5M8Pf7lvbSjuZB4FrHgT3A
uBQHH3wpv0BVVzL8tucPnwNxDnwpWvFxxwNVy/rtfs6y6HPu6fuOsA==
-----END AGE ENCRYPTED FILE-----
lastmodified: "2025-11-30T00:32:08Z"
mac: ENC[AES256_GCM,data:9c3xcwnGSoi/IpDHBJ922kd9Xh4EodOL/1B1epdCIB/N3Pu07wVMGSGm97e2uqczbFgebXc/Oz1Gpr9hdxNpvxlldXQgqPhZIlk6Pfelf6E0WcC5+QOE1ZQ6MTsgAE5RjFy2fctphXJi/Z9VuTcSgakSYuy+0QbPCfuwL5CaTVk=,iv:8qwCqjVALlaxJCAfZURpt7c6/3b9KKar7mtsYb3/rlw=,tag:utHZLe3FojSmyvBBIzfY2A==,type:str]
lastmodified: "2026-03-06T21:55:34Z"
mac: ENC[AES256_GCM,data:kkEZI0Of8KUpGJRoGAD3gXCtNz44Sucki4Fk2lQ55o+IcBYtxJwwpoQH3usihSigaPquee4XAxhdlWyHt7S46Q9dTFXjT9IUpnxrlG0ZQOnTRbdRlT2qcxLSlghdDWRuezhjT5KWFqlq4Av85KmL7kiB7LAkPVk6EERHJuFsWR8=,iv:Y3wd4hP1ui3rtXe++3j1oAKYbd8V4cc0SBLOlcyl5Zc=,tag:/FK8R28WAWDhWImMnm6wQg==,type:str]
unencrypted_suffix: _unencrypted
version: 3.11.0
version: 3.12.1