From 86953ea92592527b6d1c4a5289942ed533ab56fd Mon Sep 17 00:00:00 2001 From: Lucy Hochkamp Date: Thu, 28 Nov 2024 23:40:16 +0100 Subject: [PATCH] mew --- flake.lock | 458 +++++++++--------- flake.nix | 29 +- hm-modules/cli.nix | 3 +- hm-modules/eww/eww.scss | 0 hm-modules/eww/eww.yuck | 39 ++ hm-modules/helix/default.nix | 2 +- hm-modules/nushell/default.nix | 151 +++--- hosts/picard/default.nix | 10 +- hosts/theseus/builtin.kbd | 4 +- hosts/theseus/default.nix | 105 +++- hosts/theseus/kanshi.nix | 55 --- hosts/theseus/kmonad.nix | 23 +- hosts/theseus/razer.kbd | 89 ++++ hosts/theseus/river.nix | 242 +++++---- hosts/theseus/swaycfg.nix | 200 ++++---- hosts/theseus/wired.ron | 302 ++++++++++++ nixos-modules/services/caddy/custom-caddy.nix | 4 +- 17 files changed, 1110 insertions(+), 606 deletions(-) create mode 100644 hm-modules/eww/eww.scss create mode 100644 hm-modules/eww/eww.yuck delete mode 100644 hosts/theseus/kanshi.nix create mode 100644 hosts/theseus/razer.kbd create mode 100644 hosts/theseus/wired.ron diff --git a/flake.lock b/flake.lock index 7f1d0f5a..95dc2863 100644 --- a/flake.lock +++ b/flake.lock @@ -39,21 +39,6 @@ "type": "github" } }, - "crane_2": { - "locked": { - "lastModified": 1730060262, - "narHash": "sha256-RMgSVkZ9H03sxC+Vh4jxtLTCzSjPq18UWpiM0gq6shQ=", - "owner": "ipetkov", - "repo": "crane", - "rev": "498d9f122c413ee1154e8131ace5a35a80d8fa76", - "type": "github" - }, - "original": { - "owner": "ipetkov", - "repo": "crane", - "type": "github" - } - }, "darwin": { "inputs": { "nixpkgs": [ @@ -83,11 +68,11 @@ ] }, "locked": { - "lastModified": 1730878299, - "narHash": "sha256-0VIz/3PKaylSIoRdOE07kkT1tMXgqaybXrfIS2Xz+so=", + "lastModified": 1732603785, + "narHash": "sha256-AEjWTJwOmSnVYsSJCojKgoguGfFfwel6z/6ud6UFMU8=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "98e7dba87238e4fa4eac609dc44f07dab40661c4", + "rev": "6ab87b7c84d4ee873e937108c4ff80c015a40c7a", "type": "github" }, "original": { @@ -97,6 +82,24 @@ "type": "github" } }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1727826117, + "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems_2" @@ -120,11 +123,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1709126324, - "narHash": "sha256-q6EQdSeUZOG26WelxqkmR7kArjgWCdw5sfJVHPH/7j8=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "d465f4819400de7c8d874d50b982301f28a84605", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -138,11 +141,11 @@ "systems": "systems_4" }, "locked": { - "lastModified": 1705309234, - "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", + "lastModified": 1685518550, + "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26", + "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", "type": "github" }, "original": { @@ -152,33 +155,15 @@ } }, "flake-utils_4": { - "inputs": { - "systems": "systems_5" - }, - "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_5": { "inputs": { "systems": "systems_6" }, "locked": { - "lastModified": 1685518550, - "narHash": "sha256-o2d0KcvaXzTrPRIo0kOLV0/QXHhDQ5DTi+OxcjO8xqY=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "a1720a10a6cfe8234c0e93907ffe81be440f4cef", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -202,6 +187,40 @@ "type": "github" } }, + "freetype2": { + "flake": false, + "locked": { + "lastModified": 1687587065, + "narHash": "sha256-+Fh+/k+NWL5Ow9sDLtp8Cv/8rLNA1oByQQCIQS/bysY=", + "owner": "wez", + "repo": "freetype2", + "rev": "e4586d960f339cf75e2e0b34aee30a0ed8353c0d", + "type": "github" + }, + "original": { + "owner": "wez", + "repo": "freetype2", + "rev": "e4586d960f339cf75e2e0b34aee30a0ed8353c0d", + "type": "github" + } + }, + "harfbuzz": { + "flake": false, + "locked": { + "lastModified": 1711722720, + "narHash": "sha256-GdxcAPx5QyniSHPAN1ih28AD9JLUPR0ItqW9JEsl3pU=", + "owner": "harfbuzz", + "repo": "harfbuzz", + "rev": "63973005bc07aba599b47fdd4cf788647b601ccd", + "type": "github" + }, + "original": { + "owner": "harfbuzz", + "ref": "8.4.0", + "repo": "harfbuzz", + "type": "github" + } + }, "helix": { "inputs": { "crane": "crane", @@ -210,11 +229,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1730790589, - "narHash": "sha256-xJ6bQ4VmdTB7A+dMbmOMaZ8a6erB6rkZkB+yzqD7gd4=", + "lastModified": 1732735497, + "narHash": "sha256-qaiRKT4T+kRAMwfFf1fIJ5pwCcaLp2dfNpT65C4uWuE=", "owner": "helix-editor", "repo": "helix", - "rev": "b53dafe326d51b7f64a1c52379e3d4150cd2991e", + "rev": "e1d1a5c5a12127ded88dfcf66dd74aad1650977c", "type": "github" }, "original": { @@ -251,49 +270,27 @@ ] }, "locked": { - "lastModified": 1726989464, - "narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=", + "lastModified": 1732466619, + "narHash": "sha256-T1e5oceypZu3Q8vzICjv1X/sGs9XfJRMW5OuXHgpB3c=", "owner": "nix-community", "repo": "home-manager", - "rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176", + "rev": "f3111f62a23451114433888902a55cf0692b408d", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-24.05", + "ref": "release-24.11", "repo": "home-manager", "type": "github" } }, - "imab": { - "inputs": { - "flake-utils": "flake-utils_2", - "nixpkgs": [ - "nixpkgs" - ], - "rust-overlay": "rust-overlay_2" - }, - "locked": { - "lastModified": 1726550136, - "narHash": "sha256-bwo8XR6y27gsSddgQIsMqKE3GB34kXH+jQhuDwo7C1s=", - "owner": "ulyssa", - "repo": "iamb", - "rev": "9a9bdb4862646da3b03490ab250feb62df7ea468", - "type": "github" - }, - "original": { - "owner": "ulyssa", - "repo": "iamb", - "type": "github" - } - }, "impermanence": { "locked": { - "lastModified": 1730403150, - "narHash": "sha256-W1FH5aJ/GpRCOA7DXT/sJHFpa5r8sq2qAUncWwRZ3Gg=", + "lastModified": 1731242966, + "narHash": "sha256-B3C3JLbGw0FtLSWCjBxU961gLNv+BOOBC6WvstKLYMw=", "owner": "nix-community", "repo": "impermanence", - "rev": "0d09341beeaa2367bac5d718df1404bf2ce45e6f", + "rev": "3ed3f0eaae9fcc0a8331e77e9319c8a4abd8a71a", "type": "github" }, "original": { @@ -302,29 +299,6 @@ "type": "github" } }, - "ironbar": { - "inputs": { - "crane": "crane_2", - "naersk": "naersk", - "nixpkgs": [ - "nixpkgs" - ], - "rust-overlay": "rust-overlay_3" - }, - "locked": { - "lastModified": 1730812834, - "narHash": "sha256-pZ8PMNXrI5yvPWjFy2CW0740DwQZuKkEdNeJd/lfnFc=", - "owner": "JakeStanger", - "repo": "ironbar", - "rev": "e53a9067b03de002a07f85e5302e3774e53521f2", - "type": "github" - }, - "original": { - "owner": "JakeStanger", - "repo": "ironbar", - "type": "github" - } - }, "kmonad": { "inputs": { "nixpkgs": [ @@ -333,39 +307,55 @@ }, "locked": { "dir": "nix", - "lastModified": 1730793763, - "narHash": "sha256-m9agq+UNNwAovZj+WS5/1Yc1xoExG4A3SqmVP/e0r9Q=", - "ref": "refs/heads/master", - "rev": "606c488862df6c3be1e4e670f6e1e06008c84732", + "lastModified": 1732049875, + "narHash": "sha256-uJZ8YkouJj1PxEgfH6DtG2lrDUQrtT2YC0S7MYpsdVM=", + "ref": "feat-tap-overlap", + "rev": "e49f7cf18bce17642bb096dd5c2332c8d77068fa", "revCount": 875, - "submodules": true, "type": "git", - "url": "https://github.com/kmonad/kmonad" + "url": "https://github.com/jokesper/kmonad" }, "original": { "dir": "nix", - "submodules": true, + "ref": "feat-tap-overlap", "type": "git", - "url": "https://github.com/kmonad/kmonad" + "url": "https://github.com/jokesper/kmonad" + } + }, + "libpng": { + "flake": false, + "locked": { + "lastModified": 1549245649, + "narHash": "sha256-1+cRp0Ungme/OGfc9kGJbklYIWAFxk8Il1M+NV4KSgw=", + "owner": "glennrp", + "repo": "libpng", + "rev": "8439534daa1d3a5705ba92e653eda9251246dd61", + "type": "github" + }, + "original": { + "owner": "glennrp", + "repo": "libpng", + "rev": "8439534daa1d3a5705ba92e653eda9251246dd61", + "type": "github" } }, "lix": { "flake": false, "locked": { - "lastModified": 1723503926, - "narHash": "sha256-Rosl9iA9MybF5Bud4BTAQ9adbY81aGmPfV8dDBGl34s=", - "rev": "bcaeb6388b8916ac6d1736e3aa2b13313e6a6bd2", + "lastModified": 1729298361, + "narHash": "sha256-hiGtfzxFkDc9TSYsb96Whg0vnqBVV7CUxyscZNhed0U=", + "rev": "ad9d06f7838a25beec425ff406fe68721fef73be", "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/bcaeb6388b8916ac6d1736e3aa2b13313e6a6bd2.tar.gz?rev=bcaeb6388b8916ac6d1736e3aa2b13313e6a6bd2" + "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/ad9d06f7838a25beec425ff406fe68721fef73be.tar.gz?rev=ad9d06f7838a25beec425ff406fe68721fef73be" }, "original": { "type": "tarball", - "url": "https://git.lix.systems/lix-project/lix/archive/2.91.0.tar.gz" + "url": "https://git.lix.systems/lix-project/lix/archive/2.91.1.tar.gz" } }, "lix-module": { "inputs": { - "flake-utils": "flake-utils_4", + "flake-utils": "flake-utils_2", "flakey-profile": "flakey-profile", "lix": "lix", "nixpkgs": [ @@ -373,36 +363,32 @@ ] }, "locked": { - "lastModified": 1723510904, - "narHash": "sha256-zNW/rqNJwhq2lYmQf19wJerRuNimjhxHKmzrWWFJYts=", - "rev": "622a2253a071a1fb97a4d3c8103a91114acc1140", + "lastModified": 1729360442, + "narHash": "sha256-6U0CyPycIBc04hbYy2hBINnVso58n/ZyywY2BD3hu+s=", + "rev": "9098ac95768f7006d7e070b88bae76939f6034e6", "type": "tarball", - "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/622a2253a071a1fb97a4d3c8103a91114acc1140.tar.gz?rev=622a2253a071a1fb97a4d3c8103a91114acc1140" + "url": "https://git.lix.systems/api/v1/repos/lix-project/nixos-module/archive/9098ac95768f7006d7e070b88bae76939f6034e6.tar.gz?rev=9098ac95768f7006d7e070b88bae76939f6034e6" }, "original": { "type": "tarball", - "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.0.tar.gz" + "url": "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz" } }, "lolpizza": { "inputs": { - "nixpkgs": [ - "nixpkgs" - ], + "nixpkgs": "nixpkgs_2", "pnpm2nix": "pnpm2nix" }, "locked": { "lastModified": 1729255849, "narHash": "sha256-P9Dw2s1LL0xluiJyRMXz+STza75UYTvS3oegpE3S3zs=", - "owner": "thexyno", - "repo": "lolpizza2", + "path": "/nix/store/v48mn8cw1hgswjifw9nin7v73mdvh3aq-source", "rev": "6989a9dc030ce99589758d0cea682c3011a6ea31", - "type": "github" + "type": "path" }, "original": { - "owner": "thexyno", - "repo": "lolpizza2", - "type": "github" + "id": "lolpizza", + "type": "indirect" } }, "miro": { @@ -421,31 +407,13 @@ "type": "github" } }, - "naersk": { - "inputs": { - "nixpkgs": "nixpkgs_3" - }, - "locked": { - "lastModified": 1721727458, - "narHash": "sha256-r/xppY958gmZ4oTfLiHN0ZGuQ+RSTijDblVgVLFi1mw=", - "owner": "nix-community", - "repo": "naersk", - "rev": "3fb418eaf352498f6b6c30592e3beb63df42ef11", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "naersk", - "type": "github" - } - }, "nixos-hardware": { "locked": { - "lastModified": 1730919458, - "narHash": "sha256-yMO0T0QJlmT/x4HEyvrCyigGrdYfIXX3e5gWqB64wLg=", + "lastModified": 1732483221, + "narHash": "sha256-kF6rDeCshoCgmQz+7uiuPdREVFuzhIorGOoPXMalL2U=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "e1cc1f6483393634aee94514186d21a4871e78d7", + "rev": "45348ad6fb8ac0e8415f6e5e96efe47dd7f39405", "type": "github" }, "original": { @@ -487,13 +455,25 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1727825735, + "narHash": "sha256-0xHYkMkeLVQAMa7gvkddbPqpxph+hDzdu1XdGPJR+Os=", + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://github.com/NixOS/nixpkgs/archive/fb192fec7cc7a4c26d51779e9bab07ce6fa5597a.tar.gz" + } + }, "nixpkgs-master": { "locked": { - "lastModified": 1730930401, - "narHash": "sha256-jESb/dY9BvYw1kttkMGhiYgkH6G/jvpbeIDpLau0onc=", + "lastModified": 1732832104, + "narHash": "sha256-V+2uq4ziEDhUkfYZoxO9gofEeXvo/cVhHOJ51bSfBhk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2c9461ecb17d46e9a3b7947a8d923f17351bfe92", + "rev": "02fe29395df8e5571291ebcc6114f94dd33f722b", "type": "github" }, "original": { @@ -505,46 +485,48 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1706487304, - "narHash": "sha256-LE8lVX28MV2jWJsidW13D2qrHU/RUUONendL2Q/WlJg=", + "lastModified": 1718437845, + "narHash": "sha256-ZT7Oc1g4I4pHVGGjQFnewFVDRLH5cIZhEzODLz9YXeY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "90f456026d284c22b3e3497be980b2e47d0b28ac", + "rev": "752c634c09ceb50c45e751f8791cb45cb3d46c9e", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } }, "nixpkgs_3": { "locked": { - "lastModified": 1730272153, - "narHash": "sha256-B5WRZYsRlJgwVHIV6DvidFN7VX7Fg9uuwkRW9Ha8z+w=", + "lastModified": 1732350895, + "narHash": "sha256-GcOQbOgmwlsRhpLGSwZJwLbo3pu9ochMETuRSS1xpz4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2d2a9ddbe3f2c00747398f3dc9b05f7f2ebb0f53", + "rev": "0c582677378f2d9ffcb01490af2f2c678dcb29d3", "type": "github" }, "original": { - "id": "nixpkgs", - "type": "indirect" + "owner": "NixOS", + "ref": "nixos-24.11", + "repo": "nixpkgs", + "type": "github" } }, "nixpkgs_4": { "locked": { - "lastModified": 1730741070, - "narHash": "sha256-edm8WG19kWozJ/GqyYx2VjW99EdhjKwbY3ZwdlPAAlo=", + "lastModified": 1728538411, + "narHash": "sha256-f0SBJz1eZ2yOuKUr5CA9BHULGXVSn6miBuUWdTyhUhU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d063c1dd113c91ab27959ba540c0d9753409edf3", + "rev": "b69de56fac8c2b6f8fd27f2eca01dcda8e0a4221", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-24.05", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", "type": "github" } @@ -567,7 +549,7 @@ }, "pnpm2nix": { "inputs": { - "flake-utils": "flake-utils_5", + "flake-utils": "flake-utils_3", "nixpkgs": [ "lolpizza", "nixpkgs" @@ -593,21 +575,20 @@ "darwin": "darwin_2", "helix": "helix", "home-manager": "home-manager_2", - "imab": "imab", "impermanence": "impermanence", - "ironbar": "ironbar", "kmonad": "kmonad", "lix-module": "lix-module", "lolpizza": "lolpizza", "miro": "miro", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_3", "nixpkgs-darwin": "nixpkgs-darwin", "nixpkgs-master": "nixpkgs-master", "pandoc-latex-template": "pandoc-latex-template", "spoons": "spoons", - "swaymonad": "swaymonad", - "utils": "utils_2", + "utils": "utils", + "wezterm": "wezterm", + "wired": "wired", "x": "x", "xynoblog": "xynoblog" } @@ -635,15 +616,17 @@ }, "rust-overlay_2": { "inputs": { - "flake-utils": "flake-utils_3", - "nixpkgs": "nixpkgs_2" + "nixpkgs": [ + "wezterm", + "nixpkgs" + ] }, "locked": { - "lastModified": 1709863839, - "narHash": "sha256-QpEL5FmZNi2By3sKZY55wGniFXc4wEn9PQczlE8TG0o=", + "lastModified": 1729477859, + "narHash": "sha256-r0VyeJxy4O4CgTB/PNtfQft9fPfN1VuGvnZiCxDArvg=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "e5ab9ee98f479081ad971473d2bc13c59e9fbc0a", + "rev": "ada8266712449c4c0e6ee6fcbc442b3c217c79e1", "type": "github" }, "original": { @@ -654,10 +637,7 @@ }, "rust-overlay_3": { "inputs": { - "nixpkgs": [ - "ironbar", - "nixpkgs" - ] + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1730341826, @@ -689,27 +669,6 @@ "type": "github" } }, - "swaymonad": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "utils": "utils" - }, - "locked": { - "lastModified": 1708895016, - "narHash": "sha256-yM2sbiGM5wZ6O1yZ9FOfrXki9qrfcwPLs28a5FlcO4k=", - "owner": "nicolasavru", - "repo": "swaymonad", - "rev": "bd9b94ae756a09c185a2b2b0323b7008c19c859b", - "type": "github" - }, - "original": { - "owner": "nicolasavru", - "repo": "swaymonad", - "type": "github" - } - }, "systems": { "locked": { "lastModified": 1681028828, @@ -800,28 +759,16 @@ "type": "github" } }, - "systems_7": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "utils": { + "inputs": { + "systems": "systems_5" + }, "locked": { - "lastModified": 1653893745, - "narHash": "sha256-0jntwV3Z8//YwuOjzhV2sgJJPt+HY6KhU7VZUL0fKZQ=", + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "owner": "numtide", "repo": "flake-utils", - "rev": "1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "type": "github" }, "original": { @@ -830,21 +777,53 @@ "type": "github" } }, - "utils_2": { + "wezterm": { "inputs": { - "systems": "systems_7" + "flake-utils": "flake-utils_4", + "freetype2": "freetype2", + "harfbuzz": "harfbuzz", + "libpng": "libpng", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay_2", + "zlib": "zlib" }, "locked": { - "lastModified": 1726560853, - "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", + "dir": "nix", + "lastModified": 1732816683, + "narHash": "sha256-m2gGLcmUFdmgUFkIkTofB+8WoS91UTF+0B91WNc9M+k=", + "owner": "wez", + "repo": "wezterm", + "rev": "a7ff718c7c182d62d7c848187da1655e58b8ecd8", "type": "github" }, "original": { - "owner": "numtide", - "repo": "flake-utils", + "dir": "nix", + "owner": "wez", + "repo": "wezterm", + "type": "github" + } + }, + "wired": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ], + "rust-overlay": "rust-overlay_3" + }, + "locked": { + "lastModified": 1730615238, + "narHash": "sha256-u/ZGtyEUvAkFOBgLo2YldOx0GKjE3/esWpWruRD376E=", + "owner": "Toqozz", + "repo": "wired-notify", + "rev": "1632418aa15889343028261663e81d8b5595860e", + "type": "github" + }, + "original": { + "owner": "Toqozz", + "repo": "wired-notify", "type": "github" } }, @@ -875,11 +854,11 @@ ] }, "locked": { - "lastModified": 1718741395, - "narHash": "sha256-t0wSw2l52mq1plaetggmDD9h10DuyLEuQZ93q11eD/8=", + "lastModified": 1732833558, + "narHash": "sha256-KpAsXBkNJTNBHQuwqJkMSCsVWhbj9K7LLY7emgU6f4Q=", "owner": "thexyno", "repo": "blog", - "rev": "912bb9b95ae05182d63cb1cd2cba147a4ce93f0e", + "rev": "b020543dcb823c7be01a7aca9f1748a517ece659", "type": "github" }, "original": { @@ -887,6 +866,23 @@ "repo": "blog", "type": "github" } + }, + "zlib": { + "flake": false, + "locked": { + "lastModified": 1484501380, + "narHash": "sha256-j5b6aki1ztrzfCqu8y729sPar8GpyQWIrajdzpJC+ww=", + "owner": "madler", + "repo": "zlib", + "rev": "cacf7f1d4e3d44d871b605da3b647f07d718623f", + "type": "github" + }, + "original": { + "owner": "madler", + "ref": "v1.2.11", + "repo": "zlib", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 2a851b6f..eb55067c 100644 --- a/flake.nix +++ b/flake.nix @@ -5,43 +5,36 @@ utils.url = "github:numtide/flake-utils"; ## nixos/nix-darwin dependencies - nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.05"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11"; nixpkgs-darwin.url = "github:NixOS/nixpkgs/nixpkgs-24.05-darwin"; nixpkgs-master.url = "github:NixOS/nixpkgs/master"; agenix.url = "github:ryantm/agenix/main"; agenix.inputs.nixpkgs.follows = "nixpkgs"; - home-manager.url = "github:nix-community/home-manager/release-24.05"; + home-manager.url = "github:nix-community/home-manager/release-24.11"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; impermanence.url = "github:nix-community/impermanence"; nixos-hardware.url = "github:NixOS/nixos-hardware/master"; darwin.url = "github:lnl7/nix-darwin/master"; darwin.inputs.nixpkgs.follows = "nixpkgs"; lix-module = { - url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.0.tar.gz"; + url = "https://git.lix.systems/lix-project/nixos-module/archive/2.91.1-1.tar.gz"; inputs.nixpkgs.follows = "nixpkgs"; }; # programs xynoblog.url = "github:thexyno/blog"; xynoblog.inputs.nixpkgs.follows = "nixpkgs"; - lolpizza.url = "github:thexyno/lolpizza2"; - lolpizza.inputs.nixpkgs.follows = "nixpkgs"; x.url = "github:thexyno/x"; x.inputs.nixpkgs.follows = "nixpkgs"; - imab.url = "github:ulyssa/iamb"; - imab.inputs.nixpkgs.follows = "nixpkgs"; helix.url = "github:helix-editor/helix"; - ironbar = { - url = "github:JakeStanger/ironbar"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - swaymonad = { - url = "github:nicolasavru/swaymonad"; - inputs.nixpkgs.follows = "nixpkgs"; # not mandatory but recommended - }; - kmonad = { + wezterm.url = "github:wez/wezterm?dir=nix"; + wezterm.inputs.nixpkgs.follows = "nixpkgs"; + wired.inputs.nixpkgs.follows = "nixpkgs"; + wired.url = "github:Toqozz/wired-notify"; - url = "git+https://github.com/kmonad/kmonad?submodules=1&dir=nix"; + + kmonad = { + url = "git+https://github.com/jokesper/kmonad?dir=nix&ref=feat-tap-overlap"; inputs.nixpkgs.follows = "nixpkgs"; }; @@ -102,6 +95,7 @@ , lolpizza , lix-module , kmonad + , wired , x , ... }: @@ -113,6 +107,7 @@ overlays = [ self.overlays.default + wired.overlays.default ]; genPkgsWithOverlays = system: import nixpkgs { inherit system overlays; diff --git a/hm-modules/cli.nix b/hm-modules/cli.nix index e75a817a..3e84d2aa 100644 --- a/hm-modules/cli.nix +++ b/hm-modules/cli.nix @@ -61,7 +61,8 @@ user.name = "Lucy Hochkamp"; user.email = "git@xyno.systems"; - user.signingKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIuwQJY0H/fdu1UmGXAut7VfcvAk2Dm78tJpkyyv2in2"; + user.signingKey = # TODO: don't hardcode a computer + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID/oMAi5jyQsNohfhcSH2ItisTpBGB0WtYTVxJYKKqhj"; # theseus # Set default "git pull" behaviour so it doesn't try to default to # either "git fetch; git merge" (default) or "git fetch; git rebase". diff --git a/hm-modules/eww/eww.scss b/hm-modules/eww/eww.scss new file mode 100644 index 00000000..e69de29b diff --git a/hm-modules/eww/eww.yuck b/hm-modules/eww/eww.yuck new file mode 100644 index 00000000..95c92386 --- /dev/null +++ b/hm-modules/eww/eww.yuck @@ -0,0 +1,39 @@ +(defwindow bar + :monitor 0 + :hexpand false + :vexpand false + :geometry (geometry :anchor "top left" :x 0 :y 0 :width "100%") + ; :reserve (struts :distance "10px" :side "top") + (bar)) + +(defwidget bar + (centerbox :orientation "h" + (left) + (center) + (right))) + +(defwidget left [] + :halign "start" + (workspaces) + ) + +(defwidget workspaces [] + (box :class "workspaces" + :orientation "h" + :space-evenly true + :spacing 5 + (button :onclick "wmctrl -s 0" 1) + (button :onclick "wmctrl -s 1" 2) + (button :onclick "wmctrl -s 2" 3) + (button :onclick "wmctrl -s 3" 4) + (button :onclick "wmctrl -s 4" 5) + (button :onclick "wmctrl -s 5" 6) + (button :onclick "wmctrl -s 6" 7) + (button :onclick "wmctrl -s 7" 8) + (button :onclick "wmctrl -s 8" 9))) + +(defwidget center [] + :haligh "center" + (window_name)) + +(defwidget ) diff --git a/hm-modules/helix/default.nix b/hm-modules/helix/default.nix index 71b89349..c5699f49 100644 --- a/hm-modules/helix/default.nix +++ b/hm-modules/helix/default.nix @@ -18,7 +18,7 @@ in nodePackages_latest.vscode-langservers-extracted ## python ruff-lsp - nodePackages_latest.pyright + # nodePackages_latest.pyright ]; programs.helix = { package = inputs.helix.packages.${pkgs.system}.default; diff --git a/hm-modules/nushell/default.nix b/hm-modules/nushell/default.nix index 8f0d6767..b83a8d17 100644 --- a/hm-modules/nushell/default.nix +++ b/hm-modules/nushell/default.nix @@ -5,6 +5,7 @@ let in { options.ragon.nushell.enable = lib.mkOption { default = false; }; + options.ragon.nushell.isNixOS = lib.mkOption { default = false; }; config = lib.mkIf cfg.enable { programs.direnv = { enable = true; @@ -13,82 +14,86 @@ in programs.nushell = { enable = true; extraConfig = '' - let carapace_completer = {|spans: list| - carapace $spans.0 nushell ...$spans - | from json - | if ($in | default [] | where value =~ '^-.*ERR$' | is-empty) { $in } else { null } - } - let external_completer = {|spans| - let expanded_alias = scope aliases - | where name == $spans.0 - | get -i 0.expansion + let carapace_completer = {|spans: list| + carapace $spans.0 nushell ...$spans + | from json + | if ($in | default [] | where value =~ '^-.*ERR$' | is-empty) { $in } else { null } + } + let external_completer = {|spans| + let expanded_alias = scope aliases + | where name == $spans.0 + | get -i 0.expansion - let spans = if $expanded_alias != null { - $spans - | skip 1 - | prepend ($expanded_alias | split row ' ' | take 1) - } else { - $spans - } + let spans = if $expanded_alias != null { + $spans + | skip 1 + | prepend ($expanded_alias | split row ' ' | take 1) + } else { + $spans + } - match $spans.0 { - # carapace completions are incorrect for nu - # nu => $fish_completer - # fish completes commits and branch names in a nicer way - # git => $fish_completer - # carapace doesn't have completions for asdf - # asdf => $fish_completer - # use zoxide completions for zoxide commands - # __zoxide_z | __zoxide_zi => $zoxide_completer - _ => $carapace_completer - } | do $in $spans - } - $env.config = { - edit_mode: vi - show_banner: false, - completions: { - case_sensitive: false # case-sensitive completions - quick: true # set to false to prevent auto-selecting completions - partial: true # set to false to prevent partial filling of the prompt - algorithm: "fuzzy" # prefix or fuzzy - external: { - # set to false to prevent nushell looking into $env.PATH to find more suggestions - enable: true - # set to lower can improve completion performance at the cost of omitting some options - max_results: 100 - completer: $external_completer # check 'carapace_completer' + match $spans.0 { + # carapace completions are incorrect for nu + # nu => $fish_completer + # fish completes commits and branch names in a nicer way + # git => $fish_completer + # carapace doesn't have completions for asdf + # asdf => $fish_completer + # use zoxide completions for zoxide commands + # __zoxide_z | __zoxide_zi => $zoxide_completer + _ => $carapace_completer + } | do $in $spans + } + $env.config = { + edit_mode: vi + show_banner: false, + completions: { + case_sensitive: false # case-sensitive completions + quick: true # set to false to prevent auto-selecting completions + partial: true # set to false to prevent partial filling of the prompt + algorithm: "fuzzy" # prefix or fuzzy + external: { + # set to false to prevent nushell looking into $env.PATH to find more suggestions + enable: true + # set to lower can improve completion performance at the cost of omitting some options + max_results: 100 + completer: $external_completer # check 'carapace_completer' + } } - } - } - $env.EDITOR = "hx" - $env.VISUAL = "hx" - $env.NIX_REMOTE = "daemon" - $env.NIX_USER_PROFILE_DIR = $"/nix/var/nix/profiles/per-user/($env.USER)" - $env.NIX_PROFILES = $"/nix/var/nix/profiles/default:($env.HOME)/.nix-profile" - $env.NIX_SSL_CERT_FILE = "/etc/ssl/certs/ca-certificates.crt" - $env.NIX_PATH = "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixpkgs:/nix/var/nix/profiles/per-user/root/channels" - $env.PATH = ($env.PATH | - split row (char esep) | - append /usr/bin/env | - append $"($env.HOME)/.nix-profile/bin" | - append "/nix/var/nix/profiles/default/bin" | - append $"/etc/profiles/per-user/($env.USER)/bin" | - append "/run/current-system/sw/bin" | - append "/opt/homebrew/bin" | - append $"($env.HOME)/.cargo/bin" | - append $"($env.HOME)/.local/bin" - ) - alias no = open - alias open = ^open - alias l = ls -al - alias ll = ls -l - alias ga = git add - alias gaa = git add -A - alias gd = git diff - alias gc = git commit - alias gp = git push - alias gpl = git pull - alias ytl = yt-dlp -f "bv*+mergeall[vcodec=none]" --audio-multistreams + } + $env.EDITOR = "hx" + $env.VISUAL = "hx" + alias no = open + alias open = ^open + alias l = ls -al + alias ll = ls -l + alias ga = git add + alias gaa = git add -A + alias gd = git diff + alias gc = git commit + alias gp = git push + alias gpl = git pull + alias ytl = yt-dlp -f "bv*+mergeall[vcodec=none]" --audio-multistreams + alias conf = cd ~/proj/nixos-config + ${(if !cfg.isNixOS then '' + + $env.NIX_REMOTE = "daemon" + $env.NIX_USER_PROFILE_DIR = $"/nix/var/nix/profiles/per-user/($env.USER)" + $env.NIX_PROFILES = $"/nix/var/nix/profiles/default:($env.HOME)/.nix-profile" + $env.NIX_SSL_CERT_FILE = "/etc/ssl/certs/ca-certificates.crt" + $env.NIX_PATH = "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixpkgs:/nix/var/nix/profiles/per-user/root/channels" + $env.PATH = ($env.PATH | + split row (char esep) | + append /usr/bin/env | + append $"($env.HOME)/.nix-profile/bin" | + append "/nix/var/nix/profiles/default/bin" | + append $"/etc/profiles/per-user/($env.USER)/bin" | + append "/run/current-system/sw/bin" | + append "/opt/homebrew/bin" | + append $"($env.HOME)/.cargo/bin" | + append $"($env.HOME)/.local/bin" + ) + '' else "")} ''; shellAliases = { vi = "hx"; diff --git a/hosts/picard/default.nix b/hosts/picard/default.nix index 64788fcb..f8309483 100644 --- a/hosts/picard/default.nix +++ b/hosts/picard/default.nix @@ -66,6 +66,7 @@ logFormat = "level INFO"; enable = true; globalConfig = '' + email ssl@xyno.systems acme_dns desec { token "{$TOKEN}" } @@ -75,10 +76,6 @@ handle @8081 { reverse_proxy http://[::1]:8081 } - @lolpizza host lolpizza.ragon.xyz - handle @lolpizza { - reverse_proxy http://[::1]${config.services.lolpizza2.listen} - } @files host files.ragon.xyz handle @files { encode zstd gzip @@ -159,7 +156,7 @@ } @sso host sso.xyno.systems handle @sso { - reverse_proxy http://127.0.0.1:${toString config.services.authelia.instances.main.settings.server.port} + reverse_proxy http://127.0.0.1:9091 } @git host git.xyno.systems handle @git { @@ -177,9 +174,6 @@ virtualHosts."xyno.systems".extraConfig = '' redir https://xyno.space{uri} ''; - virtualHosts."czi.dating".extraConfig = '' - redir https://foss-ag.de{uri} - ''; }; services.forgejo = { diff --git a/hosts/theseus/builtin.kbd b/hosts/theseus/builtin.kbd index 224fad43..f43cd4f5 100644 --- a/hosts/theseus/builtin.kbd +++ b/hosts/theseus/builtin.kbd @@ -45,8 +45,8 @@ (deflayer colemak-dh esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 grv 1 2 3 4 5 6 7 8 9 0 - = bspc - tab (tap-hold-next-release 200 q @num) w f p b j l u y (tap-hold-next-release 200 ; @num) [ ] - esc (tap-hold-next-release 200 a lctrl) (tap-hold-next-release 200 r ralt) (tap-hold-next-release 200 s lmet) t g m n (tap-hold-next-release 200 e rmet) (tap-hold-next-release 200 i lalt) (tap-hold-next-release 200 o rctrl) ' \\ ret + tab (tap-hold-next-release 200 :grace 15 q @num) w f p b j l u y (tap-hold-next-release 200 :grace 15 ; @num) [ ] + esc (tap-hold-next-release 200 :grace 15 a lctrl) (tap-hold-next-release 200 :grace 15 r ralt) (tap-hold-next-release 200 :grace 15 s lmet) t g m n (tap-hold-next-release 200 :grace 15 e rmet) (tap-hold-next-release 200 :grace 15 i lalt) (tap-hold-next-release 200 :grace 15 o rctrl) ' \\ ret lsft z x c d v 102d k h , . / rsft lctl lmet lalt spc ralt rmet _ _ ) diff --git a/hosts/theseus/default.nix b/hosts/theseus/default.nix index 55e1f60f..6ff6cb71 100644 --- a/hosts/theseus/default.nix +++ b/hosts/theseus/default.nix @@ -18,7 +18,19 @@ programs.fuse.userAllowOther = true; programs.sway.enable = true; programs.nix-ld.enable = true; + programs.gamescope.enable = true; + services.gnome.sushi.enable = true; + services.gnome.gnome-settings-daemon.enable = true; + services.gvfs.enable = true; + services.logind.extraConfig = '' + # supspend on pw button press + HandlePowerKey=suspend + ''; + programs.kdeconnect.enable = true; services.power-profiles-daemon.enable = true; + services.printing.enable = true; + services.printing.drivers = with pkgs; [ gutenprint hplip splix ]; + services.avahi.enable = true; programs.sway.extraSessionCommands = '' export NIXOS_OZONE_WL=1 ''; @@ -26,6 +38,7 @@ wlr.enable = true; enable = true; extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; + configPackages = [ pkgs.xdg-desktop-portal-gtk ]; }; # start bt hardware.bluetooth.enable = true; @@ -35,23 +48,39 @@ programs.light.enable = true; networking.networkmanager.enable = true; networking.networkmanager.wifi.backend = "iwd"; - services.displayManager.sddm.enable = true; - services.displayManager.sddm.wayland.enable = true; - # services.displayManager.defaultSession = "river"; + services.xserver.displayManager.gdm.enable = true; + services.xserver.enable = true; + services.xserver.displayManager.gdm.wayland = true; + programs.seahorse.enable = true; + services.gnome.gnome-keyring.enable = true; + services.gnome.gnome-online-accounts.enable = true; + services.gnome.core-utilities.enable = true; + services.displayManager.defaultSession = "river"; + programs.river.enable = true; services.upower.enable = true; users.users.ragon.extraGroups = [ "networkmanager" "video" ]; - programs.kde-pim = { enable = true; kmail = true; kontact = true; merkuro = true; }; environment.systemPackages = [ pkgs.qt6.qtwayland ]; - fonts.packages = [ - pkgs.nerdfonts + fonts.packages = with pkgs; [ + nerdfonts + cantarell-fonts + dejavu_fonts + source-code-pro # Default monospace font in 3.32 + source-sans ]; services.pipewire = { enable = true; pulse.enable = true; }; services.fwupd.enable = true; + + programs.ssh.startAgent = true; + + programs.evolution.enable = true; + services.gnome.evolution-data-server.enable = true; + services.flatpak.enable = true; + programs.steam = { enable = true; remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play @@ -68,22 +97,26 @@ ./swaycfg.nix ./work.nix ./river.nix - ./kanshi.nix ../../hm-modules/files.nix + inputs.wired.homeManagerModules.default ]; ragon.helix.enable = true; ragon.nushell.enable = true; + ragon.nushell.isNixOS = true; ragon.zellij.enable = true; services.gnome-keyring.enable = true; home.file.".config/wezterm/wezterm.lua".text = '' local wezterm = require 'wezterm' + + -- This will hold the configuration. local config = wezterm.config_builder() - config.default_prog = { 'zellij', 'attach', '-c' } + config.default_prog = { 'nu' } config.hide_tab_bar_if_only_one_tab = true config.max_fps = 144 + config.font = wezterm.font 'Source Code Pro' -- This is where you actually apply your config choices @@ -95,15 +128,41 @@ ''; home.packages = with pkgs; [ - wezterm + inputs.wezterm.packages.${pkgs.system}.default element-desktop # this is not a place of honor + discord # shitcord unstable.signal-desktop - plexamp + unstable.feishin + unstable.plexamp firefox - gnome.seahorse obsidian thunderbird + orca-slicer + diebahn + vlc + dolphin + # unstable.kicad + unstable.devenv + lutris + libsecret + mixxx + unstable.harsh + + + broot ]; + home.file.".zshrc".text = lib.mkForce '' + exec nu + ''; + programs.nushell.extraConfig = '' + harsh l + ''; + + services.kdeconnect = { + enable = true; + indicator = true; + package = pkgs.kdePackages.kdeconnect-kde; + }; @@ -131,11 +190,35 @@ # }; programs.home-manager.enable = true; home.stateVersion = "24.05"; + programs.borgmatic = { + enable = true; + backups.system = { + location.sourceDirectories = [ "/persistent" ]; + location.repositories = [{ path = "ssh://ragon@ds9//backups/theseus"; }]; + location.extraConfig.exclude_if_present = [ ".nobackup" ]; + storage.encryptionPasscommand = "${pkgs.libsecret}/bin/secret-tool lookup borg-repository system"; + location.extraConfig.before_backup = [ "notify-send -u low -a borgmatic borgmatic \"starting backup\" -t 10000" ]; + location.extraConfig.after_backup = [ "notify-send -u low -a borgmatic borgmatic \"finished backup\" -t 10000" ]; + location.extraConfig.on_error = [ "notify-send -u critical -a borgmatic borgmatic \"backup failed\"" ]; + location.extraConfig.ssh_command = "ssh -i /home/ragon/.ssh/id_ed25519"; + retention = { + keepHourly = 24; + keepDaily = 7; + keepWeekly = 4; + keepMonthly = 12; + keepYearly = 2; + }; + }; + }; + services.borgmatic.enable = true; }; ragon = { user.enable = true; persist.enable = true; + persist.extraDirectories = [ + "/var/lib/bluetooth" + ]; services = { ssh.enable = true; tailscale.enable = true; diff --git a/hosts/theseus/kanshi.nix b/hosts/theseus/kanshi.nix deleted file mode 100644 index dcf14b90..00000000 --- a/hosts/theseus/kanshi.nix +++ /dev/null @@ -1,55 +0,0 @@ -{ pkgs, inputs, options, lib, ... }: -let - # TODO: have a list of workspaces and operate on that - moveWs = output: workspaceStart: workspaceEnd: map - (x: ''${pkgs.sway}/bin/swaymsg workspace ${toString x}:${toString x} ouptut "${output}", workspace ${toString x}:${toString x}, move workspace to "${output}"'') - (lib.range workspaceStart workspaceEnd); -in -{ - services.kanshi = { - enable = true; - settings = [ - { - profile.name = "undocked"; - profile.outputs = [ - { - criteria = "eDP-1"; - adaptiveSync = true; - scale = 1.5; - mode = "2880x1920@120Hz"; - } - ]; - } - { - profile.name = "docked_home"; - profile.outputs = [ - { - criteria = "eDP-1"; - adaptiveSync = true; - scale = 2.0; - mode = "2880x1920@120Hz"; - } - { - criteria = "Dell Inc. Dell S2716DG #ASM2LrMXJiXd"; - adaptiveSync = true; - position = "1440,0"; - scale = 1.0; - mode = "2560x1440@119.998Hz"; - } - { - criteria = "Acer Technologies KG271U TATEE0018511"; - adaptiveSync = true; - position = "4000,0"; - scale = 1.0; - mode = "2560x1440@74.924Hz"; - } - ]; - profile.exec = lib.flatten [ - (moveWs "eDP-1" 1 3) - (moveWs "Dell Inc. Dell S2716DG #ASM2LrMXJiXd" 4 7) - (moveWs "Acer Technologies KG271U TATEE0018511" 8 10) - ]; - } - ]; - }; -} diff --git a/hosts/theseus/kmonad.nix b/hosts/theseus/kmonad.nix index 9aee59b9..85c87093 100644 --- a/hosts/theseus/kmonad.nix +++ b/hosts/theseus/kmonad.nix @@ -1,12 +1,17 @@ { pkgs, lib, ... }: { services.kmonad = { - enable = true; - keyboards = { - builtin= { - device = "/dev/input/by-path/platform-i8042-serio-0-event-kbd"; - config = builtins.readFile ./builtin.kbd; - }; - }; -}; - + enable = true; + keyboards = { + builtin = { + device = "/dev/input/by-path/platform-i8042-serio-0-event-kbd"; + config = builtins.readFile ./builtin.kbd; + }; + razerbuero = { + device = "/dev/input/by-id/usb-Razer_Razer_BlackWidow_Tournament_Edition_Chroma-event-kbd"; + config = builtins.readFile ./razer.kbd; + + }; + }; + }; + } diff --git a/hosts/theseus/razer.kbd b/hosts/theseus/razer.kbd new file mode 100644 index 00000000..9f5dac99 --- /dev/null +++ b/hosts/theseus/razer.kbd @@ -0,0 +1,89 @@ +(defcfg + ;; ** For Linux ** + input (device-file "/dev/input/by-id/usb-Razer_Razer_BlackWidow_Tournament_Edition_Chroma-event-kbd") + ;; input (device-file "/dev/input/by-path/platform-i8042-serio-0-event-kbd") + output (uinput-sink "KMonad output razer") + + ;; ** For Windows ** + ;; input (low-level-hook) + ;; output (send-event-sink) + + ;; ** For MacOS ** + ;; input (iokit-name "my-keyboard-product-string") + ;; output (kext) + + fallthrough true +) + +(defsrc + esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 + grv 1 2 3 4 5 6 7 8 9 0 - = bspc + tab q w e r t y u i o p [ ] + caps a s d f g h j k l ; ' \ ret + lsft 102d z x c v b n m , . / rsft + lctl lmet lalt spc ralt rmet cmp rctl +) + +(defalias + ext (layer-toggle extend) ;; Bind 'ext' to the Extend Layer +) + +(defalias + cpy C-c + pst C-v + cut C-x + udo C-z + all C-a + fnd C-f + bk Back + fw Forward +) +(defalias + num (layer-toggle num) +) + +(deflayer colemak-dh + esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 + grv 1 2 3 4 5 6 7 8 9 0 - = bspc + tab (tap-hold-next-release 200 q @num) w f p b j l u y (tap-hold-next-release 200 ; @num) [ ] + esc (tap-hold-next-release 200 a lctrl) (tap-hold-next-release 200 r ralt) (tap-hold-next-release 200 s lmet) t g m n (tap-hold-next-release 200 e rmet) (tap-hold-next-release 200 i lalt) (tap-hold-next-release 200 o rctrl) ' \\ ret + lsft z x c d v 102d k h , . / rsft + lctl lmet lalt spc ralt rmet _ _ +) +(deflayer num + esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 + grv 1 2 3 4 5 6 7 8 9 0 - = bspc + tab q w f p b j l u y ; [ ] + esc 1 2 3 4 5 6 7 8 9 0 ' \\ ret + lsft z x c d v 102d k h , . / rsft + lctl lmet lalt spc ralt rmet _ _ +) + +(deflayer colemak-dhk + esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 + grv 1 2 3 4 5 6 7 8 9 0 - = bspc + tab q w f p b j l u y ; [ ] + @ext a r s t g k n e i o ' \\ ret + lsft z x c d v 102d m h , . / rsft + lctl lmet lalt spc ralt rmet _ _ +) + +(deflayer extend + _ play rewind previoussong nextsong ejectcd refresh brdn brup www mail prog1 prog2 + _ f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 _ + _ esc @bk @fnd @fw ins pgup home up end menu prnt slck + _ lalt lmet lsft lctl ralt pgdn lft down rght del caps _ _ + _ @udo @cut @cpy tab @pst _ pgdn bks lsft lctl comp _ + _ _ _ ret _ _ _ _ +) + + +(deflayer empty + _ _ _ _ _ _ _ _ _ _ _ _ _ + _ _ _ _ _ _ _ _ _ _ _ _ _ _ + _ _ _ _ _ _ _ _ _ _ _ _ _ + _ _ _ _ _ _ _ _ _ _ _ _ _ _ + _ _ _ _ _ _ _ _ _ _ _ _ _ + _ _ _ _ _ _ _ _ +) + diff --git a/hosts/theseus/river.nix b/hosts/theseus/river.nix index c491c5c4..5f7a2e51 100644 --- a/hosts/theseus/river.nix +++ b/hosts/theseus/river.nix @@ -1,16 +1,29 @@ -{ lib, pkgs, config, inputs, ... }: { +{ lib, pkgs, config, inputs, ... }: +let + # backgroundImage = builtins.fetchurl { + # url = "https://gruvbox-wallpapers.pages.dev/wallpapers/anime/wallhaven-2e2xyx.jpg"; + # sha256 = "1zw1a8x20bp9mn9lx18mxzgzvzi02ss57r4q1lc9f14fsmzphnlq"; + # }; + backgroundImage = "/home/ragon/Pictures/background.jpg"; +in +{ home.packages = with pkgs; [ - kanshi + unstable.shikane helvum + swaylock + swayidle + swaybg + wlopm brightnessctl dconf pwvucontrol + networkmanagerapplet + libnotify ]; dconf = { settings = { "org/gnome/desktop/interface" = { - gtk-theme = "Adwaita-dark"; color-scheme = "prefer-dark"; }; }; @@ -19,10 +32,7 @@ gtk = { enable = true; gtk4.extraConfig.gtk-application-prefer-dark-theme = 1; - theme = { - name = "Adwaita-dark"; - package = pkgs.gnome.gnome-themes-extra; - }; + gtk3.extraConfig.gtk-application-prefer-dark-theme = 1; }; qt = { @@ -307,13 +317,17 @@ label:focus { layer = "top"; position = "top"; height = 15; - modules-left = [ "river/tags" "river/layout" ]; + modules-left = [ "river/tags" "river/layout" "tray"]; modules-center = [ "river/window" ]; - modules-right = [ "tray" "wireplumber" "upower" "backlight" "cpu" "temperature" "memory" "disk" "network" "clock" ]; + modules-right = [ "wireplumber" "upower" "backlight" "cpu" "temperature" "memory" "disk" "custom/tailscale" "network" "clock" ]; + "river/window" = { + max-length = 40; + }; wireplumber = { "format" = "{volume}% {icon}"; "format-muted" = ""; "on-click" = "${pkgs.pwvucontrol}/bin/pwvucontrol"; + "on-right-click" = "${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; "format-icons" = [ "" "" "" ]; }; "backlight" = { @@ -325,7 +339,7 @@ label:focus { }; "cpu" = { "interval" = 10; - "format" = "{}% "; + "format" = "{:0.0f}% "; "max-length" = 10; }; "temperature" = { @@ -344,6 +358,15 @@ label:focus { unit = "GB"; path = "/persistent"; }; + "custom/tailscale" = { + exec = pkgs.writeScript "tailscaleWaybar.sh" '' + #!${pkgs.bash}/bin/bash + TAILNET=$(${pkgs.tailscale}/bin/tailscale status --json | ${pkgs.jq}/bin/jq -j '.MagicDNSSuffix') + + echo "''${''${TAILNET%.ts.net}:(-15)}" + ''; + interval = 30; + }; "network" = { "format" = "{ifname}"; "format-wifi" = "{essid} ({signalStrength}%) "; @@ -364,97 +387,116 @@ label:focus { xwayland.enable = true; settings = { map = { - normal = { - "Super+Shift Space" = "spawn 'rofi -show drun'"; - "Super+Shift Return" = "spawn 'wezterm'"; - "Super Q" = "close"; - "Super J" = "focus-view next"; - "Super K" = "focus-view previous"; - "Super Up" = "focus-view next"; - "Super Down" = "focus-view previous"; - "Super+Shift J" = "swap next"; - "Super+Shift K" = "swap previous"; - "Super+Shift Up" = "swap next"; - "Super+Shift Down" = "swap previous"; - "Super Period" = "focus-output right"; - "Super Comma" = "focus-output left"; - "Super+Control Period" = "send-to-output right"; - "Super+Control Comma" = "send-to-output left"; - "Super Return" = "zoom"; - "Super H" = ''send-layout-cmd rivertile "main-ratio -0.05"''; - "Super L" = ''send-layout-cmd rivertile "main-ratio +0.05"''; - "Super Left" = ''send-layout-cmd rivertile "main-ratio -0.05"''; - "Super Right" = ''send-layout-cmd rivertile "main-ratio +0.05"''; - "Super+Shift H" = ''send-layout-cmd rivertile "main-count -1"''; - "Super+Shift L" = ''send-layout-cmd rivertile "main-count +1"''; - "Super+Shift Left" = ''send-layout-cmd rivertile main-count -1"''; - "Super+Shift Right" = ''send-layout-cmd rivertile main-count +1"''; - # Super+Alt+{H,J,K,L} to move views - "Super+Alt H" = "move left 100"; - "Super+Alt J" = "move down 100"; - "Super+Alt K" = "move up 100"; - "Super+Alt L" = "move right 100"; + normal = + let + scrn = pkgs.writeScript "scrn.sh" '' + #!${pkgs.bash}/bin/bash + IMG_FILE=~/Images/screenshots/scrn-$(date +\"%Y-%m-%d-%H-%M-%S\").png + ${pkgs.grim}/bin/grim $IMG_FILE + ${pkgs.wl-clipboard}/bin/wl-copy < $IMG_FILE + ${pkgs.libnotify}/bin/notify-send -i $IMG_FILE -e -t 10000 "Screenshot Saved" $IMG_FILE + ''; + slurpscrn = pkgs.writeScript "scurpscrn.sh" '' + #!${pkgs.bash}/bin/bash + IMG_FILE=~/Images/screenshots/scrn-$(date +\"%Y-%m-%d-%H-%M-%S\").png + ${pkgs.slurp}/bin/slurp | ${pkgs.grim}/bin/grim -g - $IMG_FILE + ${pkgs.wl-clipboard}/bin/wl-copy < $IMG_FILE + ${pkgs.libnotify}/bin/notify-send -i $IMG_FILE -e -t 10000 "Screenshot Saved" $IMG_FILE + ''; + in + { + "Super+Alt 4" = "spawn '${slurpscrn}'"; + "Super+Alt 1" = "spawn '${scrn}'"; + "Super+Shift Space" = "spawn 'rofi -show drun'"; + "Super+Shift Return" = "spawn wezterm"; + "Super Q" = "close"; + "Super J" = "focus-view next"; + "Super K" = "focus-view previous"; + "Super Up" = "focus-view next"; + "Super Down" = "focus-view previous"; + "Super+Shift J" = "swap next"; + "Super+Shift K" = "swap previous"; + "Super+Shift Up" = "swap next"; + "Super+Shift Down" = "swap previous"; + "Super Period" = "focus-output right"; + "Super Comma" = "focus-output left"; + "Super+Control Period" = "send-to-output -current-tags right"; + "Super+Control Comma" = "send-to-output -current-tags left"; + "Super Return" = "zoom"; + "Super H" = ''send-layout-cmd rivertile "main-ratio -0.05"''; + "Super L" = ''send-layout-cmd rivertile "main-ratio +0.05"''; + "Super Left" = ''send-layout-cmd rivertile "main-ratio -0.05"''; + "Super Right" = ''send-layout-cmd rivertile "main-ratio +0.05"''; + "Super+Shift H" = ''send-layout-cmd rivertile "main-count -1"''; + "Super+Shift L" = ''send-layout-cmd rivertile "main-count +1"''; + "Super+Shift Left" = ''send-layout-cmd rivertile main-count -1"''; + "Super+Shift Right" = ''send-layout-cmd rivertile main-count +1"''; + # Super+Alt+{H,J,K,L} to move views + "Super+Alt H" = "move left 100"; + "Super+Alt J" = "move down 100"; + "Super+Alt K" = "move up 100"; + "Super+Alt L" = "move right 100"; - # Super+Alt+Control+{H,J,K,L} to snap views to screen edges - "Super+Alt+Control H" = "snap left"; - "Super+Alt+Control J" = "snap down"; - "Super+Alt+Control K" = "snap up"; - "Super+Alt+Control L" = "snap right"; + # Super+Alt+Control+{H,J,K,L} to snap views to screen edges + "Super+Alt+Control H" = "snap left"; + "Super+Alt+Control J" = "snap down"; + "Super+Alt+Control K" = "snap up"; + "Super+Alt+Control L" = "snap right"; - # Super+Alt+Shift+{H,J,K,L} to resize views - "Super+Alt+Shift H" = "resize horizontal -100"; - "Super+Alt+Shift J" = "resize vertical 100"; - "Super+Alt+Shift K" = "resize vertical -100"; - "Super+Alt+Shift L" = "resize horizontal 100"; + # Super+Alt+Shift+{H,J,K,L} to resize views + "Super+Alt+Shift H" = "resize horizontal -100"; + "Super+Alt+Shift J" = "resize vertical 100"; + "Super+Alt+Shift K" = "resize vertical -100"; + "Super+Alt+Shift L" = "resize horizontal 100"; - } // (lib.zipAttrs (map - (x_int: - let - pow = n: i: - if i == 1 then n - else if i == 0 then 1 - else n * pow n (i - 1); - tags = toString (pow 2 (x_int - 1)); - x = toString x_int; + } // (lib.zipAttrs (map + (x_int: + let + pow = n: i: + if i == 1 then n + else if i == 0 then 1 + else n * pow n (i - 1); + tags = toString (pow 2 (x_int - 1)); + x = toString x_int; - in - { - "Super ${x}" = "set-focused-tags ${tags}"; - "Super+Shift ${x}" = "set-view-tags ${tags}"; - "Super+Control ${x}" = "toggle-focused-tags ${tags}"; - "Super+Shift+Control ${x}" = "toggle-view-tags ${tags}"; - } - ) - (lib.range 1 9))) - // { - "Super 0" = "set-focused-tags 4294967295"; # $(((1 << 32) - 1)) - "Super+Shift 0" = "set-view-tags 4294967295"; # $(((1 << 32) - 1)) - # Super+Space to toggle float - "Super Space" = "toggle-float"; + in + { + "Super ${x}" = "set-focused-tags ${tags}"; + "Super+Shift ${x}" = "set-view-tags ${tags}"; + "Super+Control ${x}" = "toggle-focused-tags ${tags}"; + "Super+Shift+Control ${x}" = "toggle-view-tags ${tags}"; + } + ) + (lib.range 1 9))) + // { + "Super 0" = "set-focused-tags 4294967295"; # $(((1 << 32) - 1)) + "Super+Shift 0" = "set-view-tags 4294967295"; # $(((1 << 32) - 1)) + # Super+Space to toggle float + "Super Space" = "toggle-float"; - # Super+F to toggle fullscreen - "Super F" = "toggle-fullscreen"; + # Super+F to toggle fullscreen + "Super F" = "toggle-fullscreen"; - # Super+{Up,Right,Down,Left} to change layout orientation - "Super Up" = ''send-layout-cmd rivertile "main-location top"''; - "Super Right" = ''send-layout-cmd rivertile "main-location right"''; - "Super Down" = ''send-layout-cmd rivertile "main-location bottom"''; - "Super Left" = ''send-layout-cmd rivertile "main-location left"''; - # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer) - "None XF86AudioRaiseVolume" = "spawn 'pamixer -i 5'"; - "None XF86AudioLowerVolume" = "spawn 'pamixer -d 5'"; - "None XF86AudioMute" = "spawn 'pamixer --toggle-mute'"; + # Super+{Up,Right,Down,Left} to change layout orientation + "Super Up" = ''send-layout-cmd rivertile "main-location top"''; + "Super Right" = ''send-layout-cmd rivertile "main-location right"''; + "Super Down" = ''send-layout-cmd rivertile "main-location bottom"''; + "Super Left" = ''send-layout-cmd rivertile "main-location left"''; + # Control pulse audio volume with pamixer (https://github.com/cdemoulins/pamixer) + "None XF86AudioRaiseVolume" = "spawn 'pamixer -i 5'"; + "None XF86AudioLowerVolume" = "spawn 'pamixer -d 5'"; + "None XF86AudioMute" = "spawn 'pamixer --toggle-mute'"; - # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl) - "None XF86AudioMedia" = "spawn 'playerctl play-pause'"; - "None XF86AudioPlay" = "spawn 'playerctl play-pause'"; - "None XF86AudioPrev" = "spawn 'playerctl previous'"; - "None XF86AudioNext" = "spawn 'playerctl next'"; + # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl) + "None XF86AudioMedia" = "spawn 'playerctl play-pause'"; + "None XF86AudioPlay" = "spawn 'playerctl play-pause'"; + "None XF86AudioPrev" = "spawn 'playerctl previous'"; + "None XF86AudioNext" = "spawn 'playerctl next'"; - # Control screen backlight brightness with brightnessctl (https://github.com/Hummer12007/brightnessctl) - "None XF86MonBrightnessUp" = "spawn 'brightnessctl set +5%'"; - "None XF86MonBrightnessDown" = "spawn 'brightnessctl set 5%-'"; - } + # Control screen backlight brightness with brightnessctl (https://github.com/Hummer12007/brightnessctl) + "None XF86MonBrightnessUp" = "spawn 'brightnessctl set +5%'"; + "None XF86MonBrightnessDown" = "spawn 'brightnessctl set 5%-'"; + } ; }; map-pointer.normal = { @@ -473,15 +515,23 @@ label:focus { input = { "pointer-2362-628-PIXA3854:00_093A:0274_Touchpad" = "tap enabled"; }; + keyboard-layout = "eu"; xcursor-theme = "Adwaita"; default-layout = "rivertile"; }; extraConfig = '' rivertile -view-padding 3 -outer-padding 3 & swayidle \ - timeout 300 'exec swaylock -c 000000' \ - before-sleep 'exec swaylock -c 000000' & - kanshi & + timeout 300 'swaylock -i ${backgroundImage}' \ + timeout 600 'wlopm --off \*' resume 'wlopm --on \*' \ + before-sleep 'swaylock -i ${backgroundImage}' & + swaybg -i ${backgroundImage} & + shikane & + nm-applet & ''; }; + services.wired = { + enable = true; + config = ./wired.ron; + }; } diff --git a/hosts/theseus/swaycfg.nix b/hosts/theseus/swaycfg.nix index d3bc8044..b20226f5 100644 --- a/hosts/theseus/swaycfg.nix +++ b/hosts/theseus/swaycfg.nix @@ -1,119 +1,119 @@ { pkgs, config, inputs, ... }: { - imports = [ inputs.ironbar.homeManagerModules.default ]; + # imports = [ inputs.ironbar.homeManagerModules.default ]; home.packages = with pkgs; [ slurp grim - mako + # mako firefox # light installed via programs.light playerctl jq rofi - inputs.swaymonad.defaultPackage.x86_64-linux + # inputs.swaymonad.defaultPackage.x86_64-linux swaylock ]; - programs.ironbar = { - enable = true; - style = '' - @define-color color_bg #282828; - @define-color color_bg_dark #3c3836; - @define-color color_border #665c54; - @define-color color_border_active #7c6f64; - @define-color color_text #ebdbb2; - @define-color color_urgent #cc241d; - * { - font-family: Source Sans Pro Nerd Font, sans-serif; - font-size: 15px; - border: none; - border-radius: 0; - } + # programs.ironbar = { + # enable = false; + # style = '' + # @define-color color_bg #282828; + # @define-color color_bg_dark #3c3836; + # @define-color color_border #665c54; + # @define-color color_border_active #7c6f64; + # @define-color color_text #ebdbb2; + # @define-color color_urgent #cc241d; + # * { + # font-family: Source Sans Pro Nerd Font, sans-serif; + # font-size: 15px; + # border: none; + # border-radius: 0; + # } - box, menubar, button { - background-color: @color_bg; - background-image: none; - box-shadow: none; - } + # box, menubar, button { + # background-color: @color_bg; + # background-image: none; + # box-shadow: none; + # } - button, label { - color: @color_text; - } + # button, label { + # color: @color_text; + # } - button:hover { - background-color: @color_bg_dark; - } + # button:hover { + # background-color: @color_bg_dark; + # } - scale trough { - min-width: 1px; - min-height: 2px; - } + # scale trough { + # min-width: 1px; + # min-height: 2px; + # } - /* #bar { - border-top: 1px solid @color_border; - } */ + # /* #bar { + # border-top: 1px solid @color_border; + # } */ - .popup { - border: 1px solid @color_border; - padding: 1em; - } - ''; - config = { - position = "top"; - height = 20; - start = [ - { type = "workspaces"; } - { type = "sway_mode"; } - ]; - center = [ - { - type = "focused"; - show_icon = true; - show_title = true; - icon_size = 10; - truncate = "end"; - } - ]; - end = [ - { type = "music"; player_name = "mpris"; } - { - type = "volume"; - icons = { - volume_high = "󰕾"; - volume_medium = "󰖀"; - volume_low = "󰕿"; - muted = "󰝟"; - }; - format = "{icon} {percentage}%"; - max_volume = 100; - } - { - type = "upower"; - format = "{icon} {percentage}%"; - } - { - type = "sys_info"; - format = [ - " {cpu_percent}%" - " {temp_c:k10temp-Tctl}°C" - " {memory_used}/{memory_total}GB" - "󰋊 {disk_used:/persistent}/{disk_total:/persistent}GB" - "󰓢 {net_down:wlan0}/{net_up:wlan0} Mbps" - # "󰖡 {load_average:1} | {load_average:5} | {load_average:15}" - ]; - interval = { - "cpu" = 1; - "disks" = 300; - "memory" = 30; - "networks" = 3; - "temps" = 5; - }; - } - { - type = "clock"; - format = "%Y-%m-%dT%H:%M:%S%z"; - } - ]; - }; - }; + # .popup { + # border: 1px solid @color_border; + # padding: 1em; + # } + # ''; + # config = { + # position = "top"; + # height = 20; + # start = [ + # { type = "workspaces"; } + # { type = "sway_mode"; } + # ]; + # center = [ + # { + # type = "focused"; + # show_icon = true; + # show_title = true; + # icon_size = 10; + # truncate = "end"; + # } + # ]; + # end = [ + # { type = "music"; player_name = "mpris"; } + # { + # type = "volume"; + # icons = { + # volume_high = "󰕾"; + # volume_medium = "󰖀"; + # volume_low = "󰕿"; + # muted = "󰝟"; + # }; + # format = "{icon} {percentage}%"; + # max_volume = 100; + # } + # { + # type = "upower"; + # format = "{icon} {percentage}%"; + # } + # { + # type = "sys_info"; + # format = [ + # " {cpu_percent}%" + # " {temp_c:k10temp-Tctl}°C" + # " {memory_used}/{memory_total}GB" + # "󰋊 {disk_used:/persistent}/{disk_total:/persistent}GB" + # "󰓢 {net_down:wlan0}/{net_up:wlan0} Mbps" + # # "󰖡 {load_average:1} | {load_average:5} | {load_average:15}" + # ]; + # interval = { + # "cpu" = 1; + # "disks" = 300; + # "memory" = 30; + # "networks" = 3; + # "temps" = 5; + # }; + # } + # { + # type = "clock"; + # format = "%Y-%m-%dT%H:%M:%S%z"; + # } + # ]; + # }; + # }; # TODO: change to home-manager module somehow home.file.".config/sway/config".text = '' @@ -239,7 +239,7 @@ } bindsym $mod+Shift+e mode "$mode_system" - exec_always "pkill -f 'python3? .+/swaymonad.py'; swaymonad" + # exec_always "pkill -f 'python3? .+/swaymonad.py'; swaymonad" bindsym $mod+Return nop promote_window bindsym $mod+j nop focus_next_window diff --git a/hosts/theseus/wired.ron b/hosts/theseus/wired.ron new file mode 100644 index 00000000..002840bc --- /dev/null +++ b/hosts/theseus/wired.ron @@ -0,0 +1,302 @@ +( + // Maximum number of notifications to show at any one time. + // A value of 0 means that there is no limit. + max_notifications: 0, + + // The default timeout, in miliseconds, for notifications that don't have an initial timeout set. + // 1000ms = 1s. + timeout: 10000, + + // How should we handle `expire_timeout` values of zero? + // `UseDefault`: use `timeout`. + // `NeverExpire`: show this notification forever. + // The latter is technically correct according to the notification spec: https://specifications.freedesktop.org/notification-spec/notification-spec-latest.html + zero_timeout_behavior: NeverExpire, + + // `poll_interval` decides decides how often (in milliseconds) Wired checks events, + // draws notifications (if necessary) -- the update loop while any notification is present. + // Note that when no notifications are present, Wired polls at `idle_poll_interval` instead. + // 16ms ~= 60hz / 7ms ~= 144hz. + poll_interval: 16, + + // The interval at which wired updates when no notifications/windows are present. + //idle_poll_interval: 500, + + // Wired will pause notifications if you are idle (no mouse or keyboard input) for longer than + // `idle_threshold` seconds. + // Note that notifications will not be automatically unpaused on wake, and will need to be manually + // cleared, unless `unpause_on_input` is set to true. + // Also note that no distinction is made between manually paused and idle paused notifications. + // If `idle_threshold` is not specified, the behavior will be disabled entirely. + //idle_threshold: 3600, + + // Notifications will spawn paused, and have to be manually unpaused or cleared by the user, + // unless `unpause_on_input` is also set. + //notifications_spawn_paused: false, + + // Unpause notifications when we receive any input after being idle for longer than 1 second. + // Note that no distinction is made between manually paused notifications and idle paused/spawned notifications. + //unpause_on_input: false, + + // Enable/disable replacement functionality. + // If this is disabled, replacement requests will just send a new notification. + // E.g., with replacing_enabled: true, Pidgin will only show the latest message from each contact, + // instead of sending a new one for each message. + // Default: true + //replacing_enabled: true, + + // Whether a notification should reset its timeout when it is replaced. + // No effect if replacing_enabled is set to false. + // Default: false + //replacing_resets_timeout: false, + + // Some apps/programs close notifications on their own by sending a request to dbus. + // Sometimes this is not desired. + // Default: true + //closing_enabled: true, + + // How many notifications are kept in history. + // Each notification is roughly 256 bytes (excluding buffers!), so there's some math to do here. + // Default: 100 + //history_length: 100, + + // When a `NotificationBlock` has monitorr: -1 (i.e. should follow active monitor), then what input + // should we use to determine the active monitor? + // Options: Mouse, Window + // Default: Mouse + //focus_follows: Mouse, + + // Enable printing notification data to a file. + // Useful for scripting purposes. + // The data is written as JSON. + // Default: None + //print_to_file: "/tmp/wired.log", + + // Minimum window width and height. This is used to create the base rect that the notification + // grows within. + // The notification window will never be smaller than this. + // A value of 1 means that the window will generally always resize with notification, unless + // you have a 1x1 pixel notification... + // Generally, you shouldn't need to set this. + min_window_width: 325, + //min_window_height: 1, + + // Trim whitespace in received notification text, since some clients like to send whitespace, which we usually don't actually want. + //trim_whitespace: true, + + // Enable/disable debug rendering. + debug: false, + debug_color: Color(r: 0.0, g: 1.0, b: 0.0, a: 1.0), // Primary color for debug rectangles. + debug_color_alt: Color(r: 1.0, g: 0.0, b: 0.0, a: 1.0), // Secondary color for debug rectangles. + + layout_blocks: [ + + // Layout 1, when an image is present. + ( + name: "root", + parent: "", + hook: Hook(parent_anchor: TR, self_anchor: TR), + offset: Vec2(x: -15, y: 15), + //render_criteria: [HintImage], + // https://github.com/Toqozz/wired-notify/wiki/NotificationBlock + params: NotificationBlock(( + monitor: 0, + border_width: 2.0, + border_rounding: 0.0, + background_color: Color(hex: "#11111b"), + border_color: Color(hex: "#cba6f7"), + border_color_low: Color(hex: "#89b4fa"), + border_color_critical: Color(hex: "#f38ba8"), + border_color_paused: Color(hex: "#f9e2af"), + + gap: Vec2(x: 0.0, y: 10), + notification_hook: Hook(parent_anchor: BR, self_anchor: TR), + )), + ), + + ( + name: "image", + parent: "root", + hook: Hook(parent_anchor: ML, self_anchor: ML), + offset: Vec2(x: 0.0, y: 0.0), + // https://github.com/Toqozz/wired-notify/wiki/ImageBlock + params: ImageBlock(( + image_type: HintThenApp, + padding: Padding(left: 13.0, right: 6.0, top: 0.0, bottom: 10.0), + rounding: 3.0, + scale_width: 48, + scale_height: 48, + filter_mode: Lanczos3, + )), + ), + + ( + name: "summary", + parent: "image", + hook: Hook(parent_anchor: MR, self_anchor: BL), + offset: Vec2(x: 0.0, y: 0.0), + // https://github.com/Toqozz/wired-notify/wiki/TextBlock + params: TextBlock(( + text: "%s", + font: "JetBrains Mono 11", + color: Color(hex: "#ffffff"), + padding: Padding(left: 12.0, right: 11.0, top: 12.0, bottom: 12.0), + dimensions: (width: (min: 50, max: 250), height: (min: 0, max: 0)), + )), + ), + + ( + name: "body", + parent: "summary", + hook: Hook(parent_anchor: BL, self_anchor: TL), + offset: Vec2(x: 0.0, y: 0.0), + render_criteria: [Body], + // https://github.com/Toqozz/wired-notify/wiki/ScrollingTextBlock + params: ScrollingTextBlock(( + text: "%b", + font: "JetBrains Mono 10", + color: Color(hex: "#a6adc8"), + padding: Padding(left: 11.0, right: 11.0, top: 0.0, bottom: 11.0), + width: (min: 150, max: 300), + scroll_speed: 0.1, + lhs_dist: 35.0, + rhs_dist: 35.0, + scroll_t: 1.0, + )), + ), + + ( + name: "progress", + parent: "summary", + hook: Hook(parent_anchor: BL, self_anchor: TL), + offset: Vec2(x: 0.0, y: -3.0), + render_criteria: [Progress], + // https://github.com/Toqozz/wired-notify/wiki/ProgressBlock + params: ProgressBlock(( + padding: Padding(left: 12.0, right: 11.0, top: 6.0, bottom: 11.0), + border_width: 2.0, + border_rounding: 5.0, + fill_rounding: 5.0, + border_color: Color(hex: "#313244"), + background_color: Color(hex: "#1e1e2e"), + fill_color: Color(hex: "#cba6f7"), + width: 230, + height: 15, + )), + ), + + ( + name: "button_0", + parent: "summary", + hook: Hook(parent_anchor: BL, self_anchor: TL), + offset: Vec2(x: 12.0, y: 0.0), + render_criteria: [ActionOther(0)], + // https://github.com/Toqozz/wired-notify/wiki/ButtonBlock + params: ButtonBlock(( + padding: Padding(left: 8.0, right: 11.0, top: 6.0, bottom: 5.0), + action: OtherAction(0), + text: "%a", + font: "JetBrains Mono 9", + border_width: 2.0, + border_rounding: 0.0, + text_color: Color(hex: "#a6adc8"), + border_color: Color(hex: "#313244"), + background_color: Color(hex: "#1e1e2e"), + dimensions: (width: (min: 0, max: 150), height: (min: 0, max: 0)), + )), + ), + + ( + name: "button_1", + parent: "button_0", + hook: Hook(parent_anchor: TR, self_anchor: TL), + offset: Vec2(x: 12.0, y: 0.0), + render_criteria: [ActionOther(1)], + // https://github.com/Toqozz/wired-notify/wiki/ButtonBlock + params: ButtonBlock(( + padding: Padding(left: 8.0, right: 11.0, top: 6.0, bottom: 5.0), + action: OtherAction(1), + text: "%a", + font: "JetBrains Mono 9", + border_width: 2.0, + border_rounding: 0.0, + text_color: Color(hex: "#a6adc8"), + border_color: Color(hex: "#313244"), + background_color: Color(hex: "#1e1e2e"), + dimensions: (width: (min: 0, max: 150), height: (min: 0, max: 0)), + )), + ), + + ( + name: "button_2", + parent: "button_1", + hook: Hook(parent_anchor: TR, self_anchor: TL), + offset: Vec2(x: 12.0, y: 0.0), + render_criteria: [ActionOther(2)], + // https://github.com/Toqozz/wired-notify/wiki/ButtonBlock + params: ButtonBlock(( + padding: Padding(left: 8.0, right: 11.0, top: 6.0, bottom: 5.0), + action: OtherAction(2), + text: "%a", + font: "JetBrains Mono 9", + border_width: 2.0, + border_rounding: 0.0, + text_color: Color(hex: "#a6adc8"), + border_color: Color(hex: "#313244"), + background_color: Color(hex: "#1e1e2e"), + dimensions: (width: (min: 0, max: 150), height: (min: 0, max: 0)), + )), + ), + + ( + name: "button_3", + parent: "button_2", + hook: Hook(parent_anchor: TR, self_anchor: TL), + offset: Vec2(x: 12.0, y: 0.0), + render_criteria: [ActionOther(3)], + // https://github.com/Toqozz/wired-notify/wiki/ButtonBlock + params: ButtonBlock(( + padding: Padding(left: 8.0, right: 11.0, top: 6.0, bottom: 5.0), + action: OtherAction(3), + text: "%a", + font: "JetBrains Mono 9", + border_width: 2.0, + border_rounding: 0.0, + text_color: Color(hex: "#a6adc8"), + border_color: Color(hex: "#313244"), + background_color: Color(hex: "#1e1e2e"), + dimensions: (width: (min: 0, max: 150), height: (min: 0, max: 0)), + )), + ), + + ( + name: "padding", + parent: "button_0", + hook: Hook(parent_anchor: BR, self_anchor: TL), + offset: Vec2(x: 0.0, y: 0.0), + render_criteria: [ActionOther(0)], + // https://github.com/Toqozz/wired-notify/wiki/ScrollingTextBlock + params: TextBlock(( + text: "", + font: "JetBrains Mono 1", + color: Color(hex: "#ffffff"), + padding: Padding(left: 12.0, right: 0.0, top: 12.0, bottom: 0.0), + dimensions: (width: (min: 0, max: 0), height: (min: 0, max: 0)), + )), + ), + + ], + + // https://github.com/Toqozz/wired-notify/wiki/Shortcuts + shortcuts: ShortcutsConfig ( + notification_interact: 1, + notification_close: 2, + // notification_closeall: 99, + // notification_pause: 99, + + notification_action1: 3, + // notification_action2: 99, + // notification_action3: 99, + // notification_action4: 99, + ), +) diff --git a/nixos-modules/services/caddy/custom-caddy.nix b/nixos-modules/services/caddy/custom-caddy.nix index b8024957..fb7cc5e8 100644 --- a/nixos-modules/services/caddy/custom-caddy.nix +++ b/nixos-modules/services/caddy/custom-caddy.nix @@ -18,7 +18,7 @@ caddy.override { plugins = [ "github.com/caddy-dns/ionos@751e8e24162290ee74bea465ae733a2bf49551a6" - "github.com/caddy-dns/desec@e1e64971fe34c29ce3f4176464adb84d6890aa50" + "github.com/caddy-dns/desec@822a6a2014b221e8fa589fbcfd0395abe9ee90f6" ]; configurePhase = '' @@ -37,7 +37,7 @@ caddy.override { cp -r --reflink=auto . $out ''; - outputHash = "sha256-yI5eUpEbbZN7qOemT64lodh/Khz9XkFwwoK7NEL0pdI="; + outputHash = "sha256-Z2KQu4qayqaRudKfcxK4tLQ383//JZJ8q5vtX9/IX0I="; outputHashMode = "recursive"; };