Compare commits

..

1 Commits

Author SHA1 Message Date
ddbfca6f30 feat: build action
Some checks failed
build / build-sydpc (push) Failing after 17s
build / build-fruitbook (push) Failing after 2s
build / build-deertopia (push) Failing after 1s
2026-03-01 02:45:53 -07:00
70 changed files with 414 additions and 2096 deletions

View File

@@ -4,14 +4,26 @@ on: [push]
jobs: jobs:
build: build-sydpc:
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
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
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

225
flake.lock generated
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": {
@@ -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": 1775087534, "lastModified": 1754091436,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=", "narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b", "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": {
@@ -420,15 +420,14 @@
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_5", "nixpkgs": "nixpkgs_5"
"nixpkgs-nixcord": "nixpkgs-nixcord"
}, },
"locked": { "locked": {
"lastModified": 1777125640, "lastModified": 1764576281,
"narHash": "sha256-jKmRu5PknoI0pk3WEqMhVReosUubUCq3M/izEQWzb+4=", "narHash": "sha256-f6vfwmIb9C3brI4/KJ9MFUDWt6FsKQ0dbMO6AuFc7E0=",
"owner": "KaylorBen", "owner": "KaylorBen",
"repo": "nixcord", "repo": "nixcord",
"rev": "0e738683dd7551a9cbfa343397b1592dfd785b7e", "rev": "c8f47894134a4984acd319e66c4384eb1ff886e2",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -437,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,
@@ -470,11 +454,11 @@
}, },
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"lastModified": 1774748309, "lastModified": 1753579242,
"narHash": "sha256-+U7gF3qxzwD5TZuANzZPeJTZRHS29OFQgkQ2kiTJBIQ=", "narHash": "sha256-zvaMGVn14/Zz8hnp4VWT9xVnhc8vuL3TStRqwk22biA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs.lib", "repo": "nixpkgs.lib",
"rev": "333c4e0545a6da976206c74db8773a1645b5870a", "rev": "0f36c44e01a6129be94e3ade315a5883f0228a6e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -483,22 +467,6 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-nixcord": {
"locked": {
"lastModified": 1776734388,
"narHash": "sha256-vl3dkhlE5gzsItuHoEMVe+DlonsK+0836LIRDnm6MXQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "10e7ad5bbcb421fe07e3a4ad53a634b0cd57ffac",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1742751704, "lastModified": 1742751704,
@@ -517,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": {
@@ -532,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=",
@@ -565,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": {
@@ -581,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": {
@@ -597,32 +581,32 @@
}, },
"nixpkgs_5": { "nixpkgs_5": {
"locked": { "locked": {
"lastModified": 1776734388, "lastModified": 1754028485,
"narHash": "sha256-vl3dkhlE5gzsItuHoEMVe+DlonsK+0836LIRDnm6MXQ=", "narHash": "sha256-IiiXB3BDTi6UqzAZcf2S797hWEPCRZOwyNThJIYhUfk=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "10e7ad5bbcb421fe07e3a4ad53a634b0cd57ffac", "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"
} }
@@ -645,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": {
@@ -709,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": {
@@ -732,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",
@@ -780,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": {
@@ -814,22 +797,20 @@
}, },
"sydpkgs": { "sydpkgs": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": "nixpkgs_10"
"nixpkgs"
]
}, },
"locked": { "locked": {
"lastModified": 1776985528, "lastModified": 1767975357,
"narHash": "sha256-32WDZGOJBjq3Jr4DRtumqXoX5t25/T0cQ7CzAqT1OnE=", "narHash": "sha256-MDVh3/aVhkD1bh/r8c0gs9DL4e78CrUbUxOZHWlCwLM=",
"ref": "refs/heads/main", "owner": "msyds",
"rev": "40de55454366e390e6972f5e9a9b1444df49ed18", "repo": "sydpkgs",
"revCount": 40, "rev": "233479ab277d47b1dbda202eafca50e61c659151",
"type": "git", "type": "github"
"url": "https://git.deertopia.net/msyds/sydpkgs"
}, },
"original": { "original": {
"type": "git", "owner": "msyds",
"url": "https://git.deertopia.net/msyds/sydpkgs" "repo": "sydpkgs",
"type": "github"
} }
}, },
"systems": { "systems": {
@@ -880,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,
@@ -932,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": {
@@ -948,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": {
@@ -964,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": {
@@ -1054,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": {

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,7 +21,6 @@
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";
@@ -32,10 +29,7 @@
tf2-nix.url = "gitlab:msyds/tf2-nix"; tf2-nix.url = "gitlab:msyds/tf2-nix";
syd-fcitx5-tables.url = syd-fcitx5-tables.url =
"git+https://git.deertopia.net/msyds/syd-fcitx5-tables"; "git+https://git.deertopia.net/msyds/syd-fcitx5-tables";
sydpkgs = { sydpkgs.url = "github:msyds/sydpkgs";
url = "git+https://git.deertopia.net/msyds/sydpkgs";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { self, nixpkgs, ... }@inputs: outputs = { self, nixpkgs, ... }@inputs:

View File

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

View File

@@ -1,30 +1,26 @@
{ 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; kdeconnect.enable = true;
upower.enable = true;
users.users = [ users.users = [
# "crumb" "crumb"
"msyds" "msyds"
]; ];

View File

@@ -10,8 +10,6 @@
v4l2loopback v4l2loopback
]; ];
programs.dconf.enable = true;
sydnix = { sydnix = {
filesystemType = "btrfs"; filesystemType = "btrfs";
wifi.enable = true; wifi.enable = true;
@@ -21,9 +19,8 @@
slippi.enable = true; slippi.enable = true;
niri.enable = true; niri.enable = true;
stylix.enable = true; stylix.enable = true;
# qemu.enable = true; qemu.enable = true;
flatpak.enable = true; flatpak.enable = true;
gtav-battleye-hack.enable = true;
# gdm.enable = true; # gdm.enable = true;
openssh.enable = true; openssh.enable = true;
sydpkgs.overlay.enable = true; sydpkgs.overlay.enable = true;

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

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

View File

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

View File

@@ -13,21 +13,30 @@ 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 {
name = "vesktop-wayland-wrapper";
paths = [ pkgs.callPackage pkgs.vesktop ];
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 = sydnix.impermanence.directories =
let xdg-config-home = let xdg-config-home =
config.home.confighome 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")
@@ -36,13 +45,19 @@ in {
programs.nixcord = { programs.nixcord = {
enable = true; enable = true;
discord = { discord = {
# Install Vesktop without Discord.
enable = false; enable = false;
# openASAR.enable = true;
vencord.enable = false; vencord.enable = false;
vencord.package = pkgs.vencord; vencord.package = pkgs.vencord;
}; };
vesktop = { vesktop = {
enable = true; enable = true;
# package =
# if cfg.fixWayland
# then vesktop-wayland-wrapper
# else pkgs.vesktop;
}; };
}; };
}; });
} }

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.";
}];
};
}

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

View File

@@ -1,22 +0,0 @@
{ config, lib, pkgs, osConfig, ... }:
let cfg = config.sydnix.easyeffects;
in {
options.sydnix.easyeffects = {
enable = lib.mkEnableOption "Easyeffects";
};
config = lib.mkIf cfg.enable {
services.easyeffects = {
enable = true;
extraPresets.thanks-ash =
builtins.fromJSON
(builtins.readFile ./easyeffects/thanks-ash.json);
};
warnings = lib.optional (!osConfig.programs.dconf.enable) ''
Easyeffects requires services.dconf.enable = true in the NixOS
config.
'';
};
}

View File

@@ -1,777 +0,0 @@
{
"input": {
"blocklist": [],
"equalizer#0": {
"balance": 0.0,
"bypass": false,
"input-gain": 0.0,
"left": {
"band0": {
"frequency": 22.4,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band1": {
"frequency": 27.8,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band10": {
"frequency": 194.06,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band11": {
"frequency": 240.81,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band12": {
"frequency": 298.834,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band13": {
"frequency": 370.834,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band14": {
"frequency": 460.182,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band15": {
"frequency": 571.057,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band16": {
"frequency": 708.647,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band17": {
"frequency": 879.387,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band18": {
"frequency": 1091.26,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band19": {
"frequency": 1354.19,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band2": {
"frequency": 34.51,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band20": {
"frequency": 1680.47,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band21": {
"frequency": 2085.35,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band22": {
"frequency": 2587.79,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band23": {
"frequency": 3211.29,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band24": {
"frequency": 3985.01,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band25": {
"frequency": 4945.15,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band26": {
"frequency": 6136.63,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band27": {
"frequency": 7615.17,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band28": {
"frequency": 9449.96,
"gain": 0.05000000000000426,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band29": {
"frequency": 11726.8,
"gain": -0.5300000000000011,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band3": {
"frequency": 42.82,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band30": {
"frequency": 14552.2,
"gain": -22.29,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band31": {
"frequency": 18058.4,
"gain": -36.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band4": {
"frequency": 53.14,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band5": {
"frequency": 65.95,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band6": {
"frequency": 81.83,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band7": {
"frequency": 101.55,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band8": {
"frequency": 126.0,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band9": {
"frequency": 156.38,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
}
},
"mode": "IIR",
"num-bands": 32,
"output-gain": 0.0,
"pitch-left": 0.0,
"pitch-right": 0.0,
"right": {
"band0": {
"frequency": 22.4,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band1": {
"frequency": 27.8,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band10": {
"frequency": 194.06,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band11": {
"frequency": 240.81,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band12": {
"frequency": 298.834,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band13": {
"frequency": 370.834,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band14": {
"frequency": 460.182,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band15": {
"frequency": 571.057,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band16": {
"frequency": 708.647,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band17": {
"frequency": 879.387,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band18": {
"frequency": 1091.26,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band19": {
"frequency": 1354.19,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band2": {
"frequency": 34.51,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band20": {
"frequency": 1680.47,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band21": {
"frequency": 2085.35,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band22": {
"frequency": 2587.79,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band23": {
"frequency": 3211.29,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band24": {
"frequency": 3985.01,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band25": {
"frequency": 4945.15,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band26": {
"frequency": 6136.63,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band27": {
"frequency": 7615.17,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band28": {
"frequency": 9449.96,
"gain": 0.05000000000000426,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band29": {
"frequency": 11726.8,
"gain": -0.5300000000000011,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band3": {
"frequency": 42.82,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band30": {
"frequency": 14552.2,
"gain": -22.29,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band31": {
"frequency": 18058.4,
"gain": -36.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band4": {
"frequency": 53.14,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band5": {
"frequency": 65.95,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band6": {
"frequency": 81.83,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band7": {
"frequency": 101.55,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band8": {
"frequency": 126.0,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
},
"band9": {
"frequency": 156.38,
"gain": 0.0,
"mode": "RLC (BT)",
"mute": false,
"q": 4.36,
"slope": "x1",
"solo": false,
"type": "Bell",
"width": 4.0
}
},
"split-channels": false
},
"gate#0": {
"attack": 5.0,
"bypass": false,
"curve-threshold": -30.0,
"curve-zone": -6.0,
"dry": -80.01,
"hpf-frequency": 10.0,
"hpf-mode": "Off",
"hysteresis": false,
"hysteresis-threshold": -12.0,
"hysteresis-zone": -6.0,
"input-gain": 0.0,
"input-to-link": 0.0,
"input-to-sidechain": 0.0,
"link-to-input": 0.0,
"link-to-sidechain": 0.0,
"lpf-frequency": 20000.0,
"lpf-mode": "Off",
"makeup": 0.0,
"output-gain": 0.0,
"reduction": -24.0,
"release": 250.0,
"sidechain": {
"lookahead": 0.0,
"mode": "Peak",
"preamp": 0.0,
"reactivity": 10.0,
"source": "Middle",
"stereo-split-source": "Left/Right",
"type": "Internal"
},
"sidechain-to-input": 0.0,
"sidechain-to-link": 0.0,
"stereo-split": false,
"wet": 0.0
},
"loudness#0": {
"bypass": false,
"clipping": false,
"clipping-range": 6.0,
"fft": "4096",
"iir-approximation": "Normal",
"input-gain": 0.0,
"mode": "FFT",
"output-gain": 0.0,
"std": "ISO226-2023",
"volume": 7.0
},
"plugins_order": [
"gate#0",
"equalizer#0",
"loudness#0"
]
}
}

View File

@@ -56,12 +56,7 @@ in {
Extra arguments to pass to the final wrapProgram call. Extra arguments to pass to the final wrapProgram call.
''; '';
default = []; default = [];
type = with lib.types; type = lib.types.listOf lib.types.str;
listOf
(coercedTo
(oneOf [str package])
builtins.toString
str);
apply = lib.escapeShellArgs; apply = lib.escapeShellArgs;
}; };
}; };
@@ -83,7 +78,6 @@ in {
fontspec fontspec
dvisvgm dvipng wrapfig # For Org-mode previews/export. dvisvgm dvipng wrapfig # For Org-mode previews/export.
amsmath # Essential for mathematics. amsmath # Essential for mathematics.
cancel # Cross out terms in math mode.
spath3 # TikZ dependency? spath3 # TikZ dependency?
ulem hyperref ulem hyperref
capt-of capt-of
@@ -135,13 +129,6 @@ in {
}; };
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 = {
EDITOR = "emacsclient"; EDITOR = "emacsclient";

View File

@@ -1,31 +0,0 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sydnix.haskell;
in {
options.sydnix.haskell.enable =
lib.mkEnableOption "Haskell";
config = lib.mkIf cfg.enable {
# Convenient shorthand for quickly opening Haskell REPLs.
programs.bash.profileExtra =
builtins.readFile ./haskell/ghc-with-packages.sh;
home.file.".ghc/ghci.conf".text = ''
:set prompt "\x1b[38;5;5mλ>\x1b[0m "
:set prompt-cont "\x1b[38;5;5m|>\x1b[0m "
'';
sydnix.impermanence.cache.directories =
let xdg-cache-dir =
config.home.cacheHome
or "${config.home.homeDirectory}/.cache";
in [
# We don't want to rebuild Hackage simply due to a reboot, do we? }:)
(lib.removePrefix "${config.home.homeDirectory}/"
"${xdg-cache-dir}/cabal")
".stack"
];
};
}

View File

@@ -1,52 +0,0 @@
declare -a default_ghc_packages=(pretty-simple lens)
ghc-with-packages () {
declare -a packages=()
local GHC_COMMAND=${GHC_COMMAND:-"ghc"}
packages+=$default_ghc_packages
local exit=0 stop_args
while [[ ! -z "$1" && -z "$stop_args" ]]; do
local opt="$1"
shift 1
case "$opt" in
"--")
stop_args=1
;;
"-p")
while [[ ! -z "$1" && "$1" != -* ]]; do
packages+=("$1")
shift 1
done
;;
*|"-h")
exit=1
;;
esac
done
local pretty_simple
for p in "$packages"; do
if [[ "$p" = "pretty-simple" ]]; then
pretty_simple="-interactive-print=Text.Pretty.Simple.pPrint"
fi
done
if [[ "$exit" -eq 0 ]]; then
# echo "packages: ${packages[@]}"
# echo "args: $*"
local pkgs="${packages[@]}"
nix-shell \
-p "haskellPackages.ghcWithPackages (p: with p; [ $pkgs ])" \
--run "$GHC_COMMAND $pretty_simple $*"
else
echo >&2 "Usage: ghci-with-packages [-p packages…] [-- ghci-options]"
return $exit
fi
}
export -f ghc-with-packages
ghci-with-packages () {
GHC_COMMAND=ghci ghc-with-packages "$@"
}
export -f ghci-with-packages

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;

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

View File

@@ -1,17 +0,0 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.ryujinx;
in {
options.sydnix.ryujinx = {
enable = lib.mkEnableOption "ryujinx";
};
config = lib.mkIf cfg.enable {
home.packages = [
pkgs.ryubing-canary
];
sydnix.impermanence.directories = [
".config/Ryujinx"
];
};
}

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

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 󱤂

View File

@@ -20,7 +20,6 @@ in {
enable = true; enable = true;
addons = with pkgs.ankiAddons; [ addons = with pkgs.ankiAddons; [
review-heatmap review-heatmap
anki-connect
]; ];
sync = { sync = {
autoSync = true; autoSync = true;

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 ../../..";
};
};
}

View File

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

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 = "";
}; };

View File

@@ -239,7 +239,7 @@ in {
# Precedence of search engines. # Precedence of search engines.
order = [ "Kagi" "ddg" ]; order = [ "Kagi" "ddg" ];
default = "Kagi"; default = "Kagi";
privateDefault = "Kagi"; privateDefault = "ddg";
engines = { engines = {
"Kagi" = { "Kagi" = {
urls = [{ urls = [{
@@ -273,26 +273,6 @@ in {
"${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "!np" ]; definedAliases = [ "!np" ];
}; };
"English Wiktionary" = {
urls = [{
template = "https://en.wiktionary.org/wiki/Special:Search";
params = [
{ name = "go"; value = "Define"; }
{ name = "search"; value = "{searchTerms}"; }
];
}];
definedAliases = [ "!wikt" "!enwikt" "!" "!wiktionary" ];
};
"" = {
urls = [{
template = "https://ko.wiktionary.org/wiki/:";
params = [
{ name = "go"; value = "Define"; }
{ name = "search"; value = "{searchTerms}"; }
];
}];
definedAliases = [ "!kowikt" "!" ];
};
}; };
}; };

View File

@@ -0,0 +1,67 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sydnix.users.crumb.haskell;
in {
options.sydnix.users.crumb.haskell.enable =
lib.mkEnableOption "Haskell, à la crumb";
config = lib.mkIf cfg.enable {
# Convenient shorthand for quickly opening Haskell REPLs.
programs.bash.profileExtra = ''
# Start a GHCi REPL with the given packages made available.
ghci-with-packages () {
packages=""
while getopts 'p:h' opt; do
case "$opt" in
p)
packages="''${OPTARG}"
;;
?|h)
echo >&2 "Usage: $(basename $0) [-p packages] [-- ghci-options]"
exit 1
;;
esac
done
shift "$(($OPTIND -1))"
nix-shell -p "haskellPackages.ghcWithPackages (p: with p; [ $packages ])" \
--run "ghci $@"
}
export -f ghci-with-packages
# Run GHC with the given packages made available.
ghc-with-packages () {
packages=""
while getopts 'p:h' opt; do
case "$opt" in
p)
packages="''${OPTARG}"
;;
?|h)
echo >&2 "Usage: $(basename $0) [-p packages] [-- ghc-options]"
exit 1
;;
esac
done
shift "$(($OPTIND -1))"
nix-shell -p "haskellPackages.ghcWithPackages (p: with p; [ $packages ])" \
--run "ghc $@"
}
export -f ghc-with-packages
'';
sydnix.impermanence.cache.directories =
let xdg-cache-dir =
config.home.cacheHome
or "${config.home.homeDirectory}/.cache";
in [
# We don't want to rebuild Hackage simply due to a reboot, do we? }:)
(lib.removePrefix "${config.home.homeDirectory}/"
"${xdg-cache-dir}/cabal")
".stack"
];
};
}

View File

@@ -9,6 +9,14 @@ in {
type = lib.types.nullOr lib.types.path; type = lib.types.nullOr lib.types.path;
default = config.stylix.image; 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 = polkit.enable =
lib.mkEnableOption "Niri/Gnome Polkit" // { default = true; }; lib.mkEnableOption "Niri/Gnome Polkit" // { default = true; };
swaylock.enable = swaylock.enable =
@@ -59,17 +67,26 @@ in {
stylix.targets.swaylock.enable = cfg.swaylock.enable; stylix.targets.swaylock.enable = cfg.swaylock.enable;
services.polkit-gnome.enable = cfg.polkit.enable; services.polkit-gnome.enable = cfg.polkit.enable;
sydnix.xwayland-satellite.enable = lib.mkDefault true;
# File-picker. # File-picker.
home.packages = [ pkgs.nautilus ]; 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 = { programs.niri = {
settings = { settings = {
# Activates some Nixpkgs patches to help run Electron applications under # Activates some Nixpkgs patches to help run Electron applications under
# Wayland. # Wayland.
environment = { environment = {
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
DISPLAY = ":0";
XDG_CURRENT_DESKTOP = "niri"; XDG_CURRENT_DESKTOP = "niri";
QT_QPA_PLATFORM = "wayland"; QT_QPA_PLATFORM = "wayland";
ELECTRON_OZONE_PLATFORM_HINT = "auto"; ELECTRON_OZONE_PLATFORM_HINT = "auto";

View File

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

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 ../../..";
};
};
}

View File

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

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

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
@@ -31,7 +30,6 @@
syd/which-key syd/which-key
syd/tramp syd/tramp
syd/handle syd/handle
syd/flycheck
syd/org syd/org
syd/org/roam syd/org/roam
syd/org/agenda syd/org/agenda
@@ -51,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
@@ -66,10 +63,5 @@
syd/eshell syd/eshell
syd/treesit syd/treesit
syd/grammatical-framework syd/grammatical-framework
syd/tabs
syd/lsp syd/lsp
syd/custom syd/custom))
syd/transient
syd/bookmark
syd/haskell
syd/qbe))

View File

@@ -1,14 +0,0 @@
;;; -*- lexical-binding: t; -*-
(require 'syd/base)
(use-package auctex)
(use-package tex
:straight nil ; Part of auctex.
:config
(add-to-list 'TeX-view-program-selection '(output-pdf "Sioyek")))
(use-package auctex-latexmk)
(provide 'syd/auctex)

View File

@@ -1,10 +0,0 @@
;;; -*- 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,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)
@@ -21,38 +20,21 @@
(use-package cider (use-package cider
:after clojure-mode :after clojure-mode
:config :config
(defun syd-clojure-doc (arg) (defun syd-clojure-doc (arg)
(interactive "P") (interactive "P")
(cider-doc arg) (cider-doc arg)
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)
: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)
(add-hook 'cider-repl-mode-hook #'syd-lisp-mode) (add-hook 'cider-repl-mode-hook #'syd-lisp-mode)
(syd-push shackle-rules (syd-push shackle-rules
`("*cider-doc*" ,@syd-help-popup-options) `("*cider-doc*" ,@syd-help-popup-options)
'("*cider-test-report*") '("*cider-test-report*")
'("*cider-error*")) '("*cider-error*")))
(defun syd-clojure-classpath-relative-file-name (file-name)
(when (and cider-mode (cider-nrepl-eval-session))
(let ((prefixes (-filter #'file-directory-p
(cider-classpath-entries))))
(cl-loop for classpath-entry in prefixes
for prefix = (file-name-as-directory classpath-entry)
when (string-prefix-p prefix file-name)
return (string-remove-prefix prefix file-name)))))
(add-to-list 'syd-insert-file-name-alist
`(,#'syd-clojure-classpath-relative-file-name
. "Classpath-relative")))
(use-package cider-mode (use-package cider-mode
:straight nil ; Part of `cider'. :straight nil ; Part of `cider'.
@@ -126,16 +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)
(dolist (x '(("p" . "babashka.process")
("fs" . "babashka.fs")))
(add-to-list 'cljr-magic-require-namespaces x)))
(provide 'syd/clojure) (provide 'syd/clojure)

View File

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

View File

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

View File

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

View File

@@ -1,14 +0,0 @@
;;; -*- lexical-binding: t -*-
(require 'syd/base)
(require 'syd/popups)
;; Nicer error messages, integrates with `lsp-mode'
(use-package flycheck
:custom ((flycheck-highlighting-mode nil))
:general
(:states '(motion normal)
"[ e" #'flycheck-previous-error
"] e" #'flycheck-next-error))
(provide 'syd/flycheck)

View File

@@ -12,9 +12,6 @@
(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)
@@ -23,10 +20,7 @@
(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

@@ -1,67 +0,0 @@
;; -*- lexical-binding: t; -*-
(require 'syd/base)
(require 'syd/handle)
(defun syd-haskell-open-repl ()
"Open a Haskell REPL."
(interactive)
(require 'inf-haskell)
(run-haskell))
(defun syd-haskell-evil-open-above ()
"Opens a line above the current, following Haskell-mode's indentation"
(interactive)
(evil-beginning-of-line)
(haskell-indentation-newline-and-indent)
(evil-previous-line)
(haskell-indentation-indent-line)
(evil-append-line nil))
(defun syd-haskell-evil-open-below ()
"Opens a line below the current, following Haskell-mode's indentation"
(interactive)
(evil-append-line nil)
(haskell-indentation-newline-and-indent))
(defun syd-haskell-hoogle-start-server ()
(interactive)
(haskell-hoogle-start-server)
(browse-url-xdg-open (format "http://localhost:%d"
haskell-hoogle-port-number))
(message "Hoogle started on localhost:%d" haskell-hoogle-port-number))
(use-package haskell-mode
:mode (("\\.l?hs'" . haskell-literate-mode)
("\\.hs'" . haskell-mode))
:custom (; Show errors in REPL, not popup buffers.
(haskell-interactive-popup-errors nil)
(haskell-process-suggest-remove-import-line t)
(haskell-process-auto-import-loaded-modules t))
:general
(:keymaps 'haskell-mode-map
:states '(normal visual motion emacs insert)
:major-modes t
:prefix syd-localleader-key
:non-normal-prefix syd-alt-localleader-key
"c" #'haskell-cabal-visit-file
"h s" #'syd-haskell-hoogle-start-server
"h q" #'haskell-hoogle-kill-server)
(:keymaps 'interactive-haskell-mode-map
:states '(normal insert)
"C-j" #'haskell-interactive-mode-history-next
"C-k" #'haskell-interactive-mode-history-previous)
(:keymaps 'haskell-mode-map
:states 'normal
[remap evil-open-above] #'syd-haskell-evil-open-above
[remap evil-open-below] #'syd-haskell-evil-open-below)
:config
(add-to-list 'completion-ignored-extensions ".hi"))
(use-package lsp-haskell
:defer t
:custom ((lsp-haskell-server-path "haskell-language-server"))
:init
(add-hook 'haskell-mode-hook #'lsp-deferred 'append)
(add-hook 'haskell-literate-mode-hook #'lsp-deferred 'append))
(provide 'syd/haskell)

View File

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

View File

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

View File

@@ -2,7 +2,6 @@
(require 'syd/base) (require 'syd/base)
(require 'syd/popups) (require 'syd/popups)
(require 'syd/handle)
(use-package lsp-mode (use-package lsp-mode
:init :init
@@ -36,12 +35,6 @@
(syd-push (syd-push
shackle-rules shackle-rules
`(("*lsp-help*" "*lsp-install*") `(("*lsp-help*" "*lsp-install*")
:select nil :size 0.42 :popup t :align bottom)) ,@syd-help-popup-options)))
(defun syd-lsp-handle-docs ()
(interactive)
(lsp-describe-thing-at-point)
(get-buffer "*lsp-help*"))
(syd-handle 'lsp-mode
:docs #'syd-lsp-handle-docs))
(provide 'syd/lsp) (provide 'syd/lsp)

View File

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

View File

@@ -80,8 +80,7 @@
: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

@@ -193,74 +193,4 @@ form."
(cons mode (intern (concat (match-string 1 s) "-ts-mode")))) (cons mode (intern (concat (match-string 1 s) "-ts-mode"))))
(error "Symbol `%c' is not a mode." mode)))) (error "Symbol `%c' is not a mode." mode))))
(defun syd--insert-file-name-annotation (descs)
(when descs
(let ((s (string-join descs ", ")))
(concat
" "
(propertize " " 'display `(space :align-to (- right ,(+ 1 (length s)))))
s))))
(defun syd-project-relative-file-name (file-name)
(file-relative-name file-name (project-root (project-current))))
(defvar syd-insert-file-name-alist
`((,#'syd-project-relative-file-name . "Project-relative")
(,#'file-relative-name . "File-relative")
(,#'identity . "Absolute"))
"List of pairs where each cons is a function mapping paths to paths
or nil, and each cons is a string description.")
(defun syd--evaluate-syd-insert-file-name-alist (path)
(cl-loop for (fn . lbl) in syd-insert-file-name-alist
for r = (funcall fn path)
when r
collect (cons r lbl)))
(defun syd-insert-file-name ()
(interactive)
(let* ((path (expand-file-name
(read-file-name "Path: " nil nil 'confirm)))
(choose-a-dir "... (choose a dir)")
(alts (cons `(,choose-a-dir)
(syd--evaluate-syd-insert-file-name-alist path)))
(choice
(completing-read
"Variant: "
(lambda (s p flag)
(pcase flag
('metadata
`(metadata
(annotation-function
. ,(lambda (s)
(let ((descs
(cl-loop for (p . lbl) in alts
when (equal p s)
collect lbl)))
(syd--insert-file-name-annotation
descs))))))
(_ (all-completions s (mapcar #'car alts) p)))))))
(if (equal choice choose-a-dir)
(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) (provide 'syd/prelude)

View File

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

View File

@@ -1,12 +0,0 @@
;; -*- lexical-binding: t; -*-
(require 'syd/base)
(use-package qbe-mode
:mode "\\.qbe\\'"
:straight (:type git
:host github
:repo "mbknust/qbe-mode")
:config
(add-hook 'qbe-mode-hook #'indent-tabs-mode))
(provide 'syd/qbe)

View File

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

View File

@@ -1,10 +0,0 @@
;;; -*- 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

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

View File

@@ -1,14 +0,0 @@
{ 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

@@ -1,38 +0,0 @@
{ 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

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

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;

View File

@@ -12,13 +12,6 @@ in {
enableDynamicTheming = false; 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 = { services.displayManager.dms-greeter = {
enable = true; enable = true;
compositor.name = assert config.sydnix.niri.enable; "niri"; compositor.name = assert config.sydnix.niri.enable; "niri";

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 = {};

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,11 @@ 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 ♥!!!!! appName = "GupHub"; # Name per my darling Colestar ♥
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,47 +53,6 @@ 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";
}; };
}; };
}; };

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

View File

@@ -3,51 +3,13 @@
let let
cfg = config.sydnix.gitea-actions-runner; cfg = config.sydnix.gitea-actions-runner;
container-name = "gitea-actions-runner";
gitea-actions-runner-uid = 991;
gitea-actions-runner-gid = 989;
token-file = config.sops.secrets.gitea-actions-runner-token.path; token-file = config.sops.secrets.gitea-actions-runner-token.path;
in { in {
options.sydnix.gitea-actions-runner = { options.sydnix.gitea-actions-runner = {
enable = lib.mkEnableOption "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 { config = lib.mkIf cfg.enable {
@@ -55,7 +17,7 @@ in {
sydnix.impermanence.directories = [ "/var/lib/gitea-actions-runner" ]; sydnix.impermanence.directories = [ "/var/lib/gitea-actions-runner" ];
containers."gitea-actions-runner" = { containers.${container-name} = {
autoStart = true; autoStart = true;
ephemeral = true; ephemeral = true;
@@ -73,9 +35,9 @@ in {
config = { config, lib, pkgs, ... }: { config = { config, lib, pkgs, ... }: {
system.stateVersion = "25.11"; system.stateVersion = "25.11";
services.gitea-actions-runner.instances.${cfg.instance-name} = { services.gitea-actions-runner.instances.sydpc = {
enable = true; enable = true;
name = cfg.instance-name; name = "sydpc";
url = "https://git.deertopia.net/"; url = "https://git.deertopia.net/";
tokenFile = token-file; tokenFile = token-file;
labels = [ "nixos:host" ]; labels = [ "nixos:host" ];
@@ -94,27 +56,23 @@ in {
# Disable dynamic user so runner state persists via bind mount # Disable dynamic user so runner state persists via bind mount
assertions = [{ assertions = [{
assertion = assertion = config.systemd.services.gitea-actions-runner-sydpc.enable;
config.systemd.services.gitea-actions-runner-sydpc.enable;
message = '' message = ''
Expected systemd service 'gitea-actions-runner-sydpc' is Expected systemd service 'gitea-actions-runner-sydpc' is not
not enabled the gitea-actions-runner NixOS module may enabled the gitea-actions-runner module may have changed
have changed its naming scheme. its naming scheme.
''; '';
}]; }];
systemd.services.gitea-actions-runner-sydpc.serviceConfig.DynamicUser systemd.services.gitea-actions-runner-sydpc.serviceConfig.DynamicUser
= lib.mkForce false; = lib.mkForce false;
users.users.gitea-actions-runner = {
users.users.${cfg.user.name} = { uid = gitea-actions-runner-uid;
uid = cfg.user.uid;
home = "/var/lib/gitea-actions-runner"; home = "/var/lib/gitea-actions-runner";
group = cfg.group.name; group = "gitea-actions-runner";
isSystemUser = true; isSystemUser = true;
createHome = true; createHome = true;
}; };
users.groups.gitea-actions-runner.gid = gitea-actions-runner-gid;
users.groups.gitea-actions-runner.gid = cfg.group.gid;
nix.settings.experimental-features = [ "nix-command" "flakes" ]; nix.settings.experimental-features = [ "nix-command" "flakes" ];
@@ -123,27 +81,23 @@ in {
nodejs nodejs
jq jq
attic-client attic-client
omnix
]; ];
}; };
}; };
# Needs to be outside of the container because container uses's # Needs to be outside of the container because container uses's
# the host's nix-daemon # the host's nix-daemon
nix.settings.trusted-users = [ nix.settings.trusted-users = [ "gitea-actions-runner" ];
cfg.user.name
];
# Matching user on host — the container's gitea-actions-runner UID # Matching user on host — the container's gitea-actions-runner UID must be
# must be recognized by the host's nix-daemon as trusted (shared # recognized by the host's nix-daemon as trusted (shared UID namespace)
# UID namespace) users.users.gitea-actions-runner = {
users.users.${cfg.user.name} = { uid = gitea-actions-runner-uid;
uid = cfg.user.uid;
home = "/var/lib/gitea-actions-runner"; home = "/var/lib/gitea-actions-runner";
group = cfg.group.name; group = "gitea-actions-runner";
isSystemUser = true; isSystemUser = true;
createHome = true; createHome = true;
}; };
users.groups.${cfg.group.name}.gid = cfg.group.gid; users.groups.gitea-actions-runner.gid = gitea-actions-runner-gid;
}; };
} }

View File

@@ -1,17 +0,0 @@
{ 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

@@ -22,13 +22,11 @@ in {
"https://nix-community.cachix.org" "https://nix-community.cachix.org"
"https://cache.nixos.org" "https://cache.nixos.org"
"https://cache.iog.io" "https://cache.iog.io"
"https://cache.zw3rk.com"
]; ];
trusted-public-keys = [ trusted-public-keys = [
(builtins.readFile ../../public-keys/deertopia-cache.pub.pem) (builtins.readFile ../../public-keys/deertopia-cache.pub.pem)
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
"hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" "hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="
"loony-tools:pr9m4BkM/5/eSTZlkQyRt57Jz7OMBxNSUiMC4FkcNfk="
]; ];
}; };
}; };

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

View File

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

View File

@@ -30,7 +30,6 @@ 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
@@ -51,7 +50,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: "2026-03-01T08:57:03Z"
mac: ENC[AES256_GCM,data:Y/7XSZtPlVPDV3eToYQ9MoAGF9nGq0sd0KU1VaR5duK1xbETULioQcpPvVk6HL1kPlUjnmR8RXfCKBC7EJ9P/UAMV2ySulLtD6daogCzF3qa2JSyXPuOyMuXMSjwCNcCyHgpaOrWz+7Zf9FU/1wQwVHeCDTf0sFHaX0xttFfHkg=,iv:7+zXPjeslh+z9hWhYXoUphpbg3Tpe4OHQEcUmetuiMM=,tag:LB0GuN+5TJxXyuvrrqOi7g==,type:str] mac: ENC[AES256_GCM,data:uNqk+x+nLgDUdHI5flUuXF/vGnkMpUUhdFfkOULm+bebkPL6PI5kJHV78GPs+aA9BPCmTvomgGe51zvyJFRcH3gBJ2bF5YfdC0ROrRbZS4KYIuZwrELf77zq73MbIFt//BTpDYK4cUC8CPRoAEwtoTG6lyHbxcAk4+B5w2NFfN8=,iv:rFaEaav1LHrhtKtiRfIqHTj5+cOBv3lC1UyqEvOoUsg=,tag:x/4n+rcQxd+neQGLcXa66g==,type:str]
unencrypted_suffix: _unencrypted unencrypted_suffix: _unencrypted
version: 3.12.1 version: 3.11.0

View File

@@ -18,12 +18,7 @@
]; ];
}; };
homeConfiguration = { config, lib, pkgs, host, ... }: homeConfiguration = { config, lib, pkgs, ... }: {
let on = hosts:
if builtins.isString hosts
then hosts == host
else builtins.elem host hosts;
in {
home.file.".ssh/id_ed25519".source = home.file.".ssh/id_ed25519".source =
config.lib.file.mkOutOfStoreSymlink config.lib.file.mkOutOfStoreSymlink
"/persist/private-keys/ssh/msyds@sydpc"; "/persist/private-keys/ssh/msyds@sydpc";
@@ -34,30 +29,24 @@
../../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 = on "sydpc"; steam.enable = true;
zotero.enable = true; zotero.enable = true;
slippi.enable = on "sydpc"; openutau.enable = true;
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;
prism-launcher.enable = on "sydpc";
flatpak.enable = on "sydpc";
drawing-tablet.enable = on "sydpc";
easyeffects.enable = on "sydpc";
ryujinx.enable = on "sydpc";
haskell.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;
@@ -70,19 +59,14 @@
fcitx5.enable = true; fcitx5.enable = true;
anki.enable = true; anki.enable = true;
mumble.enable = true; mumble.enable = true;
rnote.enable = on "sydpc";
}; };
users.msyds = { users.msyds = {
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 = on "fruitbook";
zathura.enable = on "sydpc";
}; };
}; };

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