Это совершенно нормально и не является поводом для беспокойства. Примером того, когда это может произойти, является обновление вашего канала, и в этом случае вы получите две (или потенциально больше )копий nixpkgs. Даже если вы перестроите свою систему на основе обновленного канала, старое поколение системы все еще может ссылаться на старую версию.
В более общем случае -независимо от того, может ли на него ссылаться что-то, Nix не удалит старую версию, пока не будет выполнена сборка мусора.
Один частичный ответ — запускать небольшой скрипт вместо konsole
напрямую:
#!/bin/bash
#SIGTERM handler
on_term () {
echo "SIGTERM got, sending to worker"
kill -TERM $WORKERID
}
#intercept SIGTERM
trap _term SIGTERM
# launch console
konsole --hide-menubar --hide-tabbar --nofork -e worker &
#get Konsole pid
KONSOLEID=$!
# wait for worker to be launched
sleep 1
# get worker pid
WORKERID=$(pgrep -P $KONSOLEID worker )
echo "worker is running under pid: $WORKERID"
# wait for one child end
wait
echo "worker terminated"
Это решение не идеально, так как оно не работает, когда Konsole
находится рядом с кнопкой закрытия, но решает исходную проблему.