Compare commits

...

6 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
14 changed files with 160 additions and 11 deletions

6
flake.lock generated
View File

@@ -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": {

View File

@@ -58,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

@@ -77,7 +77,9 @@ in {
};
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;
};

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

@@ -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

@@ -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)

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 @@
nil

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";
@@ -62,6 +64,38 @@ in {
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>";

View File

@@ -46,6 +46,7 @@
kdeconnect.enable = true;
qalculate.enable = true;
toki-pona.enable = true;
prism-launcher.enable = true;
sops = {
enable = true;
keyFile = "/persist/private-keys/age/crumb";