Commit 2a29261c authored by K900's avatar K900
Browse files

calamares: fix wrapper/polkit shenanigans

pkexec resolves symlinks now, which makes our job harder. Yay.
parent 137aab9d
Loading
Loading
Loading
Loading
+7 −26
Original line number Diff line number Diff line
{
  lib,
  runCommand,
  makeWrapper,
  calamares,
  calamares-nixos-extensions,
}:
runCommand "calamares-wrapped"
  {
    inherit (calamares) pname version meta;

    nativeBuildInputs = [ makeWrapper ];
calamares.override {
  extraWrapperArgs = [
      "--prefix XDG_DATA_DIRS : ${calamares-nixos-extensions}/share"
      "--prefix XDG_CONFIG_DIRS : ${calamares-nixos-extensions}/etc"
      "--add-flag --xdg-config"
  ];
}
  ''
    mkdir -p $out/bin

    cd ${calamares}

    for i in *; do
      if [ "$i" == "bin" ]; then
        continue
      fi
      ln -s ${calamares}/$i $out/$i
    done

    makeWrapper ${lib.getExe calamares} $out/bin/calamares \
      --prefix XDG_DATA_DIRS : ${calamares-nixos-extensions}/share \
      --prefix XDG_CONFIG_DIRS : ${calamares-nixos-extensions}/etc \
      --add-flag --xdg-config
  ''
+4 −4
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@
  os-prober,
  xkeyboard_config,

  extraWrapperArgs ? [],

  # passthru.tests
  calamares-nixos,
}:
@@ -84,10 +86,8 @@ stdenv.mkDerivation (finalAttrs: {
  ];

  postPatch = ''
    # this is called via pkexec, which does not resolve symlinks, so the policy
    # needs to point at the symlinked path
    substituteInPlace io.calamares.calamares.policy \
      --replace-fail /usr/bin/calamares /run/current-system/sw/bin/calamares
      --replace-fail /usr/bin/calamares $out/bin/calamares

    substituteInPlace src/modules/locale/SetTimezoneJob.cpp src/libcalamares/locale/TimeZone.cpp \
      --replace-fail /usr/share/zoneinfo ${tzdata}/share/zoneinfo
@@ -110,7 +110,7 @@ stdenv.mkDerivation (finalAttrs: {
        xdg-open-nixos
      ]
    }"
  ];
  ] ++ extraWrapperArgs;

  passthru.tests = {
    inherit calamares-nixos;