Compare commits

...

23 Commits

Author SHA1 Message Date
9979cf0497 chore(msyds): enable zathura
All checks were successful
build / build (push) Successful in 3m46s
2026-04-11 10:29:24 -06:00
b7bb888e98 feat(zathura): init module 2026-04-11 10:25:49 -06:00
8bd1250ab4 fix(emacs): prevent garbage from entering vc 2026-04-11 10:25:16 -06:00
b4a26e1713 feat(tf2): enable IPC stuff 2026-04-11 10:18:56 -06:00
3c1b5191da feat(emacs): command to import systemd env 2026-04-11 10:16:35 -06:00
ed18e5f850 fix(clojure): persist gitlibs 2026-04-10 16:47:32 -06:00
a9f95a1675 feat(emacs): 파일 이름을 넣음
All checks were successful
build / build (push) Successful in 2m53s
2026-04-02 08:59:03 -06:00
ecfb399127 refactor(niri,xwayland-satellite): split out xwayland-satellite
All checks were successful
build / build (push) Successful in 6s
해결 #5
2026-03-31 14:45:56 -06:00
bf834370e5 chore(sydpc): qemu은 끔
All checks were successful
build / build (push) Successful in 1m40s
2026-03-31 14:42:46 -06:00
5dc4d57d7e fix(emacs): coerce makeWrapper args
All checks were successful
build / build (push) Successful in 2m11s
2026-03-31 13:00:48 -06:00
17fb45606b chore(msyds): enable prism, flatpak on sydpc 2026-03-31 13:00:48 -06:00
1825424cbb feat: gtav battleye workaround 2026-03-31 13:00:48 -06:00
af08b2f1b1 fix(emacs): use fcitx5-remote correctly 2026-03-31 13:00:48 -06:00
7bdbb985da fix(emacs): auctex tex-view-selection 2026-03-31 13:00:48 -06:00
5a87805660 fix(emacs): add syd/project require 2026-03-31 13:00:48 -06:00
1f0c248b24 fix(emacs): set eshell aliases file envvar
Some checks failed
build / build (push) Failing after 1m17s
2026-03-31 11:47:47 -06:00
31b61ddd73 feat(prism-launcher): init
All checks were successful
build / build (push) Successful in 2m5s
2026-03-30 18:27:54 -06:00
c0b60ff0e4 feat(emacs): toki pona ligatures
All checks were successful
build / build (push) Successful in 2m40s
2026-03-30 13:20:18 -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
25 changed files with 260 additions and 30 deletions

View File

@@ -19,8 +19,9 @@
slippi.enable = true;
niri.enable = true;
stylix.enable = true;
qemu.enable = true;
# qemu.enable = true;
flatpak.enable = true;
gtav-battleye-hack.enable = true;
# gdm.enable = true;
openssh.enable = true;
sydpkgs.overlay.enable = true;

View File

@@ -9,6 +9,7 @@ in {
config = lib.mkIf cfg.enable {
sydnix.impermanence.cache.directories = [
".m2" # Clojure dependencies.
".gitlibs"
];
};
}

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

@@ -56,7 +56,12 @@ in {
Extra arguments to pass to the final wrapProgram call.
'';
default = [];
type = lib.types.listOf lib.types.str;
type = with lib.types;
listOf
(coercedTo
(oneOf [str package])
builtins.toString
str);
apply = lib.escapeShellArgs;
};
};

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

@@ -9,14 +9,6 @@ in {
type = lib.types.nullOr lib.types.path;
default = config.stylix.image;
};
# xwayland-satellite implements rootless Xwayland in a separate application,
# without the host compositor's involvement. It makes X11 windows appear as
# normal windows, just like a native Xwayland integration. While it is still
# somewhat experimental, it handles a lot of applications correctly, like
# Steam, games and Discord.
xwayland-satellite.enable =
lib.mkEnableOption "xwayland-satellite starting with Niri"
// { default = true; };
polkit.enable =
lib.mkEnableOption "Niri/Gnome Polkit" // { default = true; };
swaylock.enable =
@@ -67,26 +59,17 @@ in {
stylix.targets.swaylock.enable = cfg.swaylock.enable;
services.polkit-gnome.enable = cfg.polkit.enable;
sydnix.xwayland-satellite.enable = lib.mkDefault true;
# File-picker.
home.packages = [ pkgs.nautilus ];
systemd.user.services.xwayland-satellite =
lib.mkIf cfg.xwayland-satellite.enable {
Service.ExecStart =
["${pkgs.xwayland-satellite}/bin/xwayland-satellite"];
Unit.After = ["niri.service"];
Unit.PartOf = ["niri.service"];
Install.WantedBy = ["niri.service"];
};
programs.niri = {
settings = {
# Activates some Nixpkgs patches to help run Electron applications under
# Wayland.
environment = {
NIXOS_OZONE_WL = "1";
DISPLAY = ":0";
XDG_CURRENT_DESKTOP = "niri";
QT_QPA_PLATFORM = "wayland";
ELECTRON_OZONE_PLATFORM_HINT = "auto";

View File

@@ -3,3 +3,7 @@ exec loadouts/init
exec overrides/binds.cfg
exec overrides/settings.cfg
con_logfile console.log
ip 0.0.0.0
rcon_password monitor
net_start

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;
@@ -40,6 +51,10 @@ in {
pkgs.nerd-fonts.victor-mono
pkgs.ibm-plex
];
extraWrapProgramArgs = [
"--set" "ESHELL_ALIASES_FILE"
config.home.sessionVariables.ESHELL_ALIASES_FILE
];
};
};
}

View File

@@ -67,4 +67,6 @@
syd/grammatical-framework
syd/tabs
syd/lsp
syd/custom))
syd/custom
syd/transient
syd/bookmark))

View File

@@ -2,7 +2,10 @@
(require 'syd/base)
(use-package auctex
(use-package auctex)
(use-package tex
:straight nil ; Part of auctex.
:config
(add-to-list 'TeX-view-program-selection '(output-pdf "Sioyek")))

View File

@@ -0,0 +1,10 @@
;;; -*- lexical-binding: t; -*-
(require 'syd/base)
(use-package bookmark
:straight nil
:custom ((bookmark-default-file
(file-name-concat syd-data-dir "bookmarks"))))
(provide 'syd/bookmark)

View File

@@ -1,6 +1,7 @@
;;; -*- lexical-binding: t; -*-
(require 'syd/base)
(require 'syd/handle)
(require 'syd/popups)
(require 'syd/leader)

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

@@ -3,8 +3,8 @@
(require 'syd/base)
(use-package fcitx
:custom ((fcitx-remote-command "fcitx5-remote"))
:config
(setq fcitx-remote-command "fcitx5-remote")
(fcitx-aggressive-setup))
(provide 'syd/fcitx)

View File

@@ -69,7 +69,8 @@
(general-def
:prefix-map 'syd-leader-insert-map
"u" #'insert-char
"e" #'emoji-insert)
"e" #'emoji-insert
"p" #'syd-insert-file-name)
;; This is necessary to properly rebind `universal-argument'.
;; `universal-argument-more' is a command that provides additional prefixes

View File

@@ -22,11 +22,16 @@
"/*" "/=" "/>" "//" "__" "~~" "(*" "*)"
"\\\\" "://"))
;; Sitelen pona glyphs.
(rx-let ((ideograph (any (#xF1900 . #xF198C))))
(rx-let ((ideograph (any (#xF1900 . #xF198C)))
(tok-punct (any "󱦜" "󱦝"))
(arrow (any "←-↙"))
(zwj ""))
(ligature-set-ligatures
'fundamental-mode
`(("󱦐" ,(rx (* ideograph)))
("󱥍" ,(rx "󱦗" (* ideograph))))))
`(("󱦐" ,(rx (* (or ideograph tok-punct))))
("󱥍" ,(rx "󱦗" (* (or ideograph tok-punct)) "󱦘"))
("󱥁" ,(rx zwj arrow))
("󱤑" ,(rx zwj ideograph)))))
(global-ligature-mode 1))
(provide 'syd/ligature)

View File

@@ -193,4 +193,55 @@ form."
(cons mode (intern (concat (match-string 1 s) "-ts-mode"))))
(error "Symbol `%c' is not a mode." mode))))
(defun syd--insert-file-name-annotation (x)
(concat
" "
(propertize " " 'display `(space :align-to (- right ,(+ 1 (length x)))))
x))
(defun syd-insert-file-name ()
(interactive)
(let* ((path (read-file-name "Path: " nil nil 'confirm))
(proj-root (project-root (project-current)))
(alts
`((,(file-relative-name path proj-root) . "Project-relative")
(,(file-relative-name path default-directory) . "File-relative")
(,path . "Absolute")
("... (choose a dir)")))
(choice
(completing-read
"Variant: "
(lambda (s p flag)
(pcase flag
('metadata
`(metadata
(annotation-function
. ,(lambda (s)
(when-let* ((desc (cdr (assoc s alts))))
(syd--insert-file-name-annotation
desc))))))
(_ (all-completions s (mapcar #'car alts) p)))))))
(if (equal choice "... (choose a root)")
(insert (file-relative-name
path (read-file-name "Relative to: " nil nil
'confirm)))
(insert choice))))
(defun syd-import-systemd-environment ()
(interactive)
(with-temp-buffer
(shell-command "systemctl --user show-environment" (current-buffer))
(goto-char (point-min))
(while (re-search-forward
(rx bol (group (+ (not "=")))
"="
(or (and "$'" (group (* (not "'"))) "'")
(group (* any)))
eol)
nil t)
(let ((var (match-string 1))
(val (or (match-string 2)
(match-string 3))))
(setenv var val)))))
(provide 'syd/prelude)

View File

@@ -1,6 +1,7 @@
;;; -*- lexical-binding: t; -*-
(require 'syd/base)
(require 'syd/keymaps)
(require 'syd/completion) ; For `consult'.
(require 'consult)

View File

@@ -0,0 +1,10 @@
;;; -*- lexical-binding: t; -*-
(require 'syd/base)
(use-package transient
:straight nil
:custom ((transient-history-file
(file-name-concat syd-data-dir "transient/history.el"))))
(provide 'syd/transient)

View File

@@ -0,0 +1,14 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.users.msyds.zathura;
in {
options.sydnix.users.msyds.zathura = {
enable = lib.mkEnableOption "Zathura";
};
config = lib.mkIf cfg.enable {
programs.zathura = {
enable = true;
};
};
}

View File

@@ -0,0 +1,38 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.xwayland-satellite;
in {
options.sydnix.xwayland-satellite = {
# xwayland-satellite implements rootless Xwayland in a separate
# application, without the host compositor's involvement. It makes
# X11 windows appear as normal windows, just like a native
# Xwayland integration. While it is still somewhat experimental,
# it handles a lot of applications correctly, like Steam, games
# and Discord.
enable = lib.mkEnableOption "XWayland outside your Wayland";
};
config = lib.mkIf cfg.enable {
systemd.user.services.xwayland-satellite =
let xwayland-satellite =
pkgs.xwayland-satellite.override { withSystemd = true; };
in {
Unit = {
Description = "Xwayland outside your Wayland";
BindsTo = [ "graphical-session.target" ];
PartOf = [ "graphical-session.target" ];
After = [ "graphical-session.target" ];
Requisite = [ "graphical-session.target" ];
};
Service = {
Type = "notify";
NotifyAccess = "all";
ExecStart = lib.getExe xwayland-satellite;
StandardOutput = "journal";
ExecStartPost = "systemctl --user set-environment DISPLAY=:0";
ExecStop = "systemctl --user unset-environment DISPLAY";
};
Install.WantedBy = [ "graphical-session.target" ];
};
};
}

View File

@@ -12,6 +12,13 @@ in {
enableDynamicTheming = false;
};
# Start after xwayland-satellite, if possible. So DMS can start
# with the DISPLAY env var set.
systemd.user.services.dms = {
wants = ["xwayland-satellite.service"];
after = ["xwayland-satellite.service"];
};
services.displayManager.dms-greeter = {
enable = true;
compositor.name = assert config.sydnix.niri.enable; "niri";

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

@@ -0,0 +1,17 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.gtav-battleye-hack;
in {
options.sydnix.gtav-battleye-hack = {
enable = lib.mkEnableOption
"Grand Theft Auto V Online BattlEye workaround";
};
config = lib.mkIf cfg.enable {
networking.hosts."0.0.0.0" = [
"paradise-s1.battleye.com"
"test-s1.battleye.com"
"paradiseenhanced-s1.battleye.com"
];
};
}

View File

@@ -46,6 +46,9 @@
kdeconnect.enable = true;
qalculate.enable = true;
toki-pona.enable = true;
prism-launcher.enable = on "sydpc";
flatpak.enable = on "sydpc";
drawing-tablet.enable = on "sydpc";
sops = {
enable = true;
keyFile = "/persist/private-keys/age/crumb";
@@ -64,6 +67,7 @@
fcitx5.enable = true;
anki.enable = true;
mumble.enable = true;
rnote.enable = on "sydpc";
};
users.msyds = {
discord.enable = true;
@@ -74,7 +78,8 @@
syncthing.enable = true;
fonts.enable = true;
dank-material-shell.enable = true;
sioyek.enable = true;
sioyek.enable = on "fruitbook";
zathura.enable = on "sydpc";
};
};