Compare commits
16 Commits
ab7d28ac0f
...
fix-zotero
| Author | SHA1 | Date | |
|---|---|---|---|
| 262f6779b1 | |||
| 9ffa14e536 | |||
| 8c41e3b8df | |||
| a9ac5ae964 | |||
| 258c3edeab | |||
| 5d5036a83c | |||
| da60eaa936 | |||
| c551e8f86e | |||
| de5b56d1b1 | |||
| cbb7f3c7a7 | |||
| d0b5b42dca | |||
| 7ea2a79aca | |||
| 182198230a | |||
| 36be01d80e | |||
| 148597d593 | |||
| 087f015340 |
6
flake.lock
generated
6
flake.lock
generated
@@ -76,11 +76,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1762095388,
|
"lastModified": 1774411715,
|
||||||
"narHash": "sha256-7Q8LtcvKWHbP8znARRTOY2tpU5WoV6FHwp5TZJOI8Us=",
|
"narHash": "sha256-mceIHtVMXpLAfr1W0VK9ceTBX5yKu4gGWpVbThWTsAA=",
|
||||||
"owner": "9001",
|
"owner": "9001",
|
||||||
"repo": "copyparty",
|
"repo": "copyparty",
|
||||||
"rev": "ac085b8149ff50e03d260128596dd130ed1c7cae",
|
"rev": "26e663d111e39ca96c63702ad27a05b6736607cf",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -16,10 +16,12 @@
|
|||||||
stylix.enable = true;
|
stylix.enable = true;
|
||||||
niri.enable = true;
|
niri.enable = true;
|
||||||
bluetooth.enable = true;
|
bluetooth.enable = true;
|
||||||
|
# blueman.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;
|
kdeconnect.enable = true;
|
||||||
|
upower.enable = true;
|
||||||
|
|
||||||
users.users = [
|
users.users = [
|
||||||
# "crumb"
|
# "crumb"
|
||||||
|
|||||||
16
modules/home/bash.nix
Normal file
16
modules/home/bash.nix
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
||||||
16
modules/home/bash/complete-alias.nix
Normal file
16
modules/home/bash/complete-alias.nix
Normal 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[@]}"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -21,9 +21,5 @@ in {
|
|||||||
"DankMaterialShell/settings.json".source =
|
"DankMaterialShell/settings.json".source =
|
||||||
json.generate "settings.json" cfg.settings;
|
json.generate "settings.json" cfg.settings;
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.niri.settings.switch-events = {
|
|
||||||
lid-close.action.spawn = ["dms" "ipc" "lock" "lock"];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -77,7 +77,9 @@ in {
|
|||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.services.jellyfin-rpc = {
|
systemd.user.services.jellyfin-rpc = {
|
||||||
|
Unit.Requires = [ "jellyfin-rpc-configure.service" ];
|
||||||
Unit.After = [ "jellyfin-rpc-configure.service" ];
|
Unit.After = [ "jellyfin-rpc-configure.service" ];
|
||||||
|
Install.WantedBy = [ "default.target" ];
|
||||||
Service.ExecStart = lib.getExe pkgs.jellyfin-rpc;
|
Service.ExecStart = lib.getExe pkgs.jellyfin-rpc;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,10 @@ 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
modules/home/prism-launcher.nix
Normal file
18
modules/home/prism-launcher.nix
Normal 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"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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 ../../..";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
36
modules/home/users/msyds/bash.nix
Normal file
36
modules/home/users/msyds/bash.nix
Normal 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 ../../..";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
@@ -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 {
|
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";
|
||||||
@@ -167,7 +172,7 @@ in {
|
|||||||
showControlCenterButton = true;
|
showControlCenterButton = true;
|
||||||
showCapsLockIndicator = true;
|
showCapsLockIndicator = true;
|
||||||
controlCenterShowNetworkIcon = true;
|
controlCenterShowNetworkIcon = true;
|
||||||
controlCenterShowBluetoothIcon = true;
|
controlCenterShowBluetoothIcon = on ["fruitbook"];
|
||||||
controlCenterShowAudioIcon = true;
|
controlCenterShowAudioIcon = true;
|
||||||
controlCenterShowVpnIcon = true;
|
controlCenterShowVpnIcon = true;
|
||||||
controlCenterShowBrightnessIcon = false;
|
controlCenterShowBrightnessIcon = false;
|
||||||
@@ -286,9 +291,9 @@ in {
|
|||||||
batterySuspendTimeout = 0;
|
batterySuspendTimeout = 0;
|
||||||
batterySuspendBehavior = 0;
|
batterySuspendBehavior = 0;
|
||||||
batteryProfileName = "";
|
batteryProfileName = "";
|
||||||
lockBeforeSuspend = false;
|
lockBeforeSuspend = true;
|
||||||
loginctlLockIntegration = true;
|
loginctlLockIntegration = true;
|
||||||
fadeToLockEnabled = false;
|
fadeToLockEnabled = true;
|
||||||
fadeToLockGracePeriod = 5;
|
fadeToLockGracePeriod = 5;
|
||||||
launchPrefix = "";
|
launchPrefix = "";
|
||||||
brightnessDevicePins = {};
|
brightnessDevicePins = {};
|
||||||
|
|||||||
@@ -31,6 +31,17 @@ 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;
|
||||||
|
|||||||
11
modules/home/users/msyds/emacs/bookmarks
Normal file
11
modules/home/users/msyds/emacs/bookmarks
Normal 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))
|
||||||
|
)
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
;;; -*- 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)
|
||||||
|
|
||||||
@@ -26,7 +27,8 @@
|
|||||||
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)
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
;;; -*- 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
|
||||||
@@ -8,4 +11,7 @@
|
|||||||
;; 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)
|
||||||
|
|||||||
@@ -150,7 +150,9 @@ 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)
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
(require 'syd/base)
|
(require 'syd/base)
|
||||||
|
|
||||||
(use-package fcitx
|
(use-package fcitx
|
||||||
:custom (fcitx-remote-command "fcitx5-remote")
|
:custom ((fcitx-remote-command "fcitx5-remote"))
|
||||||
:config
|
:config
|
||||||
(fcitx-aggressive-setup))
|
(fcitx-aggressive-setup))
|
||||||
|
|
||||||
|
|||||||
9
modules/home/users/msyds/emacs/lisp/syd/markdown.el
Normal file
9
modules/home/users/msyds/emacs/lisp/syd/markdown.el
Normal 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)
|
||||||
1
modules/home/users/msyds/emacs/transient/history.el
Normal file
1
modules/home/users/msyds/emacs/transient/history.el
Normal file
@@ -0,0 +1 @@
|
|||||||
|
nil
|
||||||
12
modules/nixos/blueman.nix
Normal file
12
modules/nixos/blueman.nix
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -7,8 +7,6 @@ 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;
|
||||||
|
|||||||
@@ -13,10 +13,14 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
imports = [ ./copyparty/vault.nix ];
|
imports = [
|
||||||
|
./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"
|
||||||
@@ -29,8 +33,8 @@ in {
|
|||||||
"media"
|
"media"
|
||||||
];
|
];
|
||||||
|
|
||||||
# HACK: Make files created by copyparty.service initialise with the mode
|
# HACK: Make files created by copyparty.service initialise with
|
||||||
# 775.
|
# the mode 775.
|
||||||
systemd.services.copyparty.serviceConfig.UMask = lib.mkForce "002";
|
systemd.services.copyparty.serviceConfig.UMask = lib.mkForce "002";
|
||||||
|
|
||||||
services.copyparty = {
|
services.copyparty = {
|
||||||
@@ -56,7 +60,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.rw = "*";
|
access.r = "*";
|
||||||
access.rwmd = "@jellyfin-admin";
|
access.rwmd = "@jellyfin-admin";
|
||||||
};
|
};
|
||||||
"/Torrents" = {
|
"/Torrents" = {
|
||||||
|
|||||||
@@ -36,6 +36,12 @@ 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" ];
|
||||||
|
|||||||
57
modules/nixos/deertopia/copyparty/webdav.nix
Normal file
57
modules/nixos/deertopia/copyparty/webdav.nix
Normal 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};
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
let cfg = config.sydnix.deertopia.gitea;
|
let
|
||||||
|
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";
|
||||||
@@ -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
|
# 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 darling Colestar ♥
|
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/";
|
||||||
@@ -53,7 +62,48 @@ 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";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
12
modules/nixos/upower.nix
Normal file
12
modules/nixos/upower.nix
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -30,6 +30,7 @@ anki-username: ENC[AES256_GCM,data:584uxjwyodM=,iv:/6HLSLzHgc77U1iN5JDLR9F+o8Nfe
|
|||||||
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-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
|
||||||
@@ -50,7 +51,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-06T21:55:10Z"
|
lastmodified: "2026-03-22T07:49:51Z"
|
||||||
mac: ENC[AES256_GCM,data:Coff3pzqPxqe1g+2R7V0AN/ZSLog6sKHIBSoWOflYH8tKbIqwvQFRVvEQN6D1o6ZhD2wu8NyTVrKY7FYn4nG9DsEQq8vknq51r1Z9meLSP114N37oX5qjp60ns9kEm3kbf41DTObXETs+jzcA4Rcl2m9Z5I/feKEm7oFp6PvzEg=,iv:Bywv84FGB6IO7M9KFoxx3cVXFElX7QNWossWszMJui8=,tag:D07pceBF1i1vUMZ7nFuslA==,type:str]
|
mac: ENC[AES256_GCM,data:Y/7XSZtPlVPDV3eToYQ9MoAGF9nGq0sd0KU1VaR5duK1xbETULioQcpPvVk6HL1kPlUjnmR8RXfCKBC7EJ9P/UAMV2ySulLtD6daogCzF3qa2JSyXPuOyMuXMSjwCNcCyHgpaOrWz+7Zf9FU/1wQwVHeCDTf0sFHaX0xttFfHkg=,iv:7+zXPjeslh+z9hWhYXoUphpbg3Tpe4OHQEcUmetuiMM=,tag:LB0GuN+5TJxXyuvrrqOi7g==,type:str]
|
||||||
unencrypted_suffix: _unencrypted
|
unencrypted_suffix: _unencrypted
|
||||||
version: 3.12.1
|
version: 3.12.1
|
||||||
|
|||||||
@@ -46,13 +46,13 @@
|
|||||||
kdeconnect.enable = true;
|
kdeconnect.enable = true;
|
||||||
qalculate.enable = true;
|
qalculate.enable = true;
|
||||||
toki-pona.enable = true;
|
toki-pona.enable = true;
|
||||||
|
prism-launcher.enable = true;
|
||||||
sops = {
|
sops = {
|
||||||
enable = true;
|
enable = true;
|
||||||
keyFile = "/persist/private-keys/age/crumb";
|
keyFile = "/persist/private-keys/age/crumb";
|
||||||
};
|
};
|
||||||
# Personal configurations.
|
# Personal configurations.
|
||||||
users.crumb = {
|
users.crumb = {
|
||||||
bash.enable = true;
|
|
||||||
direnv.enable = true;
|
direnv.enable = true;
|
||||||
git.enable = true;
|
git.enable = true;
|
||||||
nvim.enable = true;
|
nvim.enable = true;
|
||||||
@@ -68,6 +68,7 @@
|
|||||||
};
|
};
|
||||||
users.msyds = {
|
users.msyds = {
|
||||||
discord.enable = true;
|
discord.enable = true;
|
||||||
|
bash.enable = true;
|
||||||
hunspell.enable = true;
|
hunspell.enable = true;
|
||||||
emacs.enable = true;
|
emacs.enable = true;
|
||||||
impermanence.enable = true;
|
impermanence.enable = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user