diff --git a/flake.lock b/flake.lock index ec4bb1c..859b86e 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "adios": { "locked": { - "lastModified": 1791765546, - "narHash": "sha256-Zivp1rit5QvP9yKsMuGGp2x7X1Vdtbe+UCoYNKF5OQo=", + "lastModified": 1792116278, + "narHash": "sha256-EpuP8ckMrK6dBDCW/9J0b1taPqk9roR4UCEvi7gi8nU=", "owner": "llakala", "repo": "lladios", - "rev": "3fd28fb61472d94eaef95e4a027b9b3d000add8c", + "rev": "e2dcc31fccad928fc23d87836e40395baa3407d8", "type": "github" }, "original": { @@ -22,11 +22,11 @@ ] }, "locked": { - "lastModified": 1791663143, - "narHash": "sha256-eWzFhGi/EIRqgx16YjIInvHWnx4rgOplHkmNQy6o77I=", + "lastModified": 1792158278, + "narHash": "sha256-HSvvi7fX3ZhL8ESZOPcAeGBzUvctfjmR3u7kDoY6wdg=", "owner": "llakala", "repo": "adios-wrappers", - "rev": "bf7124b12ac30042a9220cf920333b6f93447464", + "rev": "9a1964d16fe9a6276be06f7500b6a517e213c85d", "type": "github" }, "original": { @@ -153,11 +153,11 @@ ] }, "locked": { - "lastModified": 1791505570, - "narHash": "sha256-2yRQ87dNTVr1kauBR6PTlfw7hnm90MAL0ObpA05xOTU=", + "lastModified": 1792020613, + "narHash": "sha256-31skutSMYGBAvGK5vs6wPGXAV4s0ietf1doMynL9FfI=", "owner": "9001", "repo": "copyparty", - "rev": "0dc1cb329120743ca85599ba3fba24849f137677", + "rev": "8b4593c9a286791eb5dc40862fa24198cea4def7", "type": "github" }, "original": { @@ -251,11 +251,11 @@ ] }, "locked": { - "lastModified": 1731533236, - "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "lastModified": 1791914995, + "narHash": "sha256-Zf/xfQEAasnwnmEfHqW/4hjDE/s44yn2hD4RuVIZRjA=", "owner": "numtide", "repo": "flake-utils", - "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "rev": "b7a79d3fea1e214f6d668d521cecec0c01e26544", "type": "github" }, "original": { @@ -287,11 +287,11 @@ ] }, "locked": { - "lastModified": 1791549796, - "narHash": "sha256-M6z7XBZxF+JjzGzTKvabVEpKeerkPtHu6r4w9Tyn1lk=", + "lastModified": 1792061930, + "narHash": "sha256-Jk3Q3BgQto8luo0O072fISyWGRteLBw84H2ZbRk97yY=", "owner": "port22exposed", "repo": "nixpille-helium", - "rev": "7371dffa5fb4606365bfb7f91f8786d40c30e883", + "rev": "1de149a330fa0f789b1cf6a78bb3b056b6f25151", "type": "github" }, "original": { @@ -383,11 +383,11 @@ ] }, "locked": { - "lastModified": 1791783302, - "narHash": "sha256-j5WmuqsIfS6MYIr/gOXfqWCt6Clgd6SzFWF2COX+Us0=", + "lastModified": 1792209652, + "narHash": "sha256-363EuE6gG1+Z2RJer+LHPdKGjAuJNh9tOoal0wfvm/w=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "bb2b26441fb371c8929adcc52c98267f2df5c201", + "rev": "ef9ae921161498a28b08fd4656ed44aff87cda67", "type": "github" }, "original": { @@ -416,11 +416,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1791734076, - "narHash": "sha256-i5qk1kLiit98rRbh1AXmWBNT9QXC/y4l5Wk/u5EdpDQ=", + "lastModified": 1791956154, + "narHash": "sha256-jBYGPi4udQ9uo4KQp9m2J0546nJVQitG15gvZSaVVAs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7fd4004d0511991fff3a0524856a9be09e28c5f0", + "rev": "55bfb4d7437bd4e09ab7cba58a43bd68eb310044", "type": "github" }, "original": { @@ -588,11 +588,11 @@ ] }, "locked": { - "lastModified": 1791649846, - "narHash": "sha256-K1fDHpcXoUUuC1A5GhUUbAI4PXOANizjOxxujFHn6B4=", + "lastModified": 1792206579, + "narHash": "sha256-CU6MIv91U26LOTQRIie1hTbjzcLT2Hm0SkFp6gZWrN0=", "ref": "refs/heads/main", - "rev": "7a69c39a4b8efafcbbf33163a92dffbc5c623b5d", - "revCount": 1002, + "rev": "d245ec963a2332d490b62afc441a46ab373002ed", + "revCount": 1019, "type": "git", "url": "https://tangled.org/devins.page/tinysub" }, @@ -608,11 +608,11 @@ ] }, "locked": { - "lastModified": 1791490544, - "narHash": "sha256-qScE7Wz6Zg7eg8ItUpnkmKgst8weWschGe0E8jM4rj4=", + "lastModified": 1791885023, + "narHash": "sha256-C3alQ2MEt0zVrUSho5NUDo3jmhbff72++bfwoqT9Omo=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "4cfe8d7065cc8ca91c0a50361b6dd74920eeb1f5", + "rev": "0d6d739a833ba9a9c93034862e4a7b061a062a1c", "type": "github" }, "original": { @@ -648,11 +648,11 @@ ] }, "locked": { - "lastModified": 1785152263, - "narHash": "sha256-dMhfFVaySbK3gfbf3GgJREcYyROcbJHoAbqra1w0PmA=", + "lastModified": 1791851480, + "narHash": "sha256-F8f9b4JoqidK25du1bk78q6aldwa8fiRLJozWGwTUV8=", "ref": "refs/heads/main", - "rev": "9d6940ac41c698831a42912cac800341d3633fac", - "revCount": 3, + "rev": "4167dafc32b7e1b10f2e367932241919ab00bf3b", + "revCount": 4, "type": "git", "url": "https://codeberg.org/y3/yarnfetch.git" }, diff --git a/modules/darwin/services/glance-agent.nix b/modules/darwin/services/glance-agent.nix index a8ad6bf..2638264 100644 --- a/modules/darwin/services/glance-agent.nix +++ b/modules/darwin/services/glance-agent.nix @@ -2,7 +2,6 @@ config, lib, pkgs, - self', glanceAgentConfig, ... }: @@ -22,7 +21,7 @@ in RunAtLoad = true; KeepAlive = true; ProgramArguments = [ - (lib.getExe self'.packages.glance-agent) + (lib.getExe pkgs.glance-agent) "--config" configFile ]; diff --git a/modules/nixos/services/glance-agent.nix b/modules/nixos/services/glance-agent.nix index b53bbd3..c2d36cc 100644 --- a/modules/nixos/services/glance-agent.nix +++ b/modules/nixos/services/glance-agent.nix @@ -2,7 +2,6 @@ config, lib, pkgs, - self', glanceAgentConfig, ... }: @@ -22,7 +21,7 @@ in wantedBy = [ "multi-user.target" ]; after = [ "network.target" ]; serviceConfig = { - ExecStart = "${lib.getExe self'.packages.glance-agent} --config ${configFile}"; + ExecStart = "${lib.getExe pkgs.glance-agent} --config ${configFile}"; Restart = "always"; RestartSec = 3; NoNewPrivileges = true; diff --git a/modules/nixos/services/pinless.nix b/modules/nixos/services/pinless.nix index 9a84084..ce5fd7d 100644 --- a/modules/nixos/services/pinless.nix +++ b/modules/nixos/services/pinless.nix @@ -1,7 +1,7 @@ { config, lib, - self', + pkgs, ... }: let @@ -13,7 +13,7 @@ in description = "Pinless - privacy-focused frontend for Pinterest"; wantedBy = [ "multi-user.target" ]; serviceConfig = { - ExecStart = "${lib.getExe self'.packages.pinless}"; + ExecStart = "${lib.getExe pkgs.pinless}"; User = "pinless"; Group = "pinless"; Restart = "always"; diff --git a/pkgs/glance-agent/default.nix b/pkgs/glance-agent/default.nix deleted file mode 100644 index 574b3d7..0000000 --- a/pkgs/glance-agent/default.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - buildGoModule, - fetchFromGitHub, - lib, -}: -buildGoModule { - pname = "glance-agent"; - version = "0-unstable-2025-10-03"; - - src = fetchFromGitHub { - owner = "glanceapp"; - repo = "agent"; - rev = "fc8571e85ac379ae4530a6f123cdbfde505f657f"; - hash = "sha256-eNhOelHR3EB3RWWMe7fG6vklgADX7XFy6QMI4Lfr8oM="; - }; - - vendorHash = "sha256-vjcyZctfgnAhzFEF0c+GhtWQqa4gVvLLj0E3sCLS0RE="; - - ldflags = [ - "-s" - "-w" - "-X github.com/glanceapp/agent/internal/agent.buildVersion=0-unstable-2025-10-03" - ]; - - meta = { - homepage = "https://github.com/glanceapp/agent"; - description = "Lightweight service that exposes system metrics via an HTTP API"; - license = lib.licenses.gpl3Only; - platforms = lib.platforms.all; - mainProgram = "agent"; - maintainers = with lib.maintainers; [ yarn ]; - }; -} diff --git a/pkgs/pinless/default.nix b/pkgs/pinless/default.nix deleted file mode 100644 index 94943ea..0000000 --- a/pkgs/pinless/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - buildGoModule, - fetchFromGitHub, - lib, -}: -buildGoModule { - pname = "pinless"; - version = "0-unstable-2026-08-06"; - - src = fetchFromGitHub { - owner = "bunk-im"; - repo = "pinless"; - rev = "87b560c911186b64b6337baa2e64658977891c7e"; - hash = "sha256-IVPSFqutAUH4AWnGXjuN81Q004YeaY5sO0uf+/cqC7Q="; - }; - - vendorHash = "sha256-Ef2XLxGq8TO3WVh9EvLE30Is2CBwH4pqXxkq1tcuR0Q="; - - meta = { - homepage = "https://github.com/bunk-im/pinless"; - description = "Privacy-focused frontend for Pinterest"; - license = lib.licenses.agpl3Only; - maintainers = with lib.maintainers; [ yarn ]; - platforms = lib.platforms.unix; - mainProgram = "pinless"; - }; -} diff --git a/utils/colorUtils.nix b/utils/colorUtils.nix index 475898d..40605a2 100644 --- a/utils/colorUtils.nix +++ b/utils/colorUtils.nix @@ -156,7 +156,6 @@ let adjustSurface = factor: hex: if (getTrueLuminance hex) > 18000 then darken factor hex else lighten factor hex; - # Added HSL conversion support hexToHsl = hex: let -- knotmirror 0.0.1 From 6e29c8f210e3039ce130623dbe95488130611bae Mon Sep 17 00:00:00 2001 From: y3 Date: Sat, 17 Oct 2026 18:44:24 +0100 Subject: [PATCH 02/15] refactor(wrappers): use inputs.mkWrapper.options api --- wrappers/beets.nix | 6 ++++-- wrappers/equibop.nix | 6 ++++-- wrappers/gh.nix | 8 +++++--- wrappers/ghostty.nix | 6 ++++-- wrappers/helium.nix | 6 ++++-- wrappers/labwc.nix | 6 ++++-- wrappers/niri.nix | 6 ++++-- wrappers/nixpkgs-review.nix | 6 ++++-- wrappers/nnn.nix | 6 ++++-- wrappers/rofi.nix | 6 ++++-- wrappers/senpai.nix | 6 ++++-- wrappers/wbg.nix | 6 ++++-- 12 files changed, 49 insertions(+), 25 deletions(-) diff --git a/wrappers/beets.nix b/wrappers/beets.nix index f3075e2..5b9144b 100644 --- a/wrappers/beets.nix +++ b/wrappers/beets.nix @@ -131,7 +131,7 @@ ); }; - result = promise ( + inputs.mkWrapper.options = promise ( { options, inputs }: let inherit (inputs.nixpkgs) lib; @@ -161,11 +161,13 @@ ${lib.getExe options.package} --config "$cfg" "$@" ''; in - inputs.mkWrapper { + { package = launcher; pname = options.package.pname; binaryName = "beet"; flags = [ ]; } ); + + result = promise ({ results }: results.mkWrapper); } diff --git a/wrappers/equibop.nix b/wrappers/equibop.nix index e3406a3..0f6f610 100644 --- a/wrappers/equibop.nix +++ b/wrappers/equibop.nix @@ -80,7 +80,7 @@ }; }; - result = promise ( + inputs.mkWrapper.options = promise ( { options, inputs, @@ -106,7 +106,7 @@ exec ${lib.getExe options.package} "$@" ''; in - inputs.mkWrapper { + { package = launcher; extraPaths = [ options.package ]; pname = "equibop"; @@ -114,4 +114,6 @@ inherit (options) flags; } ); + + result = promise ({ results }: results.mkWrapper); } diff --git a/wrappers/gh.nix b/wrappers/gh.nix index 1c2bb66..7726579 100644 --- a/wrappers/gh.nix +++ b/wrappers/gh.nix @@ -16,10 +16,12 @@ } ); - result = promise ( - { options, inputs }: - inputs.mkWrapper { + inputs.mkWrapper.options = promise ( + { options }: + { inherit (options) package; } ); + + result = promise ({ results }: results.mkWrapper); } diff --git a/wrappers/ghostty.nix b/wrappers/ghostty.nix index 1655d41..d7228a9 100644 --- a/wrappers/ghostty.nix +++ b/wrappers/ghostty.nix @@ -72,7 +72,7 @@ in } ); - result = promise ( + inputs.mkWrapper.options = promise ( { options, inputs }: let inherit (inputs.nixpkgs) lib; @@ -92,7 +92,7 @@ in }; in assert !(options ? settings && options ? configFile); - inputs.mkWrapper { + { inherit (options) package; symlinks = { "$out/ghostty/config" = options.configFile or (generator.generate "ghostty" options.settings); @@ -119,4 +119,6 @@ in ''; } ); + + result = promise ({ results }: results.mkWrapper); } diff --git a/wrappers/helium.nix b/wrappers/helium.nix index f20b96a..95d0276 100644 --- a/wrappers/helium.nix +++ b/wrappers/helium.nix @@ -234,7 +234,7 @@ ]; }; - result = promise ( + inputs.mkWrapper.options = promise ( { options, inputs, @@ -252,7 +252,7 @@ ${lib.getExe options.package} "$@" ''; in - inputs.mkWrapper { + { package = launcher; extraPaths = [ options.package ]; pname = "helium"; @@ -260,4 +260,6 @@ inherit (options) flags; } ); + + result = promise ({ results }: results.mkWrapper); } diff --git a/wrappers/labwc.nix b/wrappers/labwc.nix index 617090f..9fef5b9 100644 --- a/wrappers/labwc.nix +++ b/wrappers/labwc.nix @@ -211,7 +211,7 @@ in }; }; - result = promise ( + inputs.mkWrapper.options = promise ( { options, inputs }: let inherit (builtins) @@ -228,7 +228,7 @@ in map (name: nameValuePair "$out/labwc/${name}" files.${name}) (attrNames options.configFiles) ); in - inputs.mkWrapper { + { inherit (options) package; inherit symlinks; flags = @@ -241,4 +241,6 @@ in ]; } ); + + result = promise ({ results }: results.mkWrapper); } diff --git a/wrappers/niri.nix b/wrappers/niri.nix index 3f386d9..60da911 100644 --- a/wrappers/niri.nix +++ b/wrappers/niri.nix @@ -354,7 +354,7 @@ in }; }; - result = promise ( + inputs.mkWrapper.options = promise ( { options, inputs }: let inherit (builtins) isString; @@ -365,7 +365,7 @@ in else options.configFile; in - inputs.mkWrapper { + { inherit (options) package; environment.NIRI_CONFIG = "${configFile}"; @@ -386,4 +386,6 @@ in ''; } ); + + result = promise ({ results }: results.mkWrapper); } diff --git a/wrappers/nixpkgs-review.nix b/wrappers/nixpkgs-review.nix index 8d6a4c1..ac7c222 100644 --- a/wrappers/nixpkgs-review.nix +++ b/wrappers/nixpkgs-review.nix @@ -19,7 +19,7 @@ default = "/run/agenix/github-access-token"; }; - result = promise ( + inputs.mkWrapper.options = promise ( { options, inputs, @@ -38,11 +38,13 @@ exec ${lib.getExe options.package} "$@" ''; in - inputs.mkWrapper { + { package = launcher; extraPaths = [ options.package ]; pname = "nixpkgs-review"; binaryName = "nixpkgs-review"; } ); + + result = promise ({ results }: results.mkWrapper); } diff --git a/wrappers/nnn.nix b/wrappers/nnn.nix index d16a653..03029d8 100644 --- a/wrappers/nnn.nix +++ b/wrappers/nnn.nix @@ -45,14 +45,14 @@ }; }; - result = promise ( + inputs.mkWrapper.options = promise ( { options, inputs }: assert !(options ? configContents && options ? configFile); let inherit (inputs.nixpkgs.pkgs) writeText; hasConfig = options ? configFile || options ? configContents; in - inputs.mkWrapper { + { inherit (options) package; inherit (options) flags; } @@ -68,6 +68,8 @@ ) ); + result = promise ({ results }: results.mkWrapper); + meta = { maintainers = [ "yarn" ]; }; diff --git a/wrappers/rofi.nix b/wrappers/rofi.nix index 9d30c7e..8275340 100644 --- a/wrappers/rofi.nix +++ b/wrappers/rofi.nix @@ -91,12 +91,12 @@ in }; }; - result = promise ( + inputs.mkWrapper.options = promise ( { options, inputs }: let writeTextIfString = import ../utils/writeTextIfString.nix { pkgs = inputs.nixpkgs.pkgs; }; in - inputs.mkWrapper { + { inherit (options) package; flags = [ @@ -107,4 +107,6 @@ in ]; } ); + + result = promise ({ results }: results.mkWrapper); } diff --git a/wrappers/senpai.nix b/wrappers/senpai.nix index c2293aa..bc00326 100644 --- a/wrappers/senpai.nix +++ b/wrappers/senpai.nix @@ -28,7 +28,7 @@ }; }; - result = promise ( + inputs.mkWrapper.options = promise ( { options, inputs }: let inherit (inputs.nixpkgs.pkgs) writeText; @@ -71,7 +71,7 @@ scfg = renderBlock 0 options.settings; in - inputs.mkWrapper { + { inherit (options) package; symlinks."$out/senpai/senpai.scfg" = writeText "senpai.scfg" scfg; flags = [ @@ -80,4 +80,6 @@ ]; } ); + + result = promise ({ results }: results.mkWrapper); } diff --git a/wrappers/wbg.nix b/wrappers/wbg.nix index 18e8217..20a0e5b 100644 --- a/wrappers/wbg.nix +++ b/wrappers/wbg.nix @@ -21,18 +21,20 @@ }; }; - result = promise ( + inputs.mkWrapper.options = promise ( { options, inputs }: let inherit (inputs.nixpkgs.lib) optional; flags = optional options.stretch "-s"; in - inputs.mkWrapper { + { inherit (options) package; pname = "wbg"; inherit flags; } ); + + result = promise ({ results }: results.mkWrapper); } -- knotmirror 0.0.1 From 0f7a1240d89d9e8f06ef528bb2caa91acd99221f Mon Sep 17 00:00:00 2001 From: y3 Date: Sun, 18 Oct 2026 03:28:45 +0100 Subject: [PATCH 03/15] chore(pkgs): bump wordcraft to 0.7.0 and photocraft to 0.9.0 --- pkgs/photocraft/default.nix | 4 ++-- pkgs/wordcraft/default.nix | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/photocraft/default.nix b/pkgs/photocraft/default.nix index 83b2161..b7397ba 100644 --- a/pkgs/photocraft/default.nix +++ b/pkgs/photocraft/default.nix @@ -26,11 +26,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "photocraft"; - version = "0.8.2"; + version = "0.9.0"; src = fetchurl { url = "https://github.com/storytold/photocraft/releases/download/v${finalAttrs.version}/photocraft-${finalAttrs.version}-linux-x86_64.tar.gz"; - hash = "sha256-FsMImXbu4tKQ2+c5httINcHsWgQ8XBawF7JISP9eqCc="; + hash = "sha256-kTAMFIWtcQg5YEsIVTHJDnesfr2yowJZMJrXSvz9uQ0="; }; nativeBuildInputs = [ diff --git a/pkgs/wordcraft/default.nix b/pkgs/wordcraft/default.nix index 6f3187b..f27a1fc 100644 --- a/pkgs/wordcraft/default.nix +++ b/pkgs/wordcraft/default.nix @@ -26,11 +26,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "wordcraft"; - version = "0.6.1"; + version = "0.7.0"; src = fetchurl { url = "https://github.com/storytold/wordcraft/releases/download/v${finalAttrs.version}/wordcraft-${finalAttrs.version}-linux-x86_64.tar.gz"; - hash = "sha256-eb1UyBJ29upVEiJDKt7BXg6qtMtYgd7O446v16XKOPk="; + hash = "sha256-YwCfiOPbrqcKwTePq8hVWuFHddMoKRdcXaJVGr4Dky8="; }; nativeBuildInputs = [ -- knotmirror 0.0.1 From 8ed0fd8f5616d2d8d7552acba8c9fee94301b7d5 Mon Sep 17 00:00:00 2001 From: y3 Date: Sun, 18 Oct 2026 03:42:58 +0100 Subject: [PATCH 04/15] chore(pkgs): add deckcraft 0.7.0 and gridcraft 0.8.0 (only GUI binaries) --- pkgs/deckcraft/default.nix | 84 ++++++++++++++++++++++++++++++++++++++ pkgs/gridcraft/default.nix | 84 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 pkgs/deckcraft/default.nix create mode 100644 pkgs/gridcraft/default.nix diff --git a/pkgs/deckcraft/default.nix b/pkgs/deckcraft/default.nix new file mode 100644 index 0000000..d51de8b --- /dev/null +++ b/pkgs/deckcraft/default.nix @@ -0,0 +1,84 @@ +{ + lib, + stdenv, + fetchurl, + autoPatchelfHook, + wayland, + libxkbcommon, + libx11, + libxcursor, + libxi, + dbus, + libglvnd, + vulkan-loader, + alsa-lib, +}: +let + runtimeLibs = [ + alsa-lib + dbus.lib + libglvnd + libx11 + libxcursor + libxi + libxkbcommon + vulkan-loader + wayland + ]; +in +stdenv.mkDerivation (finalAttrs: { + pname = "deckcraft"; + version = "0.7.0"; + + src = fetchurl { + url = "https://github.com/storytold/deckcraft/releases/download/v${finalAttrs.version}/deckcraft-${finalAttrs.version}-linux-x86_64.tar.gz"; + hash = "sha256-Mwovsu+IkNre2RCE5b/SnfpBHjOisnwBrDueUg/5jZ8="; + }; + + nativeBuildInputs = [ + autoPatchelfHook + ]; + + buildInputs = [ stdenv.cc.cc.lib ] ++ runtimeLibs; + + appendRunpaths = [ + (lib.makeLibraryPath runtimeLibs) + "/run/opengl-driver/lib" + ]; + runtimeDependencies = [ + stdenv.cc.cc.lib + alsa-lib + ]; + + dontConfigure = true; + dontBuild = true; + + unpackPhase = '' + runHook preUnpack + tar xf "$src" + runHook postUnpack + ''; + + installPhase = '' + runHook preInstall + mkdir -p "$out/bin" + + cp -r "deckcraft-${finalAttrs.version}-linux-x86_64/bin/deckcraft" "$out/bin/" + cp -r "deckcraft-${finalAttrs.version}-linux-x86_64/share" "$out/" + + runHook postInstall + ''; + + meta = { + description = "Clean-room open-source reimplementation of Microsoft PowerPoint written in Rust"; + homepage = "https://github.com/storytold/deckcraft"; + license = with lib.licenses; [ + mit + asl20 + ]; + maintainers = with lib.maintainers; [ yarn ]; + mainProgram = "deckcraft"; + platforms = [ "x86_64-linux" ]; + sourceProvenance = with lib.sourceProvenance; [ fromBinarySource ]; + }; +}) diff --git a/pkgs/gridcraft/default.nix b/pkgs/gridcraft/default.nix new file mode 100644 index 0000000..2d525c7 --- /dev/null +++ b/pkgs/gridcraft/default.nix @@ -0,0 +1,84 @@ +{ + lib, + stdenv, + fetchurl, + autoPatchelfHook, + wayland, + libxkbcommon, + libx11, + libxcursor, + libxi, + dbus, + libglvnd, + vulkan-loader, + alsa-lib, +}: +let + runtimeLibs = [ + alsa-lib + dbus.lib + libglvnd + libx11 + libxcursor + libxi + libxkbcommon + vulkan-loader + wayland + ]; +in +stdenv.mkDerivation (finalAttrs: { + pname = "gridcraft"; + version = "0.8.0"; + + src = fetchurl { + url = "https://github.com/storytold/gridcraft/releases/download/v${finalAttrs.version}/gridcraft-${finalAttrs.version}-linux-x86_64.tar.gz"; + hash = "sha256-SgKeINqGutRnBjOc5FFqIERcExwNgvahFHciCMXYMbM="; + }; + + nativeBuildInputs = [ + autoPatchelfHook + ]; + + buildInputs = [ stdenv.cc.cc.lib ] ++ runtimeLibs; + + appendRunpaths = [ + (lib.makeLibraryPath runtimeLibs) + "/run/opengl-driver/lib" + ]; + runtimeDependencies = [ + stdenv.cc.cc.lib + alsa-lib + ]; + + dontConfigure = true; + dontBuild = true; + + unpackPhase = '' + runHook preUnpack + tar xf "$src" + runHook postUnpack + ''; + + installPhase = '' + runHook preInstall + mkdir -p "$out/bin" + + cp -r "gridcraft-${finalAttrs.version}-linux-x86_64/bin/gridcraft" "$out/bin/" + cp -r "gridcraft-${finalAttrs.version}-linux-x86_64/share" "$out/" + + runHook postInstall + ''; + + meta = { + description = "Clean-room open-source reimplementation of Microsoft Excel written in Rust"; + homepage = "https://github.com/storytold/gridcraft"; + license = with lib.licenses; [ + mit + asl20 + ]; + maintainers = with lib.maintainers; [ yarn ]; + mainProgram = "gridcraft"; + platforms = [ "x86_64-linux" ]; + sourceProvenance = with lib.sourceProvenance; [ fromBinarySource ]; + }; +}) -- knotmirror 0.0.1 From a60b59f1398e6bfb2aea70fa3669ccbf22eb842f Mon Sep 17 00:00:00 2001 From: y3 Date: Sun, 18 Oct 2026 03:43:12 +0100 Subject: [PATCH 05/15] feat(katsu): add deckcraft and gridcraft --- hosts/katsu/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/katsu/default.nix b/hosts/katsu/default.nix index 1bb0047..fa96a77 100644 --- a/hosts/katsu/default.nix +++ b/hosts/katsu/default.nix @@ -36,6 +36,8 @@ davinci-resolve self'.packages.photocraft self'.packages.wordcraft + self'.packages.deckcraft + self'.packages.gridcraft ]; hardware = { -- knotmirror 0.0.1 From df7d8468bec71fe5f61d5dfa80d04eab9106e5c4 Mon Sep 17 00:00:00 2001 From: y3 Date: Mon, 19 Oct 2026 03:48:37 +0100 Subject: [PATCH 06/15] chore: remove linux-builder from all devices; add kodi autolaunch on ramen --- hosts/ramen/services.nix | 4 +- modules/darwin/services/kodi.nix | 29 ++++++++++++ modules/darwin/services/linux-builder.nix | 36 --------------- modules/nixos/system.nix | 51 +--------------------- secrets/builder-key.age | Bin 1063 -> 0 bytes secrets/secrets.nix | 1 - 6 files changed, 32 insertions(+), 89 deletions(-) create mode 100644 modules/darwin/services/kodi.nix delete mode 100644 modules/darwin/services/linux-builder.nix delete mode 100644 secrets/builder-key.age diff --git a/hosts/ramen/services.nix b/hosts/ramen/services.nix index 5a7fd76..7268bc2 100644 --- a/hosts/ramen/services.nix +++ b/hosts/ramen/services.nix @@ -49,7 +49,7 @@ ]; }; - linux-builder = { - port = 31023; + kodi = { + enable = true; }; } diff --git a/modules/darwin/services/kodi.nix b/modules/darwin/services/kodi.nix new file mode 100644 index 0000000..2606d4a --- /dev/null +++ b/modules/darwin/services/kodi.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs, + ... +}: +let + service = config.unravelled.services.kodi or { }; +in +{ + config = lib.mkIf (service.enable or false) { + environment.systemPackages = [ pkgs.kodi ]; + + launchd.daemons.kodi = { + serviceConfig = { + RunAtLoad = true; + KeepAlive = true; + UserName = config.system.primaryUser; + GroupName = "staff"; + ProgramArguments = [ + (lib.getExe pkgs.kodi) + "--standalone" + ]; + StandardOutPath = "/tmp/kodi.log"; + StandardErrorPath = "/tmp/kodi.log"; + }; + }; + }; +} diff --git a/modules/darwin/services/linux-builder.nix b/modules/darwin/services/linux-builder.nix deleted file mode 100644 index 61960d1..0000000 --- a/modules/darwin/services/linux-builder.nix +++ /dev/null @@ -1,36 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - service = config.unravelled.services.linux-builder or { }; - port = service.port or 31023; -in -{ - config = lib.mkIf (service.enable or false) { - nix.linux-builder = { - enable = true; - package = pkgs.darwin.linux-builder-vz; - systems = [ - "aarch64-linux" - "x86_64-linux" - ]; - }; - - launchd.daemons.linux-builder-forward = { - script = '' - exec ${pkgs.socat}/bin/socat \ - TCP-LISTEN:${toString port},bind=0.0.0.0,reuseaddr,fork \ - TCP:127.0.0.1:31022 - ''; - serviceConfig = { - KeepAlive = true; - RunAtLoad = true; - StandardOutPath = "/var/log/linux-builder-forward.log"; - StandardErrorPath = "/var/log/linux-builder-forward.log"; - }; - }; - }; -} diff --git a/modules/nixos/system.nix b/modules/nixos/system.nix index d5c659c..6400cdc 100644 --- a/modules/nixos/system.nix +++ b/modules/nixos/system.nix @@ -3,22 +3,13 @@ { lib, pkgs, - config, - self, self', ... }: let inherit (lib) mkDefault; - inherit (import ../../utils/age.nix { inherit self; }) mkAgeSecret; in { - age.secrets.builder-key = mkAgeSecret { - name = "builder-key"; - owner = "root"; - group = "root"; - }; - system.stateVersion = "26.11"; environment.systemPackages = with pkgs; [ @@ -66,7 +57,7 @@ enable = true; extraConfig = '' [Daemon] - DeviceScale=an-integer-scaling-factor + Device=an-integer-scaling-factor ''; }; consoleLogLevel = 3; @@ -179,46 +170,6 @@ "net.ipv4.conf.all.accept_source_route" = 0; "net.ipv4.conf.default.accept_source_route" = 0; }; - - nix = { - distributedBuilds = true; - - buildMachines = [ - { - hostName = "linux-builder"; - protocol = "ssh-ng"; - sshUser = "builder"; - sshKey = config.age.secrets.builder-key.path; - publicHostKey = "c3NoLWVkMjU1MTkgQUFBQUMzTnphQzFsWkRJMU5URTVBQUFBSUpCV2N4Yi9CbGFxdDFhdU90RStGOFFVV3JVb3RpQzVxQkorVXVFV2RWQ2Igcm9vdEBuaXhvcwo="; - systems = [ - "aarch64-linux" - "x86_64-linux" - ]; - maxJobs = 1; - supportedFeatures = [ - "kvm" - "benchmark" - "big-parallel" - ]; - } - ]; - - settings.builders-use-substitutes = true; - }; - - programs.ssh = { - extraConfig = '' - Host linux-builder - User builder - HostName ramen.char-ruler.ts.net - HostKeyAlias linux-builder - Port 31023 - IdentityFile ${config.age.secrets.builder-key.path} - IdentitiesOnly yes - ''; - - knownHosts.linux-builder.publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJBWcxb/Blaqt1auOtE+F8QUWrUotiC5qBJ+UuEWdVCb"; - }; }; notIso = _: { diff --git a/secrets/builder-key.age b/secrets/builder-key.age deleted file mode 100644 index b2861e54d85b29e85c2889ca25d71e4f52b9b4b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1063 zcmYaGPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSn$qFgc4phj>EcFWW z3Uezk4@vPVG72%y3^j1_FxC%r_6Tj$1TjgG+iMpD$Uf@Kcu7}+&DAG zqoBY%Ej=nR%CfXPJj2n*#MmX#E3nAlEF(M5#g{A3Gpnd7BcveM)w$9+BRe(KJG(T; z(5E;c%*!mpHPyAKuu?z5FuSP2)Dzvd0P|AE&_IQXM5Dms%v{6tfKnfWG{Z2%qzu=f zaMKXu)a7%>ortBVBzH4gK?-96il~B8xJjf(-(^qs+X+%sryQ zJwj3~Qqn9dy}g670)4rhO|_j3i!4oZv(kK$@+-|Cqx>^N!(1~{ z@-xb^GK$e{b2Bgrsw!9T2+6F{&agvJ4K1ig3(Kc1t!jC~&ciYV1~HOww9HVVwh_c!o!3(qqOO)2Jj;!xJR z@Z++j54Sw(P-60*H+Qp{`>8}uw#&l)jLcKYOn>f43ZKUR@~oM_PFcCW!fn%^T{fsO z&vaYmjFYbHoxV(`cv1#?iRtr_%q(e_w8*mf2kL&tTVDKE-5o3}bo0~2 z$JWzq0Jwu7XGT?1Gt7z6Hqzx6RZJu9Z+X z`9Jkd4*R!8URIV8+js6+XY8{JXX?CKe5^QUOH?RebBotrU-D(yqYEz|8>-6RzaD-2 zfZ9%#elZtCPwt$@3--Nx(Pnk+k3;M6wbf-{!ryigORG?tb0i=$wm`}H)XM}^AZzH zTyX!wjk?7Sf`1Q9Sz+zI+wu3LccDKz^p7pwIrH435MKHIASOS~Q~3}H z)O=#(`P8jSHE1I1=6|=Qe=JIp5`KPnR}z1o7uOltl?-{^GJdPLzI~B_uF+io{=~5Wmzm0CY{9 Ab^rhX diff --git a/secrets/secrets.nix b/secrets/secrets.nix index 57831be..5d677f2 100644 --- a/secrets/secrets.nix +++ b/secrets/secrets.nix @@ -23,5 +23,4 @@ in "secrets/llama-api-key.age".publicKeys = all; "secrets/beszel-agent-env.age".publicKeys = all; "secrets/qui-secret.age".publicKeys = all; - "secrets/builder-key.age".publicKeys = all; } -- knotmirror 0.0.1 From 658fb6f3650b127de6bf9ada6ce37004c7a1c992 Mon Sep 17 00:00:00 2001 From: y3 Date: Mon, 19 Oct 2026 04:57:07 +0100 Subject: [PATCH 07/15] feat(kodi): package official macOS dmg and launch via user agent --- modules/darwin/services/kodi.nix | 15 ++++-------- pkgs/kodi/default.nix | 40 ++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 10 deletions(-) create mode 100644 pkgs/kodi/default.nix diff --git a/modules/darwin/services/kodi.nix b/modules/darwin/services/kodi.nix index 2606d4a..67c3e86 100644 --- a/modules/darwin/services/kodi.nix +++ b/modules/darwin/services/kodi.nix @@ -1,26 +1,21 @@ { config, lib, - pkgs, + self', ... }: let service = config.unravelled.services.kodi or { }; + kodi = self'.packages.kodi; in { config = lib.mkIf (service.enable or false) { - environment.systemPackages = [ pkgs.kodi ]; + environment.systemPackages = [ kodi ]; - launchd.daemons.kodi = { + launchd.user.agents.kodi = { serviceConfig = { RunAtLoad = true; - KeepAlive = true; - UserName = config.system.primaryUser; - GroupName = "staff"; - ProgramArguments = [ - (lib.getExe pkgs.kodi) - "--standalone" - ]; + ProgramArguments = [ "${kodi}/Applications/Kodi.app/Contents/MacOS/Kodi" ]; StandardOutPath = "/tmp/kodi.log"; StandardErrorPath = "/tmp/kodi.log"; }; diff --git a/pkgs/kodi/default.nix b/pkgs/kodi/default.nix new file mode 100644 index 0000000..8cc70a8 --- /dev/null +++ b/pkgs/kodi/default.nix @@ -0,0 +1,40 @@ +{ + lib, + stdenv, + fetchurl, + undmg, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "kodi"; + version = "21.3"; + + src = fetchurl { + url = "https://mirrors.kodi.tv/releases/osx/arm64/kodi-21.3-Omega-arm64.dmg?https=1"; + hash = "sha256-SuGcTSD0HoHIiJMCh0F5xbi/HYa7s8Yban4NDy5svyI="; + }; + + nativeBuildInputs = [ undmg ]; + + sourceRoot = "Kodi.app"; + + dontConfigure = true; + dontBuild = true; + dontStrip = true; + dontFixup = true; + + installPhase = '' + runHook preInstall + mkdir -p $out/Applications/Kodi.app + cp -R . $out/Applications/Kodi.app/ + runHook postInstall + ''; + + meta = { + description = "Kodi media center (official macOS DMG)"; + homepage = "https://kodi.tv"; + license = lib.licenses.gpl2Only; + platforms = [ "aarch64-darwin" ]; + sourceProvenance = [ lib.sourceTypes.binaryNativeCode ]; + }; +}) -- knotmirror 0.0.1 From 6e924fe22ef704fe43233b86dd485252628acd7e Mon Sep 17 00:00:00 2001 From: y3 Date: Mon, 19 Oct 2026 05:04:18 +0100 Subject: [PATCH 08/15] fix(kodi): name dmg store path so undmg hook matches --- pkgs/kodi/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/pkgs/kodi/default.nix b/pkgs/kodi/default.nix index 8cc70a8..eef769c 100644 --- a/pkgs/kodi/default.nix +++ b/pkgs/kodi/default.nix @@ -10,6 +10,7 @@ stdenv.mkDerivation (finalAttrs: { version = "21.3"; src = fetchurl { + name = "kodi-21.3-Omega-arm64.dmg"; url = "https://mirrors.kodi.tv/releases/osx/arm64/kodi-21.3-Omega-arm64.dmg?https=1"; hash = "sha256-SuGcTSD0HoHIiJMCh0F5xbi/HYa7s8Yban4NDy5svyI="; }; -- knotmirror 0.0.1 From 36773e5d5d3f7942dcfa353276d9b0ed4144830a Mon Sep 17 00:00:00 2001 From: y3 Date: Mon, 19 Oct 2026 06:08:20 +0100 Subject: [PATCH 09/15] feat(kodi): launch fullscreen with -fs --- modules/darwin/services/kodi.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/modules/darwin/services/kodi.nix b/modules/darwin/services/kodi.nix index 67c3e86..5d82592 100644 --- a/modules/darwin/services/kodi.nix +++ b/modules/darwin/services/kodi.nix @@ -15,7 +15,10 @@ in launchd.user.agents.kodi = { serviceConfig = { RunAtLoad = true; - ProgramArguments = [ "${kodi}/Applications/Kodi.app/Contents/MacOS/Kodi" ]; + ProgramArguments = [ + "${kodi}/Applications/Kodi.app/Contents/MacOS/Kodi" + "-fs" + ]; StandardOutPath = "/tmp/kodi.log"; StandardErrorPath = "/tmp/kodi.log"; }; -- knotmirror 0.0.1 From 77f208cea3ffa6ba778a05620a9808bfc65d92c6 Mon Sep 17 00:00:00 2001 From: y3 Date: Wed, 21 Oct 2026 12:41:51 +0100 Subject: [PATCH 10/15] chore(pkgs): bump deckcraft, gridcraft, photocraft, wordcraft --- pkgs/deckcraft/default.nix | 4 ++-- pkgs/gridcraft/default.nix | 4 ++-- pkgs/photocraft/default.nix | 4 ++-- pkgs/wordcraft/default.nix | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/pkgs/deckcraft/default.nix b/pkgs/deckcraft/default.nix index d51de8b..554641d 100644 --- a/pkgs/deckcraft/default.nix +++ b/pkgs/deckcraft/default.nix @@ -28,11 +28,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "deckcraft"; - version = "0.7.0"; + version = "0.8.0"; src = fetchurl { url = "https://github.com/storytold/deckcraft/releases/download/v${finalAttrs.version}/deckcraft-${finalAttrs.version}-linux-x86_64.tar.gz"; - hash = "sha256-Mwovsu+IkNre2RCE5b/SnfpBHjOisnwBrDueUg/5jZ8="; + hash = "sha256-InuMnN0sBreGaAf5lf5dLQZ1UjphII+bwmzydg/dy48="; }; nativeBuildInputs = [ diff --git a/pkgs/gridcraft/default.nix b/pkgs/gridcraft/default.nix index 2d525c7..5be8141 100644 --- a/pkgs/gridcraft/default.nix +++ b/pkgs/gridcraft/default.nix @@ -28,11 +28,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "gridcraft"; - version = "0.8.0"; + version = "0.9.0"; src = fetchurl { url = "https://github.com/storytold/gridcraft/releases/download/v${finalAttrs.version}/gridcraft-${finalAttrs.version}-linux-x86_64.tar.gz"; - hash = "sha256-SgKeINqGutRnBjOc5FFqIERcExwNgvahFHciCMXYMbM="; + hash = "sha256-gRSC8uS7ZvjDXVm3nlMuHQgS02K6wk5j/W3cCETWa8k="; }; nativeBuildInputs = [ diff --git a/pkgs/photocraft/default.nix b/pkgs/photocraft/default.nix index b7397ba..9cd5762 100644 --- a/pkgs/photocraft/default.nix +++ b/pkgs/photocraft/default.nix @@ -26,11 +26,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "photocraft"; - version = "0.9.0"; + version = "0.11.1"; src = fetchurl { url = "https://github.com/storytold/photocraft/releases/download/v${finalAttrs.version}/photocraft-${finalAttrs.version}-linux-x86_64.tar.gz"; - hash = "sha256-kTAMFIWtcQg5YEsIVTHJDnesfr2yowJZMJrXSvz9uQ0="; + hash = "sha256-DhSZtJm4vYCpY44xXA8ckn0GBqxc1Yv72kNPUCXICkk="; }; nativeBuildInputs = [ diff --git a/pkgs/wordcraft/default.nix b/pkgs/wordcraft/default.nix index f27a1fc..c186c85 100644 --- a/pkgs/wordcraft/default.nix +++ b/pkgs/wordcraft/default.nix @@ -26,11 +26,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "wordcraft"; - version = "0.7.0"; + version = "0.8.0"; src = fetchurl { url = "https://github.com/storytold/wordcraft/releases/download/v${finalAttrs.version}/wordcraft-${finalAttrs.version}-linux-x86_64.tar.gz"; - hash = "sha256-YwCfiOPbrqcKwTePq8hVWuFHddMoKRdcXaJVGr4Dky8="; + hash = "sha256-Ds4Hzz2RuSPf2A+QMQ4EmDveZvAnnGtg3c6JWW3eDd8="; }; nativeBuildInputs = [ -- knotmirror 0.0.1 From 3c958abe3e0396140d600bf699a6af2d5f80d5ba Mon Sep 17 00:00:00 2001 From: y3 Date: Wed, 21 Oct 2026 12:43:49 +0100 Subject: [PATCH 11/15] chore(flake): update --- flake.lock | 56 +++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/flake.lock b/flake.lock index 859b86e..9d7027e 100644 --- a/flake.lock +++ b/flake.lock @@ -2,11 +2,11 @@ "nodes": { "adios": { "locked": { - "lastModified": 1792116278, - "narHash": "sha256-EpuP8ckMrK6dBDCW/9J0b1taPqk9roR4UCEvi7gi8nU=", + "lastModified": 1792419797, + "narHash": "sha256-IV5G9jsEyYUhlx0K35ETQ7OvWWCl7sXxJI+E9kUIYdk=", "owner": "llakala", "repo": "lladios", - "rev": "e2dcc31fccad928fc23d87836e40395baa3407d8", + "rev": "8ee54755018cf81ad783c4f16aba62754c1d292b", "type": "github" }, "original": { @@ -42,11 +42,11 @@ ] }, "locked": { - "lastModified": 1790734419, - "narHash": "sha256-n7wew722m1OTBT9DOIMxNX/NF4zfsSUABAO5eW3wikE=", + "lastModified": 1792507013, + "narHash": "sha256-8tKjSQajD3mUND1GaAuaWTcuyUpgcGsh5V+l4ibzC7U=", "owner": "ryantm", "repo": "agenix", - "rev": "3daa710894355fa2fad8243380af373a2b4046ef", + "rev": "5e5b88a0c8e56f291a108c2fe9934054d9745b2e", "type": "github" }, "original": { @@ -153,11 +153,11 @@ ] }, "locked": { - "lastModified": 1792020613, - "narHash": "sha256-31skutSMYGBAvGK5vs6wPGXAV4s0ietf1doMynL9FfI=", + "lastModified": 1792559340, + "narHash": "sha256-IRpSJIA0ijCUDndWSZk7MdbtzAjj30t9mkCQ2VspHdo=", "owner": "9001", "repo": "copyparty", - "rev": "8b4593c9a286791eb5dc40862fa24198cea4def7", + "rev": "1af7efeca858dcfa29f797d7ae93f22eb2fdecf0", "type": "github" }, "original": { @@ -287,11 +287,11 @@ ] }, "locked": { - "lastModified": 1792061930, - "narHash": "sha256-Jk3Q3BgQto8luo0O072fISyWGRteLBw84H2ZbRk97yY=", + "lastModified": 1792232164, + "narHash": "sha256-JEEL3JAvjE3yh4rcNCIk19tLUVhfAHO/jsTOCG7ksEM=", "owner": "port22exposed", "repo": "nixpille-helium", - "rev": "1de149a330fa0f789b1cf6a78bb3b056b6f25151", + "rev": "09df9a407b92f6b16f48364e448034f0fb990463", "type": "github" }, "original": { @@ -322,11 +322,11 @@ ] }, "locked": { - "lastModified": 1786845137, - "narHash": "sha256-oQFip+v0luP8NIxJzmiW4Wu8bILsbFWom5l0zonl8hQ=", + "lastModified": 1792366139, + "narHash": "sha256-jto4pdsl0bgErQ5vaMc3gOyj//PILLRJuqX3I7fUk6s=", "owner": "nix-darwin", "repo": "nix-darwin", - "rev": "4cff07de74b50e64bdd68cd4e722ab5b6b35ee48", + "rev": "f0ec2b3fae4df92ea7788359aef9e07bb88d720f", "type": "github" }, "original": { @@ -357,11 +357,11 @@ ] }, "locked": { - "lastModified": 1791711434, - "narHash": "sha256-LpIhxnuO0tYeZ4k7BbNMxsPs2zJpB4hWXO1jdhUuE7Q=", + "lastModified": 1792309949, + "narHash": "sha256-2DAEMk8YkV8OF6N2uw9jQ016cYoNkcgnq50AShwWxNw=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "9a2dd40780eeab8543aa97c59c26f11267025616", + "rev": "1b4d1758fa6053c5d6284254a793134fa602fbff", "type": "github" }, "original": { @@ -383,11 +383,11 @@ ] }, "locked": { - "lastModified": 1792209652, - "narHash": "sha256-363EuE6gG1+Z2RJer+LHPdKGjAuJNh9tOoal0wfvm/w=", + "lastModified": 1792556406, + "narHash": "sha256-DSRDShv41SWpRsyP5SqmIgGAp2Z3AVREZxEwqdcnXj8=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "ef9ae921161498a28b08fd4656ed44aff87cda67", + "rev": "27f79badc34d8df808bc617db8f0de208ecd375f", "type": "github" }, "original": { @@ -416,11 +416,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1791956154, - "narHash": "sha256-jBYGPi4udQ9uo4KQp9m2J0546nJVQitG15gvZSaVVAs=", + "lastModified": 1792502884, + "narHash": "sha256-IoNisKcGbUjdd45qCqywGMCYmZ5EnkxezvLII0FWwNA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "55bfb4d7437bd4e09ab7cba58a43bd68eb310044", + "rev": "02c087f3fe673c9e317f206a627cb6b910336dbe", "type": "github" }, "original": { @@ -588,11 +588,11 @@ ] }, "locked": { - "lastModified": 1792206579, - "narHash": "sha256-CU6MIv91U26LOTQRIie1hTbjzcLT2Hm0SkFp6gZWrN0=", + "lastModified": 1792456017, + "narHash": "sha256-K7ycK5/pZHTpC1vTMeToYZiQ5pN16ZvGcsAw431ZYyY=", "ref": "refs/heads/main", - "rev": "d245ec963a2332d490b62afc441a46ab373002ed", - "revCount": 1019, + "rev": "0549df806e62831b671afd4616f9798024e40f33", + "revCount": 1054, "type": "git", "url": "https://tangled.org/devins.page/tinysub" }, -- knotmirror 0.0.1 From 495bf9456f05ed0557627349fe44899e0f84fee9 Mon Sep 17 00:00:00 2001 From: y3 Date: Wed, 21 Oct 2026 13:14:28 +0100 Subject: [PATCH 12/15] chore(sable-next): update to v2.1.0 and pin release asset --- pkgs/sable-next/default.nix | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pkgs/sable-next/default.nix b/pkgs/sable-next/default.nix index 72decf5..bd7b0c3 100644 --- a/pkgs/sable-next/default.nix +++ b/pkgs/sable-next/default.nix @@ -5,15 +5,23 @@ stdenvNoCC, conf ? { }, }: +let + # Upstream release v2.1.0, built from commit + # 73dfab01a4723964e6df92db4e47b415034991ed. + rev = "73dfab01a4723964e6df92db4e47b415034991ed"; +in stdenvNoCC.mkDerivation (finalAttrs: { pname = "sable-next"; - version = "2.0.1"; + version = "2.1.0"; src = fetchurl { - url = "https://git.sable.moe/SableClient/sable-next/releases/download/v${finalAttrs.version}/sable-${finalAttrs.version}-web.tar.gz"; - hash = "sha256-TGr4oRWniAWtTsMHRPcdmzNtNt/3Bhrz39yCd9fsFBo="; + # Immutable release asset for v2.1.0 (${rev}), not the moving tag URL. + url = "https://git.sable.moe/attachments/1f8cfb06-26c9-4f27-ac93-27f12d3b5838"; + hash = "sha256-y2uFyYxJxZjJtIU3ZK1BlqvJiA+Ev2H5lgYthhBJ3E0="; }; + passthru = { inherit rev; }; + nativeBuildInputs = [ jq ]; dontStrip = true; -- knotmirror 0.0.1 From 000f63eb15bdd39b78b90a2dec571241dc6a8da9 Mon Sep 17 00:00:00 2001 From: y3 Date: Wed, 21 Oct 2026 13:19:05 +0100 Subject: [PATCH 13/15] fix: temporarily disable audacity due to build failure --- users/graphical.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/users/graphical.nix b/users/graphical.nix index 9e9e0ec..a37cf14 100644 --- a/users/graphical.nix +++ b/users/graphical.nix @@ -90,7 +90,7 @@ seahorse hyprpicker remmina - audacity + # audacity (broken in nixpkgs 26.11 20261020) obsidian (boxes.createPWA self'.packages.helium { -- knotmirror 0.0.1 From 3e7151249b5f3a2be44013d4bc8eb5ae9b14590e Mon Sep 17 00:00:00 2001 From: y3 Date: Wed, 21 Oct 2026 13:31:16 +0100 Subject: [PATCH 14/15] feat(katsu): enable opentabletdriver --- hosts/katsu/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/hosts/katsu/default.nix b/hosts/katsu/default.nix index fa96a77..767dbe3 100644 --- a/hosts/katsu/default.nix +++ b/hosts/katsu/default.nix @@ -41,6 +41,8 @@ ]; hardware = { + opentabletdriver.enable = true; + graphics.extraPackages = [ pkgs.intel-media-driver ]; nvidia = { -- knotmirror 0.0.1 From 9451ce9d0889f9fb3240afa4104a5b2cf1e257d0 Mon Sep 17 00:00:00 2001 From: y3 Date: Fri, 23 Oct 2026 22:22:13 +0100 Subject: [PATCH 15/15] chore(flake): update --- flake.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/flake.lock b/flake.lock index 9d7027e..a735d94 100644 --- a/flake.lock +++ b/flake.lock @@ -287,11 +287,11 @@ ] }, "locked": { - "lastModified": 1792232164, - "narHash": "sha256-JEEL3JAvjE3yh4rcNCIk19tLUVhfAHO/jsTOCG7ksEM=", + "lastModified": 1792667892, + "narHash": "sha256-xOkYTqP35odZDL2jTNf+1wtD7ebLaUPJwecufdXIixg=", "owner": "port22exposed", "repo": "nixpille-helium", - "rev": "09df9a407b92f6b16f48364e448034f0fb990463", + "rev": "64f966b2cacad4abc3db75a4376283ed569b4630", "type": "github" }, "original": { @@ -322,11 +322,11 @@ ] }, "locked": { - "lastModified": 1792366139, - "narHash": "sha256-jto4pdsl0bgErQ5vaMc3gOyj//PILLRJuqX3I7fUk6s=", + "lastModified": 1792737899, + "narHash": "sha256-P0/GhewcEQmAbzq3QunNWY2jLJaYH9F6c/5dEM/jQ4M=", "owner": "nix-darwin", "repo": "nix-darwin", - "rev": "f0ec2b3fae4df92ea7788359aef9e07bb88d720f", + "rev": "bb0b90dbd54e207100de72b5dcbe3188c98a4b69", "type": "github" }, "original": { @@ -383,11 +383,11 @@ ] }, "locked": { - "lastModified": 1792556406, - "narHash": "sha256-DSRDShv41SWpRsyP5SqmIgGAp2Z3AVREZxEwqdcnXj8=", + "lastModified": 1792729454, + "narHash": "sha256-mBnwgdKuGgDkY0jMTqYZ/qZNMGzsZS7RBGPzumGvfnE=", "owner": "Infinidoge", "repo": "nix-minecraft", - "rev": "27f79badc34d8df808bc617db8f0de208ecd375f", + "rev": "5d5302f325a100167c5e5cf46e434294653b2bc5", "type": "github" }, "original": {