!aGqRytqbCECitOFhbt:nixos.org

Release Management

342 Members
25.11 "Xantusia" | https://nixos.github.io/release-wiki/Home.html93 Servers

Load older messages


SenderMessageTime
10 Nov 2023
@raitobezarius:matrix.orgraitobezariusSo in the end, we have to choose between evaluation errors or systemd runtime errors20:53:38
@raitobezarius:matrix.orgraitobezariusI mean, if we remove the stateVersion, we can make a systemd runtime error an evaluation error and just after the fix, it's a systemd runtime error20:53:59
@bendlas:matrix.orgbendlas
In reply to @raitobezarius:matrix.org
I think blocking on evaluation is the least way to piss people off

yes. unfortunately, we only seem to have the infrastructure for doing that for the variant of outright removing the option ...

I guess the principled way of doing that would be to add a kind of system-level "check phase", where before system activation, something would check compatibility ....

20:54:09
@bendlas:matrix.orgbendlas... but it's also mighty late for attempting to squeeze a phase between eval and runtime ... 😅20:55:23
@bendlas:matrix.orgbendlasmore thoughts on this: https://github.com/NixOS/nixpkgs/issues/206467#issuecomment-180644153121:16:20
@raitobezarius:matrix.orgraitobezariusa check script could exist21:25:48
@raitobezarius:matrix.orgraitobezariusbut it would probably end up just creating a systemd runtime failure21:25:54
@raitobezarius:matrix.orgraitobezariusI don't see how you do check script like NGINX check phase in a sandbox21:26:07
@raitobezarius:matrix.orgraitobezariusyou'd need to leak the data inside the sandbox21:26:11
@raitobezarius:matrix.orgraitobezariusthat's almost impossible21:26:15
@raitobezarius:matrix.orgraitobezariusdoing a proper activation prefail would require a complete redesign of the stc21:26:26
@raitobezarius:matrix.orgraitobezariusin nixops, there's an issue to enable policy deployments in stc21:26:34
@raitobezarius:matrix.orgraitobezariusthis was never adopted21:26:38
* @raitobezarius:matrix.orgraitobezarius feel like he mentioned the policy deployments feature 30 times in his life21:26:46
@bendlas:matrix.orgbendlas

feels like we could get started by replacing activation with something that runs the existing code through something like

[{action: "nixos.generation-symlink/set",
  target: "/nix/store/<system>"},
 {action: "nixos.legacy/activate-system",
  variant: "boot",
  target: "/nix/store/<system>"}]
21:39:51
@bendlas:matrix.orgbendlasif an action can also declare a pre-check, which is run before any action is attempted, that should already allow to run checks like this, without dragging state into the sandbox.21:47:04
@raitobezarius:matrix.orgraitobezariusanyone is welcome to work on that, but there's a lot of work involved into touching stc22:13:18
@bendlas:matrix.orgbendlasyeah, wanted to ask, what does stc stand for? 😅22:13:52
@raitobezarius:matrix.orgraitobezariusswitch-to-configuration.pl22:14:21
@raitobezarius:matrix.orgraitobezarius(click on the link)22:14:36
@bendlas:matrix.orgbendlas
In reply to @raitobezarius:matrix.org
anyone is welcome to work on that, but there's a lot of work involved into touching stc
right! hence: do the minimal thing, that would allow everyone to start chipping away at it ...
22:15:49
@bendlas:matrix.orgbendlas ... while already addressing sore spots, like compatibility checks and migrations in /var 22:17:28
@bendlas:matrix.orgbendlas so stc would be the action I called nixos.legacy/activate-system. 22:20:55
@bendlas:matrix.orgbendlas

and according to my reverse-engineered deployment script, these are the two necessary actions, to emulate nixos-rebuild:

  deploy-ssh-for = {
    type = "app";
    program = toString (pkgs.writeScript "deploy-ssh-for" ''
      #!${pkgs.stdenv.shell}
      set -eux
      configName=$1
      remote=root@$2
      action=$3
      shift 3
      if [ gc = "$action" ]
      then ssh -C $remote nix-collect-garbage "$@"
           exit 0
      fi
      configuration=$(nix build .#nixosConfigurations.$configName.config.system.build.toplevel --print-out-paths --no-link -L)
      nix-copy-closure $(if [ "''${1-}" != --direct ]; then echo --use-substitutes; fi) --gzip --to $remote $configuration
      if [ dry-run = "$action" ]
      then set +x
           echo "[dry-run] Would run these commands:"
           echo "    ssh -C $remote nix-env --profile /nix/var/nix/profiles/system --set $configuration"
           echo "    ssh -C $remote $configuration/bin/switch-to-configuration $action"
      else if [ build = "$action" ]
      then ssh -C $remote nix-env --profile /tmp/nixos-system --set $configuration
      else if [ boot = "$action" -o switch = "$action" ]
      then ssh -C $remote nix-env --profile /nix/var/nix/profiles/system --set $configuration
           ssh -C $remote $configuration/bin/switch-to-configuration $action
      else echo "Unknown action '$action'. Use one of: dry-run, boot, switch"
      fi fi fi
    '');
  };
22:24:25
@bendlas:matrix.orgbendlas(line 24-25)22:26:03
@raitobezarius:matrix.orgraitobezariusRight22:38:46
@raitobezarius:matrix.orgraitobezariusLet's move this to 24.05 though22:38:54
@raitobezarius:matrix.orgraitobezariusAnd we still need to focus on the immediate problem :)22:39:04
@bendlas:matrix.orgbendlashehehe, I'm actually kind of tempted to prove the concept by implementing the postgresql downgrade ... also because I feel like I can't do much better than https://github.com/NixOS/nixpkgs/pull/266270 in the local optimum22:45:10
@bendlas:matrix.orgbendlasbut no worries, if I decide to attempt it, it's on me against your advice. No expectations attached22:46:32

Show newer messages


Back to Room ListRoom Version: 6