1 Commits

Author SHA1 Message Date
msyds 1beac52c98 feat(gitea): init 2026-02-08 21:35:31 -07:00
55 changed files with 370 additions and 1051 deletions
-17
View File
@@ -1,17 +0,0 @@
name: build
run-name: ${{ gitea.actor }} is testing out Gitea Actions 🚀
on: [push]
jobs:
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
- name: build fruitbook
run: nix build -L .#nixosConfigurations.fruitbook.config.system.build.toplevel
- name: build deertopia
run: nix build -L .#nixosConfigurations.deertopia.config.system.build.toplevel
+17 -1
View File
@@ -1,4 +1,20 @@
#+title: Sydnix #+title: Sydnix
#+author: Madeleine Sydney Ślaga #+author: Madeleine Sydney Ślaga
these are my disgusting undocumented dotfiles. someday they'll be documented. maybe. }:) Hello! These are my dotfiles for all my software and Nix machines. My TODO lists and READMEs tend to share a file, so I've moved it out of version-control. A link will be here soon enough.
* Overview
** Modules
Nix modules are Sydnix's primary mode of organisation. The modules in this repository are categorised by the scope of their applicability, be it user-specific, machine-specific, Sydnix-specific, or releasable. These sum of these categories resembles a hierarchy wherein modules become less generally-applicable as they build off one another. This all goes to say, in a very roundabout fashion, that we are using the [[https://www.nayuki.io/pe/designing-better-file-organization-around-tags-not-hierarchies][accursed]] hierarchical file-system as god intended:
#+begin_example
«TODO: Annotated diagram explaining the structore of modules/»
#+end_example
User modules may be configurations using a host-specific module, which itself may be a configuration of a Sydnix-specific module.
# Local Variables:
# jinx-local-words: "dotfiles"
# End:
Generated
+114 -117
View File
@@ -21,28 +21,28 @@
"base16-fish": { "base16-fish": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1765809053, "lastModified": 1754405784,
"narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=", "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=",
"owner": "tomyun", "owner": "tomyun",
"repo": "base16-fish", "repo": "base16-fish",
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "tomyun", "owner": "tomyun",
"repo": "base16-fish", "repo": "base16-fish",
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"type": "github" "type": "github"
} }
}, },
"base16-helix": { "base16-helix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1760703920, "lastModified": 1752979451,
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=", "narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-helix", "repo": "base16-helix",
"rev": "d646af9b7d14bff08824538164af99d0c521b185", "rev": "27cf1e66e50abc622fb76a3019012dc07c678fac",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -76,11 +76,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1774411715, "lastModified": 1762095388,
"narHash": "sha256-mceIHtVMXpLAfr1W0VK9ceTBX5yKu4gGWpVbThWTsAA=", "narHash": "sha256-7Q8LtcvKWHbP8znARRTOY2tpU5WoV6FHwp5TZJOI8Us=",
"owner": "9001", "owner": "9001",
"repo": "copyparty", "repo": "copyparty",
"rev": "26e663d111e39ca96c63702ad27a05b6736607cf", "rev": "ac085b8149ff50e03d260128596dd130ed1c7cae",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -129,11 +129,11 @@
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1764873433, "lastModified": 1758112371,
"narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=", "narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=",
"owner": "rafaelmardojai", "owner": "rafaelmardojai",
"repo": "firefox-gnome-theme", "repo": "firefox-gnome-theme",
"rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92", "rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -149,7 +149,7 @@
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"revCount": 69, "revCount": 69,
"type": "tarball", "type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.1.0/01948eb7-9cba-704f-bbf3-3fa956735b52/source.tar.gz" "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"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
@@ -161,11 +161,11 @@
"nixpkgs-lib": "nixpkgs-lib" "nixpkgs-lib": "nixpkgs-lib"
}, },
"locked": { "locked": {
"lastModified": 1772408722, "lastModified": 1754091436,
"narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", "narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", "rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -203,11 +203,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1767609335, "lastModified": 1756770412,
"narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=", "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "250481aafeb741edfe23d29195671c19b36b6dca", "rev": "4524271976b625a4a605beefd893f270620fd751",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -287,11 +287,11 @@
"flake": false, "flake": false,
"locked": { "locked": {
"host": "gitlab.gnome.org", "host": "gitlab.gnome.org",
"lastModified": 1767737596, "lastModified": 1762869044,
"narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=", "narHash": "sha256-nwm/GJ2Syigf7VccLAZ66mFC8mZJFqpJmIxSGKl7+Ds=",
"owner": "GNOME", "owner": "GNOME",
"repo": "gnome-shell", "repo": "gnome-shell",
"rev": "ef02db02bf0ff342734d525b5767814770d85b49", "rev": "680e3d195a92203f28d4bf8c6e8bb537cc3ed4ad",
"type": "gitlab" "type": "gitlab"
}, },
"original": { "original": {
@@ -307,11 +307,11 @@
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1773608492, "lastModified": 1768325819,
"narHash": "sha256-QZteyExJYSQzgxqdsesDPbQgjctGG7iKV/6ooyQPITk=", "narHash": "sha256-mBKqOJkxCRwEhIXfq93WTcDXsBlJ/f1Dfv9thJxrDPs=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "9a40ec3b78fc688d0908485887d355caa5666d18", "rev": "b1fa714d6cd656e3105d1965637be6ab7541d7d7",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -345,11 +345,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable" "xwayland-satellite-unstable": "xwayland-satellite-unstable"
}, },
"locked": { "locked": {
"lastModified": 1772698812, "lastModified": 1768306584,
"narHash": "sha256-7+K/VaZ7TXUeUGSYshg8wC3UsRZHB+M4x6r38Q1B79c=", "narHash": "sha256-GWLONqOKcsWKFYqoEIFbIv6Ti/xoSvsYC9LzZzB1oj4=",
"owner": "sodiboo", "owner": "sodiboo",
"repo": "niri-flake", "repo": "niri-flake",
"rev": "5641625ef950f024e3e0e3f38bb91f876290c0be", "rev": "1b8c8ba473cf336d74ffb05ee453c8fe6a05bbbc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -378,11 +378,11 @@
"niri-unstable": { "niri-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1772207631, "lastModified": 1768196703,
"narHash": "sha256-Jkkg+KqshFO3CbTszVVpkKN2AOObYz+wMsM3ONo1z5g=", "narHash": "sha256-mttBQdVnVFO3mn+M+oqCsZZOtS2HvXYy+VaHxb8YuMw=",
"owner": "YaLTeR", "owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"rev": "e708f546153f74acf33eb183b3b2992587a701e5", "rev": "3672e79369d72297abda8878245ea4ec327062c6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -423,11 +423,11 @@
"nixpkgs": "nixpkgs_5" "nixpkgs": "nixpkgs_5"
}, },
"locked": { "locked": {
"lastModified": 1772813986, "lastModified": 1764576281,
"narHash": "sha256-x0fD+LL+O99p36c2UnjnHvVq4/7TvGH/8G5lTNIJBCo=", "narHash": "sha256-f6vfwmIb9C3brI4/KJ9MFUDWt6FsKQ0dbMO6AuFc7E0=",
"owner": "KaylorBen", "owner": "KaylorBen",
"repo": "nixcord", "repo": "nixcord",
"rev": "e433a2919eb9b3a8c85ab3017c08685816e63a66", "rev": "c8f47894134a4984acd319e66c4384eb1ff886e2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -436,21 +436,6 @@
"type": "github" "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": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1741402956, "lastModified": 1741402956,
@@ -469,11 +454,11 @@
}, },
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"lastModified": 1772328832, "lastModified": 1753579242,
"narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=", "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs.lib", "repo": "nixpkgs.lib",
"rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742", "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -500,11 +485,11 @@
}, },
"nixpkgs-stable_2": { "nixpkgs-stable_2": {
"locked": { "locked": {
"lastModified": 1772598333, "lastModified": 1768242861,
"narHash": "sha256-YaHht/C35INEX3DeJQNWjNaTcPjYmBwwjFJ2jdtr+5U=", "narHash": "sha256-F4IIxa5xDHjtrmMcayM8lHctUq1oGltfBQu2+oqDWP4=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "fabb8c9deee281e50b1065002c9828f2cf7b2239", "rev": "1327e798cb055f96f92685df444e9a2c326ab5ed",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -515,6 +500,22 @@
} }
}, },
"nixpkgs_10": { "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": { "locked": {
"lastModified": 1743568003, "lastModified": 1743568003,
"narHash": "sha256-ZID5T65E8ruHqWRcdvZLsczWDOAWIE7om+vQOREwiX0=", "narHash": "sha256-ZID5T65E8ruHqWRcdvZLsczWDOAWIE7om+vQOREwiX0=",
@@ -548,11 +549,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1773389992, "lastModified": 1767892417,
"narHash": "sha256-wvfdLLWJ2I9oEpDd9PfMA8osfIZicoQ5MT1jIwNs9Tk=", "narHash": "sha256-dhhvQY67aboBk8b0/u0XB6vwHdgbROZT3fJAjyNh5Ww=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c06b4ae3d6599a672a6210b7021d699c351eebda", "rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -564,11 +565,11 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1772624091, "lastModified": 1768127708,
"narHash": "sha256-QKyJ0QGWBn6r0invrMAK8dmJoBYWoOWy7lN+UHzW1jc=", "narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "80bdc1e5ce51f56b19791b52b2901187931f5353", "rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -580,32 +581,32 @@
}, },
"nixpkgs_5": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1772465433, "lastModified": 1754028485,
"narHash": "sha256-ywy9troNEfpgh0Ee+zaV1UTgU8kYBVKtvPSxh6clYGU=", "narHash": "sha256-IiiXB3BDTi6UqzAZcf2S797hWEPCRZOwyNThJIYhUfk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c581273b8d5bdf1c6ce7e0a54da9841e6a763913", "rev": "59e69648d345d6e8fef86158c555730fa12af9de",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-25.11", "ref": "nixos-25.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"nixpkgs_6": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1773700673, "lastModified": 1768178648,
"narHash": "sha256-RLidgpn3mN3cVkIiiYehcmM2ImBnPudwISFLy71zN0o=", "narHash": "sha256-kz/F6mhESPvU1diB7tOM3nLcBfQe7GU7GQCymRlTi/s=",
"owner": "msyds", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "2595b5f0592534492bce3cb61c2c9bf5ba03ffbe", "rev": "3fbab70c6e69c87ea2b6e48aa6629da2aa6a23b0",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "msyds", "owner": "NixOS",
"ref": "fix-bepasty", "ref": "nixpkgs-unstable",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@@ -628,11 +629,11 @@
}, },
"nixpkgs_8": { "nixpkgs_8": {
"locked": { "locked": {
"lastModified": 1767767207, "lastModified": 1762977756,
"narHash": "sha256-Mj3d3PfwltLmukFal5i3fFt27L6NiKXdBezC1EBuZs4=", "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5912c1772a44e31bf1c63c0390b90501e5026886", "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -692,11 +693,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1767810917, "lastModified": 1758998580,
"narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=", "narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4", "rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -715,7 +716,6 @@
"niri": "niri", "niri": "niri",
"nixarr": "nixarr", "nixarr": "nixarr",
"nixcord": "nixcord", "nixcord": "nixcord",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_6", "nixpkgs": "nixpkgs_6",
"nur": "nur", "nur": "nur",
"sops-nix": "sops-nix", "sops-nix": "sops-nix",
@@ -763,11 +763,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1772296853, "lastModified": 1764550443,
"narHash": "sha256-pAtzPsgHRKw/2Kv8HgAjSJg450FDldHPWsP3AKG/Xj0=", "narHash": "sha256-ArO2V1YEHmEILilTj4KPtqF4gqc1q2HBrrrmygQ/UyU=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "c4b8e80a1020e09a1f081ad0f98ce804a6e85acf", "rev": "794b6e1fa75177ebfeb32967f135858a1ab1ba15",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -782,38 +782,35 @@
"nixpkgs": "nixpkgs_9" "nixpkgs": "nixpkgs_9"
}, },
"locked": { "locked": {
"lastModified": 1771615370, "lastModified": 1762339715,
"narHash": "sha256-UD/9fs1GYuwDGqrpKunrwOPrvkahLQ/6eeRy/0ejHNA=", "narHash": "sha256-rzEJjyZat0juOF133YPSJMgOSeuBlk92PTOu22W1B6w=",
"ref": "refs/heads/main", "owner": "msyds",
"rev": "41111bead687315ca1f55a826509234ca2f0e0ce", "repo": "syd-fcitx5-tables",
"revCount": 8, "rev": "2b66c43dcc524030a45ab6fdd5aab69c229dd290",
"type": "git", "type": "gitlab"
"url": "https://git.deertopia.net/msyds/syd-fcitx5-tables"
}, },
"original": { "original": {
"type": "git", "owner": "msyds",
"url": "https://git.deertopia.net/msyds/syd-fcitx5-tables" "repo": "syd-fcitx5-tables",
"type": "gitlab"
} }
}, },
"sydpkgs": { "sydpkgs": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": "nixpkgs_10"
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1773275674, "lastModified": 1767975357,
"narHash": "sha256-kULSjFWDoDatz31aIses5q51ESUi0ASUc3MKmBYLnRY=", "narHash": "sha256-MDVh3/aVhkD1bh/r8c0gs9DL4e78CrUbUxOZHWlCwLM=",
"ref": "fcitx5-toki-pona", "owner": "msyds",
"rev": "03f6a67a0a3b3c00ff4566147eddb0123cfe3d14", "repo": "sydpkgs",
"revCount": 38, "rev": "233479ab277d47b1dbda202eafca50e61c659151",
"type": "git", "type": "github"
"url": "https://git.deertopia.net/msyds/sydpkgs"
}, },
"original": { "original": {
"ref": "fcitx5-toki-pona", "owner": "msyds",
"type": "git", "repo": "sydpkgs",
"url": "https://git.deertopia.net/msyds/sydpkgs" "type": "github"
} }
}, },
"systems": { "systems": {
@@ -864,7 +861,7 @@
"tf2-nix": { "tf2-nix": {
"inputs": { "inputs": {
"flake-utils": "flake-utils_3", "flake-utils": "flake-utils_3",
"nixpkgs": "nixpkgs_10" "nixpkgs": "nixpkgs_11"
}, },
"locked": { "locked": {
"lastModified": 1761467191, "lastModified": 1761467191,
@@ -916,11 +913,11 @@
"tinted-schemes": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1767710407, "lastModified": 1757716333,
"narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=", "narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "schemes", "repo": "schemes",
"rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2", "rev": "317a5e10c35825a6c905d912e480dfe8e71c7559",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -932,11 +929,11 @@
"tinted-tmux": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1767489635, "lastModified": 1757811970,
"narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=", "narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "tinted-tmux", "repo": "tinted-tmux",
"rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184", "rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -948,11 +945,11 @@
"tinted-zed": { "tinted-zed": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1767488740, "lastModified": 1757811247,
"narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=", "narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-zed", "repo": "base16-zed",
"rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40", "rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -1038,11 +1035,11 @@
"xwayland-satellite-unstable": { "xwayland-satellite-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1772429643, "lastModified": 1768106915,
"narHash": "sha256-M+bAeCCcjBnVk6w/4dIVvXvpJwOKnXjwi/lDbaN6Yws=", "narHash": "sha256-HlLo9zH4ULRXlmlIK948cHmdVhxyHgTHxGaoCRlW4k8=",
"owner": "Supreeeme", "owner": "Supreeeme",
"repo": "xwayland-satellite", "repo": "xwayland-satellite",
"rev": "10f985b84cdbcc3bbf35b3e7e43d1b2a84fa9ce2", "rev": "72245e108f3b03c3c4474d2de9de2d1830849603",
"type": "github" "type": "github"
}, },
"original": { "original": {
+3 -10
View File
@@ -3,9 +3,7 @@
inputs = { inputs = {
disko.url = "github:nix-community/disko"; 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"; impermanence.url = "github:nix-community/impermanence";
home-manager.url = "github:nix-community/home-manager"; home-manager.url = "github:nix-community/home-manager";
sops-nix.url = "github:Mic92/sops-nix"; sops-nix.url = "github:Mic92/sops-nix";
@@ -23,19 +21,14 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.vpnconfinement.follows = "vpn-confinement"; inputs.vpnconfinement.follows = "vpn-confinement";
}; };
nixos-hardware.url = "github:NixOS/nixos-hardware";
# Used for Firefox extensions/addons. # Used for Firefox extensions/addons.
nur = { nur = {
url = "github:nix-community/NUR"; url = "github:nix-community/NUR";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
tf2-nix.url = "gitlab:msyds/tf2-nix"; tf2-nix.url = "gitlab:msyds/tf2-nix";
syd-fcitx5-tables.url = syd-fcitx5-tables.url = "gitlab:msyds/syd-fcitx5-tables";
"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: outputs = { self, nixpkgs, ... }@inputs:
+1 -2
View File
@@ -58,7 +58,7 @@
lldap.pam.enable = true; lldap.pam.enable = true;
nginx.enable = true; nginx.enable = true;
slskd.enable = true; slskd.enable = true;
# webdav.enable = true; webdav.enable = true;
copyparty.enable = true; copyparty.enable = true;
syncthing.enable = true; syncthing.enable = true;
cache.enable = true; cache.enable = true;
@@ -66,7 +66,6 @@
# umurmur.enable = true; # umurmur.enable = true;
murmur.enable = true; murmur.enable = true;
anki-sync-server.enable = true; anki-sync-server.enable = true;
vaultwarden.enable = true;
servarr = { servarr = {
enable = true; enable = true;
prowlarr.enable = true; prowlarr.enable = true;
+4 -9
View File
@@ -1,30 +1,25 @@
{ config, pkgs, lib, disko, nixos-hardware, ... }: { config, pkgs, lib, disko, ... }:
{ {
imports = [ imports = [
./hardware.nix ./hardware.nix
./filesystems.nix ./filesystems.nix
nixos-hardware.nixosModules.apple-macbook-pro-12-1
]; ];
# Enabled by default by Nixos-hardware.
services.mbpfan.enable = false;
sydnix = { sydnix = {
filesystemType = "btrfs"; filesystemType = "btrfs";
wifi.enable = true; wifi.enable = true;
stylix.enable = true; stylix.enable = true;
niri.enable = true; niri.enable = true;
steam.enable = true;
bluetooth.enable = true; bluetooth.enable = true;
# blueman.enable = true; # gdm.enable = true;
openssh.enable = true; openssh.enable = true;
sydpkgs.overlay.enable = true; sydpkgs.overlay.enable = true;
dank-material-shell.enable = true; dank-material-shell.enable = true;
kdeconnect.enable = true;
upower.enable = true;
users.users = [ users.users = [
# "crumb" "crumb"
"msyds" "msyds"
]; ];
-6
View File
@@ -26,12 +26,6 @@
sydpkgs.overlay.enable = true; sydpkgs.overlay.enable = true;
dank-material-shell.enable = true; dank-material-shell.enable = true;
kdeconnect.enable = true; kdeconnect.enable = true;
gitea-actions-runner.enable = true;
sops = {
enable = true;
keyFile = "/persist/private-keys/age/deertopia";
};
steam = { steam = {
enable = true; enable = true;
-16
View File
@@ -1,16 +0,0 @@
{ 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;
};
}
-16
View File
@@ -1,16 +0,0 @@
{ 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[@]}"
'';
};
}
+43 -28
View File
@@ -13,36 +13,51 @@ in {
}; };
}; };
imports = [ config = lib.mkIf cfg.enable
./discord/jellyfin-rpc.nix (let
]; # Fixes flickering and platform detection on Wayland.
vesktop-wayland-wrapper =
config = lib.mkIf cfg.enable { pkgs.symlinkJoin {
sydnix.impermanence.directories = name = "vesktop-wayland-wrapper";
let xdg-config-home = paths = [ pkgs.callPackage pkgs.vesktop ];
config.home.confighome 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"; or "${config.home.homeDirectory}/.config";
in [ in [
# This directory should really be written in terms of # This directory should really be written in terms of
# `config.programs.nixcord.vesktopConfigDir`, but it # `config.programs.nixcord.vesktopConfigDir`, but it defaults to null
# defaults to null for unknown reasons. This is in conflict # for unknown reasons. This is in conflict with the docs, which claim
# with the docs, which claim it should be the path used # it should be the path used here.
# here. (lib.removePrefix
(lib.removePrefix config.home.homeDirectory
config.home.homeDirectory "${xdg-config-home}/vesktop")
"${xdg-config-home}/vesktop") ];
];
programs.nixcord = { programs.nixcord = {
enable = true;
discord = {
enable = false;
vencord.enable = false;
vencord.package = pkgs.vencord;
};
vesktop = {
enable = true; 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;
};
}; };
}; });
};
} }
-95
View File
@@ -1,95 +0,0 @@
{ 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.";
}];
};
}
-16
View File
@@ -1,16 +0,0 @@
{ 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"
];
};
}
-7
View File
@@ -128,13 +128,6 @@ in {
version = cfg.package.version; version = cfg.package.version;
}; };
in { in {
xdg.mimeApps = {
enable = true;
defaultApplicationPackages = [
sydmacs
];
};
# Set emacsclient as the default editor for the time being. # Set emacsclient as the default editor for the time being.
home.sessionVariables = { home.sessionVariables = {
-4
View File
@@ -7,10 +7,6 @@ in {
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
sydnix.impermanence.directories = [
".config/kdeconnect"
];
services.kdeconnect = { services.kdeconnect = {
enable = true; enable = true;
indicator = true; indicator = true;
-18
View File
@@ -1,18 +0,0 @@
{ 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"
];
};
}
-33
View File
@@ -1,33 +0,0 @@
{ 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
];
};
}
-22
View File
@@ -1,22 +0,0 @@
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 󱤂
+34
View File
@@ -0,0 +1,34 @@
{ 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 ../../..";
};
};
}
@@ -1,16 +1,15 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let cfg = config.sydnix.users.msyds.discord; let cfg = config.sydnix.users.crumb.discord;
in { in {
options.sydnix.users.msyds.discord = { options.sydnix.users.crumb.discord = {
enable = lib.mkEnableOption "Discord"; enable = lib.mkEnableOption "Discord";
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
sydnix.discord.enable = true; sydnix.discord.enable = true;
sydnix.discord.jellyfin-rpc.enable = true;
stylix.targets.nixcord.enable = false; stylix.targets.nixcord.enable = true;
programs.nixcord = { programs.nixcord = {
quickCss = '' quickCss = ''
@@ -30,11 +29,6 @@ in {
]; ];
plugins = { plugins = {
ircColors.enable = true; ircColors.enable = true;
voiceMessages = {
enable = true;
echoCancellation = false;
noiseSuppression = false;
};
}; };
}; };
vesktop = { vesktop = {
@@ -71,11 +71,9 @@ the unwritable tidbits."
(setq-local register-alist (setq-local register-alist
(cl-remove-if-not #'savehist-printable register-alist))))) (cl-remove-if-not #'savehist-printable register-alist)))))
;; Stay out of my config dir! (with-eval-after-load 'bookmark
(setq bookmark-default-file ;; Stay out of my config dir!
(file-name-concat syd-data-dir "bookmarks") (setq bookmark-default-file (file-name-concat syd-data-dir "bookmarks")))
transient-history-file
(file-name-concat syd-data-dir "transient/history.el"))
(provide 'syd-autosave) (provide 'syd-autosave)
+2 -2
View File
@@ -26,8 +26,8 @@ in {
}; };
globalOptions = { globalOptions = {
# Disable shift to toggle. I accidentally press it all # Disable shift to toggle. I accidentally press it all the time.
# the time. 날 미치게 만들어요. # 날 미치게 만들어요.
Hotkey.AltTriggerKeys = ""; Hotkey.AltTriggerKeys = "";
}; };
-36
View File
@@ -1,36 +0,0 @@
{ 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 ../../..";
};
};
}
@@ -1,11 +1,6 @@
{ config, lib, pkgs, host, ... }: { config, lib, pkgs, ... }:
let let cfg = config.sydnix.users.msyds.dank-material-shell;
cfg = config.sydnix.users.msyds.dank-material-shell;
on = hosts:
if builtins.isString hosts
then hosts == host
else builtins.elem host hosts;
in { in {
options.sydnix.users.msyds.dank-material-shell = { options.sydnix.users.msyds.dank-material-shell = {
enable = lib.mkEnableOption "Dank Material Shell"; enable = lib.mkEnableOption "Dank Material Shell";
@@ -172,7 +167,7 @@ in {
showControlCenterButton = true; showControlCenterButton = true;
showCapsLockIndicator = true; showCapsLockIndicator = true;
controlCenterShowNetworkIcon = true; controlCenterShowNetworkIcon = true;
controlCenterShowBluetoothIcon = on ["fruitbook"]; controlCenterShowBluetoothIcon = true;
controlCenterShowAudioIcon = true; controlCenterShowAudioIcon = true;
controlCenterShowVpnIcon = true; controlCenterShowVpnIcon = true;
controlCenterShowBrightnessIcon = false; controlCenterShowBrightnessIcon = false;
@@ -291,9 +286,9 @@ in {
batterySuspendTimeout = 0; batterySuspendTimeout = 0;
batterySuspendBehavior = 0; batterySuspendBehavior = 0;
batteryProfileName = ""; batteryProfileName = "";
lockBeforeSuspend = true; lockBeforeSuspend = false;
loginctlLockIntegration = true; loginctlLockIntegration = true;
fadeToLockEnabled = true; fadeToLockEnabled = false;
fadeToLockGracePeriod = 5; fadeToLockGracePeriod = 5;
launchPrefix = ""; launchPrefix = "";
brightnessDevicePins = {}; brightnessDevicePins = {};
-11
View File
@@ -31,17 +31,6 @@ in {
treesit.enable = true; 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 = { sydnix.emacs = {
enable = true; enable = true;
defaultEditor = true; defaultEditor = true;
+5 -5
View File
@@ -3,9 +3,9 @@
;;; nevertheless, you probably don't want to edit it. ;;; nevertheless, you probably don't want to edit it.
;;; -*- End Of Bookmark File Format Version Stamp -*- ;;; -*- End Of Bookmark File Format Version Stamp -*-
(("org-capture-last-stored" (("org-capture-last-stored"
(filename . "~/org/daily/2026-03-26.org") (filename . "~/org/20260207174607-discontinuity_linguistics.org")
(front-context-string . "* The significan") (front-context-string . "\nIn [[id:f140be8")
(rear-context-string . "le: 2026-03-26\n\n") (rear-context-string . "y (linguistics)\n")
(position . 89) (position . 105)
(last-modified 27077 32462 617656 528000)) (last-modified 27015 56580 955383 229000))
) )
+44 -6
View File
@@ -3,7 +3,6 @@
(syd-require-features (syd-require-features
'(syd/base '(syd/base
syd/constants syd/constants
syd/fcitx
syd/dash syd/dash
syd/disable-package syd/disable-package
syd/straight syd/straight
@@ -50,7 +49,6 @@
syd/direnv syd/direnv
syd/ligature syd/ligature
syd/clojure syd/clojure
syd/auctex
syd/lisp syd/lisp
syd/minibuffer syd/minibuffer
syd/auto-save syd/auto-save
@@ -64,7 +62,47 @@
syd/agda syd/agda
syd/eshell syd/eshell
syd/treesit syd/treesit
syd/grammatical-framework syd/grammatical-framework))
syd/tabs (custom-set-variables
syd/lsp ;; custom-set-variables was added by Custom.
syd/custom)) ;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(org-latex-preview-mode-display-live t nil nil "Customized with use-package org-latex-preview")
'(org-latex-preview-mode-update-delay 0.25 nil nil "Customized with use-package org-latex-preview")
'(safe-local-variable-directories
'("/home/msyds/src/deertopia.net/"
"/home/msyds/src/net-deertopia/publisher/"
"/home/msyds/src/net-deertopia/"))
'(safe-local-variable-values '((jinx-languages . "en_GB en_US"))))
(custom-set-faces
;; custom-set-faces was added by Custom.
;; If you edit it by hand, you could mess it up, so be careful.
;; Your init file should contain only one such instance.
;; If there is more than one, they won't work right.
'(comint-highlight-prompt ((t :foreground "#C8C093" :background unspecified :weight bold)))
'(form-feed-st-line ((t :strike-through "#727169")))
'(org-block ((t (:inherit fixed-pitch :background "#1a1a22"))))
'(org-block-begin-line ((t (:foreground unspecified :inherit font-lock-comment-face :extend t :background "#16161D" :height 0.75))))
'(org-block-end-line ((t (:foreground unspecified :inherit font-lock-comment-face :extend t :background "#16161D" :height 0.75))))
'(org-checkbox ((t (:inherit fixed-pitch))))
'(org-code ((t (:inherit (shadow fixed-pitch)))))
'(org-document-info ((t (:weight bold :height 1.0))))
'(org-document-info-keyword ((t (:background unspecified :foreground unspecified :inherit (fixed-pitch font-lock-comment-face) :height 0.9))))
'(org-document-title ((t (:weight bold :height 1.6))))
'(org-drawer ((t (:foreground unspecified :inherit font-lock-comment-face :extend t :background "#16161D" :height 0.75))))
'(org-ellipsis ((t (:height 1.0))))
'(org-indent ((t (:inherit (org-hide syd-alt-fixed-pitch)))))
'(org-level-1 ((t (:weight bold :height 1.4 :foreground "#957FB8"))))
'(org-level-2 ((t (:weight bold :height 1.35 :foreground "#7E9CD8"))))
'(org-level-3 ((t (:weight bold :height 1.3 :foreground "#9CABCA"))))
'(org-level-4 ((t (:weight bold :height 1.25 :foreground "#A3D4D5"))))
'(org-level-5 ((t (:weight bold :height 1.2 :foreground "#7AA89F"))))
'(org-level-6 ((t (:weight bold :height 1.15 :foreground "#98BB6C"))))
'(org-level-7 ((t (:weight bold :height 1.1 :foreground "#938056"))))
'(org-level-8 ((t (:weight bold :height 1.05 :foreground "#C0A36E"))))
'(org-meta-line ((t (:background unspecified :foreground unspecified :inherit (fixed-pitch font-lock-comment-face) :height 0.9))))
'(org-property-value ((t (:inherit fixed-pitch))))
'(org-quote ((t (:inherit (variable-pitch org-block)))))
'(org-special-keyword ((t (:inherit (font-lock-comment-face fixed-pitch)))))
'(org-table ((t (:inherit fixed-pitch)))))
@@ -1,11 +0,0 @@
;;; -*- 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)
@@ -1,7 +1,6 @@
;;; -*- lexical-binding: t; -*- ;;; -*- lexical-binding: t; -*-
(require 'syd/base) (require 'syd/base)
(require 'syd/handle)
(require 'syd/popups) (require 'syd/popups)
(require 'syd/leader) (require 'syd/leader)
@@ -27,8 +26,7 @@
cider-doc-buffer) cider-doc-buffer)
(defun syd-clojure-eval-region (beg end) (defun syd-clojure-eval-region (beg end)
(cider-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 :docs #'cider-doc
:eval-region #'syd-clojure-eval-region :eval-region #'syd-clojure-eval-region
:load-buffer #'cider-load-buffer) :load-buffer #'cider-load-buffer)
@@ -110,13 +108,4 @@
s) s)
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) (provide 'syd/clojure)
@@ -1,7 +1,4 @@
;; -*- lexical-binding: t -*- ;;; -*- lexical-binding: t -*-
(require 'syd/base)
(require 'syd/popups)
(setq (setq
;; Log native-compiler warnings, but don't display the buffer. Most of the ;; Log native-compiler warnings, but don't display the buffer. Most of the
@@ -11,7 +8,4 @@
;; Scroll compilation buffer to follow output. ;; Scroll compilation buffer to follow output.
compilation-scroll-output t) compilation-scroll-output t)
(syd-push shackle-rules
'("*compilation*" :select nil :size 0.42 :popup t :align bottom))
(provide 'syd/compilation) (provide 'syd/compilation)
@@ -1,8 +0,0 @@
;;; -*- lexical-binding: t -*-
(require 'syd/base)
;; Stay out of version-control!!!!!
(setq custom-file (file-name-concat syd-data-dir "custom.el"))
(provide 'syd/custom)
@@ -150,9 +150,7 @@ if FILE-NAME has no TRAMP prefix."
(eshell-last-dir-ring-file-name (file-name-concat (eshell-last-dir-ring-file-name (file-name-concat
syd-eshell-data-dir "lastdir")) syd-eshell-data-dir "lastdir"))
(eshell-prompt-function #'syd-eshell--prompt-fn) (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 :general
(:keymaps 'syd-leader-open-map (:keymaps 'syd-leader-open-map
"e" #'syd-toggle-eshell) "e" #'syd-toggle-eshell)
@@ -1,10 +0,0 @@
;;; -*- lexical-binding: t; -*-
(require 'syd/base)
(use-package fcitx
:custom ((fcitx-remote-command "fcitx5-remote"))
:config
(fcitx-aggressive-setup))
(provide 'syd/fcitx)
@@ -12,21 +12,15 @@
(font-spec :family "JuliaMono" :size 16) (font-spec :family "JuliaMono" :size 16)
"A monospace font secondary to `syd-fixed-pitch-font'.") "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 () (defun syd-init-fonts-h ()
"Loads `syd-fixed-pitch-font' and `syd-variable-pitch-font'." "Loads `syd-fixed-pitch-font' and `syd-variable-pitch-font'."
(dolist (map `((default . ,syd-fixed-pitch-font) (dolist (map `((default . ,syd-fixed-pitch-font)
(fixed-pitch . ,syd-fixed-pitch-font) (fixed-pitch . ,syd-fixed-pitch-font)
(variable-pitch . ,syd-variable-pitch-font))) (variable-pitch . ,syd-variable-pitch-font)))
(pcase-let ((`(,face . ,font) map)) (pcase-let ((`(,face . ,font) map))
(set-face-attribute face nil (set-face-attribute face nil
:width 'normal :weight 'normal :width 'normal :weight 'normal
:slant 'normal :font font))) :slant 'normal :font font))))
(set-fontset-font
t '(#xF1900 . #xF19FF)
syd-sitelen-pona-font))
(let ((hook-point (if (daemonp) (let ((hook-point (if (daemonp)
'server-after-make-frame-hook 'server-after-make-frame-hook
@@ -5,28 +5,22 @@
(use-package ligature (use-package ligature
:config :config
(ligature-set-ligatures 'prog-mode (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)) (global-ligature-mode 1))
(provide 'syd/ligature) (provide 'syd/ligature)
@@ -1,9 +0,0 @@
;; -*- lexical-binding: t; -*-
(require 'syd/base)
(use-package markdown-mode
:config
(add-hook 'markdown-mode-hook #'syd-prose-mode))
(provide 'syd/markdown)
@@ -77,11 +77,7 @@
:target (file ,default-target-file-name)) :target (file ,default-target-file-name))
("K" "Today's Korean" plain ("K" "Today's Korean" plain
(file ,(syd-emacs-file "lisp/syd/org/roam/todays-korean.org")) (file ,(syd-emacs-file "lisp/syd/org/roam/todays-korean.org"))
:target (file "todays-korean/%<%Y-%m-%d>.org")) :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)))))
(org-roam-link-auto-replace nil))
:config :config
(add-to-list 'org-agenda-files org-roam-directory) (add-to-list 'org-agenda-files org-roam-directory)
(with-eval-after-load 'org-roam-dailies (with-eval-after-load 'org-roam-dailies
@@ -1,12 +0,0 @@
:PROPERTIES:
:ROAM_ALIASES: "%^{Irregular ending: } 불규칙"
:END:
#+title: %\1-irregularity
In [[id:e4ae4140-b842-4f16-b4da-9306eb3c2c1a][Korean morphology]], a *%\1-irregular verb* (ko: *%\1 불규칙 동사*) is a type of [[id:764f5ddf-472a-4142-9f76-cfb19f462be4][irregular verb]] whose stem ends in %\1.
* Inflection
* Examples
** Non-examples
@@ -1,7 +0,0 @@
;;; -*- lexical-binding: t -*-
(require 'syd/base)
;; Disable tabs by default.
(setq-default indent-tabs-mode nil)
(provide 'syd/tabs)
-20
View File
@@ -1,20 +0,0 @@
{ 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
View File
@@ -1,12 +0,0 @@
{ 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;
};
}
+2
View File
@@ -7,6 +7,8 @@ in {
}; };
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
services.blueman.enable = true;
hardware.bluetooth = { hardware.bluetooth = {
enable = true; enable = true;
powerOnBoot = true; powerOnBoot = true;
+4 -2
View File
@@ -1,10 +1,12 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib;
let cfg = config.sydnix.deertopia.bepasty; let cfg = config.sydnix.deertopia.bepasty;
in { in {
options = { options = {
sydnix.deertopia.bepasty = { sydnix.deertopia.bepasty = {
enable = lib.mkEnableOption "Bepasty"; enable = mkEnableOption "Bepasty";
port = lib.mkOption { port = lib.mkOption {
default = 22018; default = 22018;
@@ -17,7 +19,7 @@ in {
}; };
}; };
config = lib.mkIf cfg.enable { config = mkIf cfg.enable {
sydnix.sops.secrets.bepasty-secret-key = {}; sydnix.sops.secrets.bepasty-secret-key = {};
sydnix.sops.secrets.bepasty-secret-config = {}; sydnix.sops.secrets.bepasty-secret-config = {};
+4 -8
View File
@@ -13,14 +13,10 @@ in {
}; };
}; };
imports = [ imports = [ ./copyparty/vault.nix ];
./copyparty/vault.nix
./copyparty/webdav.nix
];
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
sydnix.deertopia.copyparty.vault.enable = true; sydnix.deertopia.copyparty.vault.enable = true;
sydnix.deertopia.copyparty.webdav.enable = true;
sydnix.impermanence.directories = [ sydnix.impermanence.directories = [
"/var/lib/copyparty" "/var/lib/copyparty"
@@ -33,8 +29,8 @@ in {
"media" "media"
]; ];
# HACK: Make files created by copyparty.service initialise with # HACK: Make files created by copyparty.service initialise with the mode
# the mode 775. # 775.
systemd.services.copyparty.serviceConfig.UMask = lib.mkForce "002"; systemd.services.copyparty.serviceConfig.UMask = lib.mkForce "002";
services.copyparty = { services.copyparty = {
@@ -60,7 +56,7 @@ in {
"/Media library" = { "/Media library" = {
path = "/media/library"; path = "/media/library";
# View and upload, but no deleting. # View and upload, but no deleting.
access.r = "*"; access.rw = "*";
access.rwmd = "@jellyfin-admin"; access.rwmd = "@jellyfin-admin";
}; };
"/Torrents" = { "/Torrents" = {
@@ -36,12 +36,6 @@ in {
access.A = [ "msyds" ]; access.A = [ "msyds" ];
access.rwmd = [ "zotero" ]; access.rwmd = [ "zotero" ];
}; };
"/msyds/zotero-root" = {
path = "/vault/msyds/zotero-root";
flags.daw = true;
access.A = [ "msyds" ];
access.rwmd = [ "zotero" ];
};
"/~msyds/public" = { "/~msyds/public" = {
path = "/vault/~msyds/public"; path = "/vault/~msyds/public";
access.A = [ "msyds" ]; access.A = [ "msyds" ];
@@ -1,57 +0,0 @@
{ 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};
'';
};
};
};
}
+1 -52
View File
@@ -1,8 +1,6 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
let let cfg = config.sydnix.deertopia.gitea;
cfg = config.sydnix.deertopia.gitea;
commas = lib.concatStringsSep ",";
in { in {
options.sydnix.deertopia.gitea = { options.sydnix.deertopia.gitea = {
enable = lib.mkEnableOption "Gitea"; enable = lib.mkEnableOption "Gitea";
@@ -42,18 +40,10 @@ 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 # 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 = { services.gitea = {
enable = true; enable = true;
user = "git"; user = "git";
group = "git"; group = "git";
appName = "GupHub"; # Name per my dear Astrid ♥!!!!!
mailerPasswordFile = config.sops.secrets.gitea-mailer-password.path;
settings = { settings = {
server = { server = {
ROOT_URL = "https://git.deertopia.net/"; ROOT_URL = "https://git.deertopia.net/";
@@ -62,48 +52,7 @@ in {
}; };
service = { service = {
DISABLE_REGISTRATION = true; 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";
};
}; };
}; };
}; };
-1
View File
@@ -62,7 +62,6 @@ in {
ldap_base_dn = cfg.baseDN; ldap_base_dn = cfg.baseDN;
ldap_user_dn = "lain"; ldap_user_dn = "lain";
ldap_user_email = "lain@deertopia.net"; ldap_user_email = "lain@deertopia.net";
force_ldap_user_pass_reset = "always";
ldaps_options = { ldaps_options = {
enabled = true; enabled = true;
port = 6360; port = 6360;
-45
View File
@@ -1,45 +0,0 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.deertopia.vaultwarden;
in {
options.sydnix.deertopia.vaultwarden = {
enable = lib.mkEnableOption "Vaultwarden";
};
config = lib.mkIf cfg.enable {
services.vaultwarden = {
enable = true;
config = {
ROCKET_ADDRESS = "127.0.0.1";
ROCKET_PORT = 8222;
DOMAIN = "https://vault.deertopia.net";
};
};
sydnix.impermanence.directories = [
"/var/backup/vaultwarden"
];
services.nginx.upstreams.vaultwarden.servers =
let port = toString config.services.vaultwarden.config.ROCKET_PORT;
in {
"127.0.0.1:${port}" = { };
};
sydnix.deertopia.nginx.vhosts."vault".vhost = {
forceSSL = true;
enableACME = true;
locations = {
"/".proxyPass = "http://vaultwarden";
"= /notifications/anonymous-hub" = {
proxyPass = "http://vaultwarden";
proxyWebsockets = true;
};
"= /notifications/hub" = {
proxyPass = "http://vaultwarden";
proxyWebsockets = true;
};
};
};
};
}
-149
View File
@@ -1,149 +0,0 @@
# Stolen from https://git.neet.dev/zuckerberg/nix-config/src/branch/master/common/server/gitea-actions-runner.nix
{ config, lib, pkgs, ... }:
let
cfg = config.sydnix.gitea-actions-runner;
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 {
sydnix.sops.secrets.gitea-actions-runner-token = {};
sydnix.impermanence.directories = [ "/var/lib/gitea-actions-runner" ];
containers."gitea-actions-runner" = {
autoStart = true;
ephemeral = true;
bindMounts = {
${token-file} = {
hostPath = token-file;
isReadOnly = true;
};
"/var/lib/gitea-actions-runner" = {
hostPath = "/var/lib/gitea-actions-runner";
isReadOnly = false;
};
};
config = { config, lib, pkgs, ... }: {
system.stateVersion = "25.11";
services.gitea-actions-runner.instances.${cfg.instance-name} = {
enable = true;
name = cfg.instance-name;
url = "https://git.deertopia.net/";
tokenFile = token-file;
labels = [ "nixos:host" ];
hostPackages = with pkgs; [
bash
coreutils
curl
gawk
gitMinimal
gnused
nodejs
wget
nix
];
};
# Disable dynamic user so runner state persists via bind mount
assertions = [{
assertion =
config.systemd.services.gitea-actions-runner-sydpc.enable;
message = ''
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.${cfg.user.name} = {
uid = cfg.user.uid;
home = "/var/lib/gitea-actions-runner";
group = cfg.group.name;
isSystemUser = true;
createHome = true;
};
users.groups.gitea-actions-runner.gid = cfg.group.gid;
nix.settings.experimental-features = [ "nix-command" "flakes" ];
environment.systemPackages = with pkgs; [
git
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 = [
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.${cfg.user.name} = {
uid = cfg.user.uid;
home = "/var/lib/gitea-actions-runner";
group = cfg.group.name;
isSystemUser = true;
createHome = true;
};
users.groups.${cfg.group.name}.gid = cfg.group.gid;
};
}
+1 -1
View File
@@ -29,7 +29,7 @@ in {
mkdir -p /btrfs-tmp mkdir -p /btrfs-tmp
mount -t btrfs "${cfg.device}" /btrfs-tmp mount -t btrfs "${cfg.device}" /btrfs-tmp
# If the moribund subvolume exists, send it do 'death row' (old-roots), # If the moribound subvolume exists, send it do 'death row' (old-roots),
# where live for about three days before its eventual deletion. # where live for about three days before its eventual deletion.
if [[ -e "/btrfs-tmp/${cfg.subvolume}" ]]; then if [[ -e "/btrfs-tmp/${cfg.subvolume}" ]]; then
mkdir -p /btrfs-tmp/old-roots mkdir -p /btrfs-tmp/old-roots
-12
View File
@@ -1,12 +0,0 @@
{ 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;
};
}
-1
View File
@@ -59,7 +59,6 @@ let
pkgs = nixpkgs; pkgs = nixpkgs;
}; };
inherit inputs system; inherit inputs system;
host = hostName;
}; };
}) })
]; ];
+3 -5
View File
@@ -29,8 +29,6 @@ webdav-htpasswd: ENC[AES256_GCM,data:vHm47SS3ksHeoU5U1pSQxffb3pGpVxIc9ZtMUNw0igg
anki-username: ENC[AES256_GCM,data:584uxjwyodM=,iv:/6HLSLzHgc77U1iN5JDLR9F+o8Nfe+cYGE+F8sQCW7g=,tag:yHVdfhRN6OpHDwpk4Ju6zA==,type:str] anki-username: ENC[AES256_GCM,data:584uxjwyodM=,iv:/6HLSLzHgc77U1iN5JDLR9F+o8Nfe+cYGE+F8sQCW7g=,tag:yHVdfhRN6OpHDwpk4Ju6zA==,type:str]
anki-password: ENC[AES256_GCM,data:plSKMTeeilKt6weAnzw/jMo65A==,iv:lzuPUt1+2Iwi9sHbaFj0OuBLd1p+Do2N5aCYXd45MFQ=,tag:WIABFp1T6NuIGpqqQFHmrg==,type:str] anki-password: ENC[AES256_GCM,data:plSKMTeeilKt6weAnzw/jMo65A==,iv:lzuPUt1+2Iwi9sHbaFj0OuBLd1p+Do2N5aCYXd45MFQ=,tag:WIABFp1T6NuIGpqqQFHmrg==,type:str]
anki-sync-key: ENC[AES256_GCM,data:Ka4sPghPwmWQvdXw40ZRLogoMVTBjLnaSyHT9lTfn2XWHHqFAkANAg==,iv:bFkb/k7UUL8t26LjmQwiDYJpvq93NWuqUU/jNYkr7GQ=,tag:Mx5JdqjI3MDk7hsvOlPYIw==,type:str] anki-sync-key: ENC[AES256_GCM,data:Ka4sPghPwmWQvdXw40ZRLogoMVTBjLnaSyHT9lTfn2XWHHqFAkANAg==,iv:bFkb/k7UUL8t26LjmQwiDYJpvq93NWuqUU/jNYkr7GQ=,tag:Mx5JdqjI3MDk7hsvOlPYIw==,type:str]
gitea-actions-runner-token: ENC[AES256_GCM,data:JglbJ2hgXl1wV2bCkcged+D3UrpWMMBuX+ri6YeIqwLIlscvK/wVCdsxQZtDGw==,iv:BYhgfoIa/wHQkd4c7kU8AWAJQfpTfUvSamFXDBqQXTE=,tag:sIK1XxVPIU+uBGaJY3AmTQ==,type:str]
gitea-mailer-password: ENC[AES256_GCM,data:bgFAhAzYcDhHi4Brg7x8CQ==,iv:hj8+YbcE+Jfhtu8g//Y8EiNw1CejTtMgstB/knbgOls=,tag:CYX3Pr4ErzvHGVfhpvfruw==,type:str]
sops: sops:
age: age:
- recipient: age10fqh0td67alzpyjyhdex5ncj9thvaty506r0t63vs2nz4ldafgaqadl8mg - recipient: age10fqh0td67alzpyjyhdex5ncj9thvaty506r0t63vs2nz4ldafgaqadl8mg
@@ -51,7 +49,7 @@ sops:
TXFLY2l0UHJ3Z0NGZjVpbTQ2UC8yaTQKA7wTmW9Ha6T2KmCr/nkXdizgv8+V6SAp TXFLY2l0UHJ3Z0NGZjVpbTQ2UC8yaTQKA7wTmW9Ha6T2KmCr/nkXdizgv8+V6SAp
ZhDO+uDQ1evIh2wLWMOXNJ3d/zplLCOTzR2xkqBIUp5V7MXj45RUIA== ZhDO+uDQ1evIh2wLWMOXNJ3d/zplLCOTzR2xkqBIUp5V7MXj45RUIA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2026-03-22T07:49:51Z" lastmodified: "2025-11-23T15:12:17Z"
mac: ENC[AES256_GCM,data:Y/7XSZtPlVPDV3eToYQ9MoAGF9nGq0sd0KU1VaR5duK1xbETULioQcpPvVk6HL1kPlUjnmR8RXfCKBC7EJ9P/UAMV2ySulLtD6daogCzF3qa2JSyXPuOyMuXMSjwCNcCyHgpaOrWz+7Zf9FU/1wQwVHeCDTf0sFHaX0xttFfHkg=,iv:7+zXPjeslh+z9hWhYXoUphpbg3Tpe4OHQEcUmetuiMM=,tag:LB0GuN+5TJxXyuvrrqOi7g==,type:str] mac: ENC[AES256_GCM,data:vlp56uZgxZwiA6Qri55egCNfCwsRJDlo3Vu2PfgLy5VHrI2rA5lZOiW59qKqceoGmRPZQ1XZdIuYk8DjW29G22R4x1KTgPZuJ26jK6UP2SLE1cw7Bf18pd064kE5PsjKhxKOUEuA37Ep+NsMuOtT3hmkwIIz0u4KiiQkuvmxW4U=,iv:w41pRF10xrEpt7fGyyZ9bEvA4OXL/rAaOH9rk24jm7Q=,tag:tK2VurAAwNnNXE/mgbLNyA==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.12.1 version: 3.11.0
+50 -59
View File
@@ -18,68 +18,59 @@
]; ];
}; };
homeConfiguration = { config, lib, pkgs, host, ... }: homeConfiguration = { config, lib, pkgs, ... }: {
let on = hosts: home.file.".ssh/id_ed25519".source =
if builtins.isString hosts config.lib.file.mkOutOfStoreSymlink
then hosts == host "/persist/private-keys/ssh/msyds@sydpc";
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 = home.file.".ssh/id_ed25519.pub".source =
../../public-keys/ssh/${"msyds@sydpc.pub"}; ../../public-keys/ssh/${"msyds@sydpc.pub"};
sydnix = { sydnix = {
documentation.enable = true; xdg.enable = true;
xdg.enable = true; steam.enable = true;
steam.enable = on "sydpc"; zotero.enable = true;
zotero.enable = true; openutau.enable = true;
slippi.enable = on "sydpc"; slippi.enable = true;
desktop-environment.enable = true; desktop-environment.enable = true;
clojure.enable = true; clojure.enable = true;
capitaine-cursors.enable = true; capitaine-cursors.enable = true;
terraria.enable = on "sydpc"; terraria.enable = true;
kdeconnect.enable = true; kdeconnect.enable = true;
qalculate.enable = true; qalculate.enable = true;
toki-pona.enable = true; sops = {
prism-launcher.enable = true; enable = true;
sops = { keyFile = "/persist/private-keys/age/crumb";
enable = true; };
keyFile = "/persist/private-keys/age/crumb"; # Personal configurations.
}; users.crumb = {
# Personal configurations. bash.enable = true;
users.crumb = { direnv.enable = true;
direnv.enable = true; git.enable = true;
git.enable = true; nvim.enable = true;
nvim.enable = true; readline.enable = true;
readline.enable = true; niri.enable = true;
niri.enable = true; firefox.enable = true;
firefox.enable = true; ghostty.enable = true;
ghostty.enable = true; # waybar.enable = true;
# waybar.enable = true; tf2.enable = true;
tf2.enable = true; fcitx5.enable = true;
fcitx5.enable = true; anki.enable = true;
anki.enable = true; mumble.enable = true;
mumble.enable = true; };
}; users.msyds = {
users.msyds = { hunspell.enable = true;
discord.enable = true; emacs.enable = true;
bash.enable = true; impermanence.enable = true;
hunspell.enable = true; syncthing.enable = true;
emacs.enable = true; fonts.enable = true;
impermanence.enable = true; dank-material-shell.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";
};
} }
+3 -4
View File
@@ -17,7 +17,6 @@ gitlab-oauth: ENC[AES256_GCM,data:1THznoGRZmq7BkisZoGa0ZiPG7aSmkV06SY=,iv:Gq6UPH
anki-username: ENC[AES256_GCM,data:cUWaxIc=,iv:I2wy54406Xe4tVHIhIFZqbezepc2wtp2M15T7ES9zGQ=,tag:FiU2CscHDcNv+6S5pODG7w==,type:str] 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-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] 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: sops:
age: age:
- recipient: age1qayk0d0f765v57pedm7mtau6qkmv8rh6jtaqm40g5g9armaty4jqc0v0y2 - recipient: age1qayk0d0f765v57pedm7mtau6qkmv8rh6jtaqm40g5g9armaty4jqc0v0y2
@@ -29,7 +28,7 @@ sops:
VVBqSEM2bVFBU0M5YzZBQWIwUmVXUXMKvWb57Rc+rO5M8Pf7lvbSjuZB4FrHgT3A VVBqSEM2bVFBU0M5YzZBQWIwUmVXUXMKvWb57Rc+rO5M8Pf7lvbSjuZB4FrHgT3A
uBQHH3wpv0BVVzL8tucPnwNxDnwpWvFxxwNVy/rtfs6y6HPu6fuOsA== uBQHH3wpv0BVVzL8tucPnwNxDnwpWvFxxwNVy/rtfs6y6HPu6fuOsA==
-----END AGE ENCRYPTED FILE----- -----END AGE ENCRYPTED FILE-----
lastmodified: "2026-03-06T21:55:34Z" lastmodified: "2025-11-30T00:32:08Z"
mac: ENC[AES256_GCM,data:kkEZI0Of8KUpGJRoGAD3gXCtNz44Sucki4Fk2lQ55o+IcBYtxJwwpoQH3usihSigaPquee4XAxhdlWyHt7S46Q9dTFXjT9IUpnxrlG0ZQOnTRbdRlT2qcxLSlghdDWRuezhjT5KWFqlq4Av85KmL7kiB7LAkPVk6EERHJuFsWR8=,iv:Y3wd4hP1ui3rtXe++3j1oAKYbd8V4cc0SBLOlcyl5Zc=,tag:/FK8R28WAWDhWImMnm6wQg==,type:str] mac: ENC[AES256_GCM,data:9c3xcwnGSoi/IpDHBJ922kd9Xh4EodOL/1B1epdCIB/N3Pu07wVMGSGm97e2uqczbFgebXc/Oz1Gpr9hdxNpvxlldXQgqPhZIlk6Pfelf6E0WcC5+QOE1ZQ6MTsgAE5RjFy2fctphXJi/Z9VuTcSgakSYuy+0QbPCfuwL5CaTVk=,iv:8qwCqjVALlaxJCAfZURpt7c6/3b9KKar7mtsYb3/rlw=,tag:utHZLe3FojSmyvBBIzfY2A==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.12.1 version: 3.11.0