Compare commits

..

36 Commits

Author SHA1 Message Date
262f6779b1 wip: fix(copypary): zotero webdav
All checks were successful
build / build (push) Successful in 1m36s
2026-03-29 19:05:29 -06:00
9ffa14e536 fix(jellyfin-rpc): systemd unit dependencies
All checks were successful
build / build (push) Successful in 2m44s
2026-03-29 19:05:17 -06:00
8c41e3b8df feat(gitea): set default merge style
All checks were successful
build / build (push) Successful in 6s
2026-03-28 14:21:40 -06:00
a9ac5ae964 feat(gitea): 도기 보나와 한국어 2026-03-28 14:21:40 -06:00
258c3edeab fix(emacs): o kepeken ilo Syd/handle
All checks were successful
build / build (push) Successful in 1m14s
2026-03-26 10:31:37 -06:00
5d5036a83c feat(emacs): eshell aliases from home.shellAliases
All checks were successful
build / build (push) Successful in 1m52s
2026-03-26 10:22:23 -06:00
da60eaa936 feat(bash): alias completions 2026-03-26 09:19:52 -06:00
c551e8f86e refactor: move crumb bash to msyds 2026-03-26 08:22:27 -06:00
de5b56d1b1 feat: markdown prose mode
All checks were successful
build / build (push) Successful in 3m4s
2026-03-24 20:00:08 -06:00
cbb7f3c7a7 fix: mark compilation buffer as popup 2026-03-24 19:59:42 -06:00
d0b5b42dca fix(fruitbook): disable bluetooth (since DMS provides it)
Some checks failed
build / build (push) Failing after 22m33s
2026-03-23 11:36:43 -06:00
7ea2a79aca fix(kdeconnect): o awen e ijo Kde-connect State
All checks were successful
build / build (push) Successful in 1m43s
closes #18
2026-03-22 02:27:45 -06:00
182198230a feat(gitea): 이메일 더함
All checks were successful
build / build (push) Successful in 6s
2026-03-22 02:23:34 -06:00
36be01d80e fix(emacs): o lon e fcitx-remote-command
All checks were successful
build / build (push) Successful in 1m23s
2026-03-22 01:31:22 -06:00
148597d593 refactor(fruitbook): niri 대신에 dms로 잠금
All checks were successful
build / build (push) Successful in 1m47s
2026-03-22 01:27:45 -06:00
087f015340 fix(fruitbook): 전지 그림을 보임
그런데 한 거만 해야 돼: upower을 켰어.
2026-03-22 01:18:52 -06:00
ab7d28ac0f fix(fruitbook): 노트북 닫을 때 화면을 잠금
All checks were successful
build / build (push) Successful in 1m37s
2026-03-22 00:50:51 -06:00
a913e4f5c7 fix(toki-pona): nasin pini la kepeken e sitelen pona 2026-03-22 00:45:46 -06:00
b31bcae064 fix(ci): o ante e pali mute kama pali lili
All checks were successful
build / build (push) Successful in 1m14s
2026-03-22 00:15:01 -06:00
2146717898 chore: sydpc밖에 steam, slippi, openutau를 끔
All checks were successful
build / build-sydpc (push) Successful in 2m10s
build / build-fruitbook (push) Successful in 36s
build / build-deertopia (push) Successful in 41s
2026-03-21 23:55:41 -06:00
584489c853 fix(fruitbook): nixos-modules를 빠른 선풍기 없이 켬 2026-03-21 23:55:22 -06:00
a3ead883fe fix(emacs): clojure-refactor mode hook
All checks were successful
build / build-sydpc (push) Successful in 2m4s
build / build-fruitbook (push) Successful in 24s
build / build-deertopia (push) Successful in 33s
2026-03-20 18:17:49 -06:00
86b80e887c feat(emacs): fcitx
All checks were successful
build / build-sydpc (push) Successful in 27s
build / build-fruitbook (push) Successful in 22s
build / build-deertopia (push) Successful in 25s
2026-03-17 12:45:20 -06:00
178f3b9c31 feat(toki-pona): apply in ghostty
All checks were successful
build / build-sydpc (push) Successful in 2m5s
build / build-fruitbook (push) Successful in 29s
build / build-deertopia (push) Successful in 42s
2026-03-17 11:43:54 -06:00
425f502bba fix(emacs): EXPAND TABS 2026-03-17 11:43:32 -06:00
077a709f65 fix(fruitbook): temporarily disable nixos-hardware
my laptop fans were going wild
2026-03-17 11:42:54 -06:00
989aaa37da feat(fruitbook): nixos-hardware
All checks were successful
build / build-sydpc (push) Successful in 4s
build / build-fruitbook (push) Successful in 3s
build / build-deertopia (push) Successful in 3s
2026-03-16 18:31:32 -06:00
02a3702e8e fix(bepasty): workaround for nixpkgs#500538
All checks were successful
build / build-sydpc (push) Successful in 34s
build / build-fruitbook (push) Successful in 24s
build / build-deertopia (push) Successful in 36s
https://github.com/NixOS/nixpkgs/pull/500538
2026-03-16 18:11:58 -06:00
2905839509 refactor(bepasty): no with lib 2026-03-16 16:50:32 -06:00
df0062f89b feat(toki-pona): spellcheck
Some checks failed
build / build-sydpc (push) Successful in 2m5s
build / build-fruitbook (push) Successful in 43s
build / build-deertopia (push) Failing after 43s
2026-03-15 18:09:56 -06:00
b13a985d87 refactor(toki-pona): all in one module 2026-03-15 18:09:38 -06:00
dc1a34de65 chore: bump nixpkgs, hm 2026-03-15 18:07:13 -06:00
8010658111 fix(emacs): don't replace roam: links
Some checks failed
build / build-sydpc (push) Successful in 31s
build / build-fruitbook (push) Successful in 25s
build / build-deertopia (push) Failing after 34s
2026-03-14 17:29:35 -06:00
ef03e80d2c feat(emacs): clj-refactor
Some checks failed
build / build-sydpc (push) Successful in 29s
build / build-deertopia (push) Has been cancelled
build / build-fruitbook (push) Has been cancelled
2026-03-14 17:26:03 -06:00
3788f7027e feat(emacs): toki pona fonts
Some checks failed
build / build-deertopia (push) Failing after 38s
build / build-sydpc (push) Successful in 43s
build / build-fruitbook (push) Successful in 29s
2026-03-14 17:25:45 -06:00
56f8f48e2b feat(toki-pona): add sitelen seli kiwen 2026-03-14 17:25:30 -06:00
40 changed files with 483 additions and 170 deletions

View File

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

46
flake.lock generated
View File

@@ -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": {
@@ -307,11 +307,11 @@
"nixpkgs": "nixpkgs_3" "nixpkgs": "nixpkgs_3"
}, },
"locked": { "locked": {
"lastModified": 1772845525, "lastModified": 1773608492,
"narHash": "sha256-Dp5Ir2u4jJDGCgeMRviHvEQDe+U37hMxp6RSNOoMMPc=", "narHash": "sha256-QZteyExJYSQzgxqdsesDPbQgjctGG7iKV/6ooyQPITk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "27b93804fbef1544cb07718d3f0a451f4c4cd6c0", "rev": "9a40ec3b78fc688d0908485887d355caa5666d18",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -436,6 +436,21 @@
"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,
@@ -533,11 +548,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1772542754, "lastModified": 1773389992,
"narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=", "narHash": "sha256-wvfdLLWJ2I9oEpDd9PfMA8osfIZicoQ5MT1jIwNs9Tk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "8c809a146a140c5c8806f13399592dbcb1bb5dc4", "rev": "c06b4ae3d6599a672a6210b7021d699c351eebda",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -581,16 +596,16 @@
}, },
"nixpkgs_6": { "nixpkgs_6": {
"locked": { "locked": {
"lastModified": 1772736753, "lastModified": 1773700673,
"narHash": "sha256-au/m3+EuBLoSzWUCb64a/MZq6QUtOV8oC0D9tY2scPQ=", "narHash": "sha256-RLidgpn3mN3cVkIiiYehcmM2ImBnPudwISFLy71zN0o=",
"owner": "NixOS", "owner": "msyds",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "917fec990948658ef1ccd07cef2a1ef060786846", "rev": "2595b5f0592534492bce3cb61c2c9bf5ba03ffbe",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "msyds",
"ref": "nixpkgs-unstable", "ref": "fix-bepasty",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@@ -700,6 +715,7 @@
"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",

View File

@@ -3,7 +3,9 @@
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";
@@ -21,6 +23,7 @@
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";

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;

View File

@@ -1,23 +1,27 @@
{ config, pkgs, lib, disko, ... }: { config, pkgs, lib, disko, nixos-hardware, ... }:
{ {
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;
# gdm.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
View File

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

View File

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

View File

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

View File

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

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

@@ -3,14 +3,31 @@
let cfg = config.sydnix.toki-pona; let cfg = config.sydnix.toki-pona;
in { in {
options.sydnix.toki-pona = { options.sydnix.toki-pona = {
enable = lib.mkEnableOption "Toki Pona fonts and input methods"; enable = lib.mkEnableOption "Toki Pona fonts, input, and spell-check";
}; };
config = lib.mkIf cfg.enable { 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; [ home.packages = with pkgs; [
# nasin-nanpa-ucsur # nasin-nanpa-ucsur
nasin-nanpa nasin-nanpa
nasin-nanpa-helvetica nasin-nanpa-helvetica
sitelen-seli-kiwen
]; ];
}; };
} }

View File

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

View File

@@ -18,11 +18,6 @@ in {
pkgs.kdePackages.fcitx5-chinese-addons pkgs.kdePackages.fcitx5-chinese-addons
pkgs.fcitx5-hangul pkgs.fcitx5-hangul
inputs.syd-fcitx5-tables.packages.${system}.default inputs.syd-fcitx5-tables.packages.${system}.default
(pkgs.fcitx5-toki-pona.overrideAttrs (final: prev: {
patches = prev.patches or [] ++ [
./fcitx5/punctuation.patch
];
}))
]; ];
settings = { settings = {
# Bind QuickPhrase to `s-;`. # Bind QuickPhrase to `s-;`.

View File

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

View File

@@ -1,6 +1,11 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, host, ... }:
let cfg = config.sydnix.users.msyds.dank-material-shell; let
cfg = config.sydnix.users.msyds.dank-material-shell;
on = hosts:
if builtins.isString hosts
then hosts == host
else builtins.elem host hosts;
in { 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 = {};

View File

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

View File

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

View File

@@ -3,6 +3,7 @@
(syd-require-features (syd-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
@@ -64,5 +65,6 @@
syd/eshell syd/eshell
syd/treesit syd/treesit
syd/grammatical-framework syd/grammatical-framework
syd/tabs
syd/lsp syd/lsp
syd/custom)) syd/custom))

View File

@@ -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)
@@ -108,4 +110,13 @@
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)

View File

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

View File

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

View File

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

View File

@@ -12,15 +12,21 @@
(font-spec :family "JuliaMono" :size 16) (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

View File

@@ -5,22 +5,28 @@
(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)

View File

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

View File

@@ -80,7 +80,8 @@
:target (file "todays-korean/%<%Y-%m-%d>.org")) :target (file "todays-korean/%<%Y-%m-%d>.org"))
("I" "Korean irregularity class" plain ("I" "Korean irregularity class" plain
(file ,(syd-emacs-file "lisp/syd/org/roam/irregularity-class.org")) (file ,(syd-emacs-file "lisp/syd/org/roam/irregularity-class.org"))
:target (file ,default-target-file-name)))))) :target (file ,default-target-file-name)))))
(org-roam-link-auto-replace nil))
:config :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

View File

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

View File

@@ -0,0 +1 @@
nil

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

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

View File

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

View File

@@ -1,12 +1,10 @@
{ 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 = mkEnableOption "Bepasty"; enable = lib.mkEnableOption "Bepasty";
port = lib.mkOption { port = lib.mkOption {
default = 22018; default = 22018;
@@ -19,7 +17,7 @@ in {
}; };
}; };
config = mkIf cfg.enable { config = lib.mkIf cfg.enable {
sydnix.sops.secrets.bepasty-secret-key = {}; sydnix.sops.secrets.bepasty-secret-key = {};
sydnix.sops.secrets.bepasty-secret-config = {}; sydnix.sops.secrets.bepasty-secret-config = {};

View File

@@ -13,10 +13,14 @@ in {
}; };
}; };
imports = [ ./copyparty/vault.nix ]; imports = [
./copyparty/vault.nix
./copyparty/webdav.nix
];
config = lib.mkIf cfg.enable { 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" = {

View File

@@ -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" ];

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, ... }: { 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
View File

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

View File

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

View File

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

View File

@@ -18,63 +18,68 @@
]; ];
}; };
homeConfiguration = { config, lib, pkgs, ... }: { homeConfiguration = { config, lib, pkgs, host, ... }:
home.file.".ssh/id_ed25519".source = let on = hosts:
config.lib.file.mkOutOfStoreSymlink if builtins.isString hosts
"/persist/private-keys/ssh/msyds@sydpc"; then hosts == host
else builtins.elem host hosts;
in {
home.file.".ssh/id_ed25519".source =
config.lib.file.mkOutOfStoreSymlink
"/persist/private-keys/ssh/msyds@sydpc";
home.file.".face".source = ./avatar.jpg; home.file.".face".source = ./avatar.jpg;
home.file.".ssh/id_ed25519.pub".source = home.file.".ssh/id_ed25519.pub".source =
../../public-keys/ssh/${"msyds@sydpc.pub"}; ../../public-keys/ssh/${"msyds@sydpc.pub"};
sydnix = { sydnix = {
documentation.enable = true; 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;
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; 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 = { 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;
syncthing.enable = true; syncthing.enable = true;
fonts.enable = true; fonts.enable = true;
dank-material-shell.enable = true; dank-material-shell.enable = true;
sioyek.enable = true; sioyek.enable = true;
};
}; };
# Don't touch!
home.stateVersion = "18.09";
}; };
# Don't touch!
home.stateVersion = "18.09";
};
} }