X-Git-Url: http://git.scottworley.com/nix-profile-gc/blobdiff_plain/646f1750db86c674874f2b1ba75d5c949c14d5ab..aa867d5420864eeb9621a2adfd5af497444b76ce:/modules/profile-gc.nix?ds=sidebyside diff --git a/modules/profile-gc.nix b/modules/profile-gc.nix index 1452e8f..cb9b3a2 100644 --- a/modules/profile-gc.nix +++ b/modules/profile-gc.nix @@ -1,3 +1,18 @@ +# nix-profile-gc: More gently remove old profiles +# Copyright (C) 2022 Scott Worley +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + { lib, config, pkgs, ... }: let inherit (lib) escapeShellArg; @@ -151,8 +166,8 @@ in { echo "Contemplating profiles for $profile:" >&2 unset active declare -A active - while read p;do - active[$p]=1 + while read pname;do + active[$pname]=1 done < <(verbose_topn ${cfg.logdir}/active-profiles "$profile" ${escapeShellArg cfg.keepLastActive}) current=$(${pkgs.coreutils}/bin/readlink "$profile") currentgen=''${current%-link} @@ -164,7 +179,8 @@ in { echo "(Disregarding unrelated profile $p)" >&2 continue fi - if [[ "$p" == "$current" ]];then + pname=$(${pkgs.coreutils}/bin/basename "$p") + if [[ "$pname" == "$current" ]];then echo "Keeeping current profile $p" >&2 continue fi @@ -172,7 +188,7 @@ in { echo "Keeeping active system/boot profile $p" >&2 continue fi - if [[ "''${active[$p]:-}" ]];then + if [[ "''${active[$pname]:-}" ]];then echo "Keeeping active profile $p" >&2 continue fi