From add2152e3a9721a47a3fdb2323e6ea56ecd33454 Mon Sep 17 00:00:00 2001 From: "Geir O. Jerstad" Date: Fri, 4 Jul 2025 15:09:23 +0200 Subject: [PATCH 1/4] disabled incus --- flake.lock | 6 ++-- .../congenital-optimist/configuration.nix | 2 +- modules/desktop/common.nix | 8 +++-- modules/virtualization/incus.nix | 32 ++++++++++++++++--- packages/lab-tool/main.scm | 10 +----- packages/lab-tool/utils/config.scm | 5 +-- 6 files changed, 42 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index 391f49d..b3d8ad0 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1751211869, - "narHash": "sha256-1Cu92i1KSPbhPCKxoiVG5qnoRiKTgR5CcGSRyLpOd7Y=", + "lastModified": 1751479989, + "narHash": "sha256-M5KgdpVBVcW4HRVq9/OSRbrxlwsQ1ogEKqnvzsClDqU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b43c397f6c213918d6cfe6e3550abfe79b5d1c51", + "rev": "34627c90f062da515ea358360f448da57769236e", "type": "github" }, "original": { diff --git a/machines/congenital-optimist/configuration.nix b/machines/congenital-optimist/configuration.nix index 709d234..1c86f71 100644 --- a/machines/congenital-optimist/configuration.nix +++ b/machines/congenital-optimist/configuration.nix @@ -46,7 +46,7 @@ ../../modules/users/sma.nix # Virtualization configuration - ../../modules/virtualization/incus.nix + # ../../modules/virtualization/incus.nix # Disabled: cowsql build issue ../../modules/virtualization/libvirt.nix ../../modules/virtualization/podman.nix ]; diff --git a/modules/desktop/common.nix b/modules/desktop/common.nix index b9f1123..fb92519 100644 --- a/modules/desktop/common.nix +++ b/modules/desktop/common.nix @@ -12,8 +12,12 @@ # XDG Portal configuration for Wayland/X11 compatibility xdg.portal = { enable = true; - wlr.enable = true; - extraPortals = [pkgs.xdg-desktop-portal-gtk]; + extraPortals = [ + pkgs.xdg-desktop-portal-wlr + pkgs.xdg-desktop-portal-gtk + ]; + config.common.default = "*"; + config.niri.default = ["wlr" "gtk"]; }; # Display manager and session management diff --git a/modules/virtualization/incus.nix b/modules/virtualization/incus.nix index 25f07d9..49cb49b 100644 --- a/modules/virtualization/incus.nix +++ b/modules/virtualization/incus.nix @@ -1,14 +1,38 @@ { config, pkgs, ... }: +let + # Fix cowsql build issue with glibc 2.40 + cowsql-fixed = pkgs.cowsql.overrideAttrs (oldAttrs: { + patches = (oldAttrs.patches or []) ++ [ + (pkgs.writeText "cowsql-float-t-fix.patch" '' + --- a/src/lib/serialize.h + +++ b/src/lib/serialize.h + @@ -37,7 +37,9 @@ + #define SERIALIZE_H_ + + #include + +#ifndef _MATH_H + typedef double float_t; + +#endif + + struct serialize; + '') + ]; + }); + + incus-fixed = pkgs.incus.override { + cowsql = cowsql-fixed; + }; +in { virtualisation.incus = { enable = true; ui.enable = true; - package = pkgs.incus; + package = incus-fixed; }; - environment.systemPackages = with pkgs; [ - incus - lxc + environment.systemPackages = [ + incus-fixed + pkgs.lxc ]; networking.firewall.allowedTCPPorts = [ 8443 ]; diff --git a/packages/lab-tool/main.scm b/packages/lab-tool/main.scm index 3b15de6..15803b6 100755 --- a/packages/lab-tool/main.scm +++ b/packages/lab-tool/main.scm @@ -114,15 +114,7 @@ Home lab root: ~a (define (cmd-deploy machine-name . args) "Deploy configuration to machine using deploy-rs" - (let* ((base-options (parse-deploy-options args)) - ;; Auto-skip checks for local machines to speed up deployment - (local-machines '("little-rascal")) - (should-skip-checks (member machine-name local-machines)) - (options (if should-skip-checks - (cons '(skip-checks . #t) base-options) - base-options))) - (when should-skip-checks - (log-info "Auto-skipping checks for local machine: ~a" machine-name)) + (let* ((options (parse-deploy-options args))) (log-info "Deploying to machine: ~a using deploy-rs" machine-name) (if (validate-machine-name machine-name) (let ((result (deploy-machine machine-name "default" options))) diff --git a/packages/lab-tool/utils/config.scm b/packages/lab-tool/utils/config.scm index c8838a0..51abd04 100644 --- a/packages/lab-tool/utils/config.scm +++ b/packages/lab-tool/utils/config.scm @@ -20,8 +20,9 @@ (define default-config `((homelab-root . "/home/geir/Home-lab") (machines . ((congenital-optimist - (type . local) - (hostname . "localhost") + (type . remote) + (hostname . "congenital-optimist.tail807ea.ts.net") + (ssh-alias . "congenital-optimist.tail807ea.ts.net") (ssh-user . "sma") (services . (workstation development))) (sleeper-service From 2069f289ffdd39a914f8e1676f6059271b86ca50 Mon Sep 17 00:00:00 2001 From: "Geir O. Jerstad" Date: Fri, 4 Jul 2025 15:39:00 +0200 Subject: [PATCH 2/4] fix: remove incus-admin group references from user configs - Remove incus-admin group from geir and sma users - Fixes deployment issue where cowsql was being built despite incus being disabled - Addresses congenital-optimist build failure --- modules/users/geir.nix | 1 - modules/users/sma.nix | 1 - 2 files changed, 2 deletions(-) diff --git a/modules/users/geir.nix b/modules/users/geir.nix index e4f3738..ce312e7 100644 --- a/modules/users/geir.nix +++ b/modules/users/geir.nix @@ -20,7 +20,6 @@ in { "wheel" "networkmanager" "libvirt" - "incus-admin" "podman" "audio" "video" diff --git a/modules/users/sma.nix b/modules/users/sma.nix index e074086..9688016 100644 --- a/modules/users/sma.nix +++ b/modules/users/sma.nix @@ -21,7 +21,6 @@ "wheel" # sudo access "networkmanager" # network management "libvirt" # virtualization management - "incus-admin" # container management "podman" # container runtime "docker" # docker compatibility (if needed) "media" # shared media access for NFS shares From 250ba5e2ea6ddfbf236aba6535d9b1bda0d62ab4 Mon Sep 17 00:00:00 2001 From: "Geir O. Jerstad" Date: Fri, 4 Jul 2025 15:57:32 +0200 Subject: [PATCH 3/4] feat: switch to incus-lts and fix lab-tool SSH syntax - Use incus-lts (6.0.4) instead of latest incus to avoid cowsql build issues - Re-enable incus on congenital-optimist with LTS version - Restore incus-admin group membership for users - Fix missing parentheses in lab-tool SSH module - This provides stable containerization without build failures --- .../congenital-optimist/configuration.nix | 2 +- modules/users/geir.nix | 1 + modules/users/sma.nix | 1 + modules/virtualization/incus.nix | 28 ++----------------- packages/lab-tool/utils/ssh.scm | 5 +++- 5 files changed, 9 insertions(+), 28 deletions(-) diff --git a/machines/congenital-optimist/configuration.nix b/machines/congenital-optimist/configuration.nix index 1c86f71..c63d5e5 100644 --- a/machines/congenital-optimist/configuration.nix +++ b/machines/congenital-optimist/configuration.nix @@ -46,7 +46,7 @@ ../../modules/users/sma.nix # Virtualization configuration - # ../../modules/virtualization/incus.nix # Disabled: cowsql build issue + ../../modules/virtualization/incus.nix # Re-enabled with LTS version ../../modules/virtualization/libvirt.nix ../../modules/virtualization/podman.nix ]; diff --git a/modules/users/geir.nix b/modules/users/geir.nix index ce312e7..e4f3738 100644 --- a/modules/users/geir.nix +++ b/modules/users/geir.nix @@ -20,6 +20,7 @@ in { "wheel" "networkmanager" "libvirt" + "incus-admin" "podman" "audio" "video" diff --git a/modules/users/sma.nix b/modules/users/sma.nix index 9688016..e074086 100644 --- a/modules/users/sma.nix +++ b/modules/users/sma.nix @@ -21,6 +21,7 @@ "wheel" # sudo access "networkmanager" # network management "libvirt" # virtualization management + "incus-admin" # container management "podman" # container runtime "docker" # docker compatibility (if needed) "media" # shared media access for NFS shares diff --git a/modules/virtualization/incus.nix b/modules/virtualization/incus.nix index 49cb49b..06f81f0 100644 --- a/modules/virtualization/incus.nix +++ b/modules/virtualization/incus.nix @@ -1,37 +1,13 @@ { config, pkgs, ... }: -let - # Fix cowsql build issue with glibc 2.40 - cowsql-fixed = pkgs.cowsql.overrideAttrs (oldAttrs: { - patches = (oldAttrs.patches or []) ++ [ - (pkgs.writeText "cowsql-float-t-fix.patch" '' - --- a/src/lib/serialize.h - +++ b/src/lib/serialize.h - @@ -37,7 +37,9 @@ - #define SERIALIZE_H_ - - #include - +#ifndef _MATH_H - typedef double float_t; - +#endif - - struct serialize; - '') - ]; - }); - - incus-fixed = pkgs.incus.override { - cowsql = cowsql-fixed; - }; -in { virtualisation.incus = { enable = true; ui.enable = true; - package = incus-fixed; + package = pkgs.incus-lts; # Use LTS version to avoid cowsql build issues }; environment.systemPackages = [ - incus-fixed + pkgs.incus-lts pkgs.lxc ]; diff --git a/packages/lab-tool/utils/ssh.scm b/packages/lab-tool/utils/ssh.scm index 1f9a56d..e9e9af2 100644 --- a/packages/lab-tool/utils/ssh.scm +++ b/packages/lab-tool/utils/ssh.scm @@ -82,7 +82,10 @@ (port (open-pipe* OPEN_READ "/bin/sh" "-c" ssh-cmd)) (output (get-string-all port)) (status (close-pipe port))) - (values (zero? status) output))))))) + (values (zero? status) output))) + (lambda (key . args) + (log-error "SSH command failed for ~a: ~a ~a" machine-name key args) + (values #f ""))))))))))) ;; Copy file to remote machine using scp (define (copy-file-to-remote machine-name local-path remote-path) From 59d287a543e0f238dbeff38523f5cede78a02259 Mon Sep 17 00:00:00 2001 From: "Geir O. Jerstad" Date: Fri, 4 Jul 2025 16:01:52 +0200 Subject: [PATCH 4/4] fix: reduce excess parentheses in lab-tool SSH module - Remove one excess closing parenthesis causing compilation warning - Lab tool core functionality now works properly --- packages/lab-tool/utils/ssh.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/lab-tool/utils/ssh.scm b/packages/lab-tool/utils/ssh.scm index e9e9af2..f6be303 100644 --- a/packages/lab-tool/utils/ssh.scm +++ b/packages/lab-tool/utils/ssh.scm @@ -85,7 +85,7 @@ (values (zero? status) output))) (lambda (key . args) (log-error "SSH command failed for ~a: ~a ~a" machine-name key args) - (values #f ""))))))))))) + (values #f "")))))))))) ;; Copy file to remote machine using scp (define (copy-file-to-remote machine-name local-path remote-path)