{ config, pkgs, ... }: let inherit (pkgs) lib stdenv; inherit (lib.strings) concatStringsSep stringAsChars; inherit (lib.attrsets) attrValues mapAttrs; inherit (lib) makeSearchPath; inherit (import ../lib { inherit pkgs; }) shell-escape; # TODO make these scripts available in an maintenance shell scripts = { # just so we don't reboot accidentally reboot = '' echo no reboot >&2 exit 23 ''; rebuild = '' nixpkgs=''${nixpkgs-/home/tv/src/nixpkgs} nixos-rebuild \ --show-trace \ -I nixpkgs="$nixpkgs" \ switch \ 2>&1 \ | sed ${shell-escape '' s|"\(/home/tv/src/config/[^":]*\)"|\1| s|^trace:\s*\(.*\)|\1| ''} ''; }; wrap = script: '' #! /bin/sh set -euf ${script} ''; #lib=$lib #export PATH=$bin:${makeSearchPath "bin" buildInputs} buildScript = name: script: builtins.trace "building ${name}" '' echo ${shell-escape script} > $bin/${shell-escape name} chmod +x $bin/${shell-escape name} ''; tools = pkgs.stdenv.mkDerivation rec { name = "tools"; src = /var/empty; buildInputs = []; buildPhase = '' mkdir $out bin=$out/bin mkdir $bin ${concatStringsSep "\n" (attrValues (mapAttrs buildScript scripts))} ''; #'' #mkdir $out #lib=$out/lib #cp -r lib $lib #bin=$out/bin #mkdir $bin #${concatStringsSep "\n" (attrValues (mapAttrs (name: script: # '' # { # echo '#! /bin/sh' # echo 'set -euf' # echo "lib=$lib" # echo "export PATH=$bin:${makeSearchPath "bin" buildInputs}" # echo ${shell-escape script} # } > $bin/${name} # chmod +x $bin/${name} # '') scripts))} #''; installPhase = ":"; }; in { environment.systemPackages = [ tools ]; }