From 140d675f06e113e5734f6138a0925c126db5871a Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sun, 27 Sep 2026 20:46:26 -0400 Subject: [PATCH 1/5] Add install of instawow. --- nix/configuration/configuration.nix | 1 + nix/configuration/hosts/odo/default.nix | 1 + nix/configuration/hosts/quark/default.nix | 1 + nix/configuration/roles/instawow/default.nix | 53 ++++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 nix/configuration/roles/instawow/default.nix diff --git a/nix/configuration/configuration.nix b/nix/configuration/configuration.nix index 5e874d7..691f958 100644 --- a/nix/configuration/configuration.nix +++ b/nix/configuration/configuration.nix @@ -51,6 +51,7 @@ in ./roles/graphviz ./roles/hydra ./roles/image_based_appliance + ./roles/instawow ./roles/iso ./roles/iso_mount ./roles/jujutsu diff --git a/nix/configuration/hosts/odo/default.nix b/nix/configuration/hosts/odo/default.nix index 4cc7b9d..97d8d59 100644 --- a/nix/configuration/hosts/odo/default.nix +++ b/nix/configuration/hosts/odo/default.nix @@ -107,6 +107,7 @@ me.graphical = true; me.graphics_card_type = "amd"; me.graphviz.enable = true; + me.instawow.enable = true; me.iso_mount.enable = true; me.jujutsu.config = ../../roles/jujutsu/files/jujutsu_config_home.toml; me.jujutsu.enable = true; diff --git a/nix/configuration/hosts/quark/default.nix b/nix/configuration/hosts/quark/default.nix index b476e6d..3540285 100644 --- a/nix/configuration/hosts/quark/default.nix +++ b/nix/configuration/hosts/quark/default.nix @@ -100,6 +100,7 @@ me.graphical = true; me.graphics_card_type = "amd"; me.graphviz.enable = true; + me.instawow.enable = true; me.iso_mount.enable = true; me.jujutsu.config = ../../roles/jujutsu/files/jujutsu_config_home.toml; me.jujutsu.enable = true; diff --git a/nix/configuration/roles/instawow/default.nix b/nix/configuration/roles/instawow/default.nix new file mode 100644 index 0000000..fa24bcf --- /dev/null +++ b/nix/configuration/roles/instawow/default.nix @@ -0,0 +1,53 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + imports = [ ]; + + options.me = { + instawow.enable = lib.mkOption { + type = lib.types.bool; + default = false; + example = true; + description = "Whether we want to install instawow."; + }; + }; + + config = lib.mkIf config.me.instawow.enable { + environment.systemPackages = with pkgs; [ + instawow + ]; + + environment.persistence."/persist" = lib.mkIf (config.me.mountPersistence) { + hideMounts = true; + users.talexander = { + directories = [ + { + directory = ".config/instawow"; + user = "talexander"; + group = "talexander"; + mode = "0755"; + } + ]; + }; + }; + + environment.persistence."/state" = lib.mkIf (config.me.mountPersistence) { + hideMounts = true; + users.talexander = { + directories = [ + { + directory = ".cache/instawow"; + user = "talexander"; + group = "talexander"; + mode = "0755"; + } + ]; + }; + }; + }; +} From 6bbfc23d3a963660e627cf76ac3231ace8c1313d Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 10 Oct 2026 11:12:08 -0400 Subject: [PATCH 2/5] Update aiohttp-client-cache. The current version in nixpkgs has not been updated for aiohttp 3.14. Error: TypeError: ClientResponse.__init__() missing 1 required keyword-only argument: 'stream_writer' --- nix/configuration/configuration.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/nix/configuration/configuration.nix b/nix/configuration/configuration.nix index 691f958..755773a 100644 --- a/nix/configuration/configuration.nix +++ b/nix/configuration/configuration.nix @@ -283,6 +283,27 @@ in (disableOptimizations "zopfli") (disableOptimizations "nototools") # Needs to use the same version of python as the zopfli package (disableOptimizations "lib2geom") # Tests failing: ellipse-test, elliptical-arc-test, line-test, polynomial-test + (final: prev: { + pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ + (python-final: python-prev: { + aiohttp-client-cache = python-prev.aiohttp-client-cache.overridePythonAttrs ( + oldAttrs: + let + version = "0.15.0"; + in + { + inherit version; + + src = final.fetchPypi { + pname = "aiohttp_client_cache"; + inherit version; + hash = "sha256-Jk+n1pvNsuT+mZTn9Bq17sfLuipfXiYNRE0AL5Ym43Q="; + }; + } + ); + }) + ]; + }) ]; hardware.firmware = From bb62d01ab7f5331817c42213aedaab41ec97f1cf Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Sat, 10 Oct 2026 11:39:31 -0400 Subject: [PATCH 3/5] Update instawow. --- nix/configuration/configuration.nix | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/nix/configuration/configuration.nix b/nix/configuration/configuration.nix index 755773a..345521b 100644 --- a/nix/configuration/configuration.nix +++ b/nix/configuration/configuration.nix @@ -283,6 +283,32 @@ in (disableOptimizations "zopfli") (disableOptimizations "nototools") # Needs to use the same version of python as the zopfli package (disableOptimizations "lib2geom") # Tests failing: ellipse-test, elliptical-arc-test, line-test, polynomial-test + (final: prev: { + instawow = prev.instawow.overrideAttrs ( + finalAttrs: prevAttrs: + let + version = "7.2.1"; + in + { + inherit version; + + src = final.fetchFromGitHub { + owner = "layday"; + repo = "instawow"; + tag = "v${finalAttrs.version}"; + hash = "sha256-5y+oJfzWwaUc3p4fzsQ4j8a6YJEsI+3Qy3gK6VPkjA4="; + }; + + propagatedBuildInputs = prevAttrs.propagatedBuildInputs ++ [ final.python3.pkgs.versioningit ]; + + postPatch = '' + # Upstream uses versioningit to set the version + sed -i '/^name =.*/a version = "${version}"' pyproject.toml + sed -i "/dynamic =/,+2d" pyproject.toml + ''; + } + ); + }) (final: prev: { pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ (python-final: python-prev: { From b0dbf88de3fe50caaef2cb43a6f5e5bd8d0f9a9c Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Wed, 21 Oct 2026 13:25:53 -0400 Subject: [PATCH 4/5] Update packages. --- nix/configuration/configuration.nix | 1 + nix/configuration/flake.lock | 18 +++++++++--------- nix/configuration/formats/installer.nix | 1 - nix/configuration/roles/boot/default.nix | 1 - nix/configuration/roles/kernel/default.nix | 2 +- nix/kubernetes/configuration.nix | 1 + nix/kubernetes/flake.lock | 18 +++++++++--------- nix/kubernetes/formats/installer.nix | 1 - nix/kubernetes/roles/boot/default.nix | 1 - 9 files changed, 21 insertions(+), 23 deletions(-) diff --git a/nix/configuration/configuration.nix b/nix/configuration/configuration.nix index 345521b..acf269f 100644 --- a/nix/configuration/configuration.nix +++ b/nix/configuration/configuration.nix @@ -283,6 +283,7 @@ in (disableOptimizations "zopfli") (disableOptimizations "nototools") # Needs to use the same version of python as the zopfli package (disableOptimizations "lib2geom") # Tests failing: ellipse-test, elliptical-arc-test, line-test, polynomial-test + (disableOptimizations "libjpeg_turbo") # Test failing: djpeg12-shared-3x2-float-prog-cmp (final: prev: { instawow = prev.instawow.overrideAttrs ( finalAttrs: prevAttrs: diff --git a/nix/configuration/flake.lock b/nix/configuration/flake.lock index d01c55f..23c0c8c 100644 --- a/nix/configuration/flake.lock +++ b/nix/configuration/flake.lock @@ -22,11 +22,11 @@ ] }, "locked": { - "lastModified": 1789770686, - "narHash": "sha256-uZkBR7yHdIKUFB5SZdfgh1qkGfI3XmYmI/lTiquxbck=", + "lastModified": 1792526520, + "narHash": "sha256-3hSJlv8mUVnZPMWK2+CM7a9O+nR6Z4mCh27NfLCmTPc=", "owner": "nix-community", "repo": "disko", - "rev": "725ea35e410ad83be4931d1bff7e090eacaf3563", + "rev": "cedd626e11b635470fa6f9fdb8ad79b0075dd7f9", "type": "github" }, "original": { @@ -123,11 +123,11 @@ ] }, "locked": { - "lastModified": 1769548169, - "narHash": "sha256-03+JxvzmfwRu+5JafM0DLbxgHttOQZkUtDWBmeUkN8Y=", + "lastModified": 1792739756, + "narHash": "sha256-s0TeXWG5Ci75Y/Hzon0Z7NrN/fG773Rc54/z6oPFszQ=", "owner": "nix-community", "repo": "impermanence", - "rev": "7b1d382faf603b6d264f58627330f9faa5cba149", + "rev": "fa627f4c8b8e92f58f58a73d99ee4e1304e64eb2", "type": "github" }, "original": { @@ -185,11 +185,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1791260994, - "narHash": "sha256-Miqqk/ammqnTUxaoCyvtwoPeLbI1ksFyLxi/CazZpWY=", + "lastModified": 1793110635, + "narHash": "sha256-dhoW6VgFWlaodSY5jrBn+CF2FLmaUvDVgM7+C7T2+NM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "151fa4e8ddfdd8dd25d945ad94ed54a13de9f6e4", + "rev": "31ecbaca1bdefa45dffc409f0250bd8039ea0010", "type": "github" }, "original": { diff --git a/nix/configuration/formats/installer.nix b/nix/configuration/formats/installer.nix index 38a7834..6a8425f 100644 --- a/nix/configuration/formats/installer.nix +++ b/nix/configuration/formats/installer.nix @@ -45,7 +45,6 @@ in "systemd.unit=getty.target" ]; boot.supportedFilesystems.zfs = true; - boot.initrd.systemd.enable = true; networking.hostId = "04581ecf"; diff --git a/nix/configuration/roles/boot/default.nix b/nix/configuration/roles/boot/default.nix index 035f747..e10c1e2 100644 --- a/nix/configuration/roles/boot/default.nix +++ b/nix/configuration/roles/boot/default.nix @@ -71,7 +71,6 @@ boot.loader.systemd-boot.memtest86.enable = true; # Check what will be lost with `zfs diff zroot/linux/root@blank` - boot.initrd.systemd.enable = lib.mkDefault true; boot.initrd.systemd.services.zfs-rollback = lib.mkIf config.me.rollback.enable { description = "Rollback ZFS root dataset to blank snapshot"; wantedBy = [ diff --git a/nix/configuration/roles/kernel/default.nix b/nix/configuration/roles/kernel/default.nix index 6686b8e..83934ec 100644 --- a/nix/configuration/roles/kernel/default.nix +++ b/nix/configuration/roles/kernel/default.nix @@ -123,7 +123,7 @@ in kernel.version = lib.mkOption { type = lib.types.str; # default = "linux"; # LTS - default = "linux_7_2"; # LTS + default = "linux_7_2"; example = "linux_6_18"; description = "What version of the kernl should we use."; }; diff --git a/nix/kubernetes/configuration.nix b/nix/kubernetes/configuration.nix index ca3e4b7..a6893ad 100644 --- a/nix/kubernetes/configuration.nix +++ b/nix/kubernetes/configuration.nix @@ -149,6 +149,7 @@ }) (disableOptimizationsPython3 "zopfli") (disableOptimizations "zopfli") + (disableOptimizations "libjpeg_turbo") ]; # This option defines the first version of NixOS you have installed on this particular machine, diff --git a/nix/kubernetes/flake.lock b/nix/kubernetes/flake.lock index 2df2300..3a992d2 100644 --- a/nix/kubernetes/flake.lock +++ b/nix/kubernetes/flake.lock @@ -22,11 +22,11 @@ ] }, "locked": { - "lastModified": 1789770686, - "narHash": "sha256-uZkBR7yHdIKUFB5SZdfgh1qkGfI3XmYmI/lTiquxbck=", + "lastModified": 1792526520, + "narHash": "sha256-3hSJlv8mUVnZPMWK2+CM7a9O+nR6Z4mCh27NfLCmTPc=", "owner": "nix-community", "repo": "disko", - "rev": "725ea35e410ad83be4931d1bff7e090eacaf3563", + "rev": "cedd626e11b635470fa6f9fdb8ad79b0075dd7f9", "type": "github" }, "original": { @@ -123,11 +123,11 @@ ] }, "locked": { - "lastModified": 1769548169, - "narHash": "sha256-03+JxvzmfwRu+5JafM0DLbxgHttOQZkUtDWBmeUkN8Y=", + "lastModified": 1792739756, + "narHash": "sha256-s0TeXWG5Ci75Y/Hzon0Z7NrN/fG773Rc54/z6oPFszQ=", "owner": "nix-community", "repo": "impermanence", - "rev": "7b1d382faf603b6d264f58627330f9faa5cba149", + "rev": "fa627f4c8b8e92f58f58a73d99ee4e1304e64eb2", "type": "github" }, "original": { @@ -164,11 +164,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1791260994, - "narHash": "sha256-Miqqk/ammqnTUxaoCyvtwoPeLbI1ksFyLxi/CazZpWY=", + "lastModified": 1793110635, + "narHash": "sha256-dhoW6VgFWlaodSY5jrBn+CF2FLmaUvDVgM7+C7T2+NM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "151fa4e8ddfdd8dd25d945ad94ed54a13de9f6e4", + "rev": "31ecbaca1bdefa45dffc409f0250bd8039ea0010", "type": "github" }, "original": { diff --git a/nix/kubernetes/formats/installer.nix b/nix/kubernetes/formats/installer.nix index 93b1187..4f3cd34 100644 --- a/nix/kubernetes/formats/installer.nix +++ b/nix/kubernetes/formats/installer.nix @@ -45,7 +45,6 @@ in "systemd.unit=getty.target" ]; boot.supportedFilesystems.zfs = true; - boot.initrd.systemd.enable = true; networking.hostId = "04581ecf"; diff --git a/nix/kubernetes/roles/boot/default.nix b/nix/kubernetes/roles/boot/default.nix index 035f747..e10c1e2 100644 --- a/nix/kubernetes/roles/boot/default.nix +++ b/nix/kubernetes/roles/boot/default.nix @@ -71,7 +71,6 @@ boot.loader.systemd-boot.memtest86.enable = true; # Check what will be lost with `zfs diff zroot/linux/root@blank` - boot.initrd.systemd.enable = lib.mkDefault true; boot.initrd.systemd.services.zfs-rollback = lib.mkIf config.me.rollback.enable { description = "Rollback ZFS root dataset to blank snapshot"; wantedBy = [ From a7b2c0fc633baf28533ad4a259ef9fca9af882c4 Mon Sep 17 00:00:00 2001 From: Tom Alexander Date: Wed, 28 Oct 2026 15:23:48 -0400 Subject: [PATCH 5/5] With the latest updates, we no longer need to patch the versions of instawow and aiohttp-client-cache. --- nix/configuration/configuration.nix | 47 ----------------------------- 1 file changed, 47 deletions(-) diff --git a/nix/configuration/configuration.nix b/nix/configuration/configuration.nix index acf269f..5f92004 100644 --- a/nix/configuration/configuration.nix +++ b/nix/configuration/configuration.nix @@ -284,53 +284,6 @@ in (disableOptimizations "nototools") # Needs to use the same version of python as the zopfli package (disableOptimizations "lib2geom") # Tests failing: ellipse-test, elliptical-arc-test, line-test, polynomial-test (disableOptimizations "libjpeg_turbo") # Test failing: djpeg12-shared-3x2-float-prog-cmp - (final: prev: { - instawow = prev.instawow.overrideAttrs ( - finalAttrs: prevAttrs: - let - version = "7.2.1"; - in - { - inherit version; - - src = final.fetchFromGitHub { - owner = "layday"; - repo = "instawow"; - tag = "v${finalAttrs.version}"; - hash = "sha256-5y+oJfzWwaUc3p4fzsQ4j8a6YJEsI+3Qy3gK6VPkjA4="; - }; - - propagatedBuildInputs = prevAttrs.propagatedBuildInputs ++ [ final.python3.pkgs.versioningit ]; - - postPatch = '' - # Upstream uses versioningit to set the version - sed -i '/^name =.*/a version = "${version}"' pyproject.toml - sed -i "/dynamic =/,+2d" pyproject.toml - ''; - } - ); - }) - (final: prev: { - pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [ - (python-final: python-prev: { - aiohttp-client-cache = python-prev.aiohttp-client-cache.overridePythonAttrs ( - oldAttrs: - let - version = "0.15.0"; - in - { - inherit version; - - src = final.fetchPypi { - pname = "aiohttp_client_cache"; - inherit version; - hash = "sha256-Jk+n1pvNsuT+mZTn9Bq17sfLuipfXiYNRE0AL5Ym43Q="; - }; - } - ); - }) - ]; - }) ]; hardware.firmware =