102 lines
2.0 KiB
Nix
102 lines
2.0 KiB
Nix
|
{ 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/[^":]*\)"|[31;1m\1[m|
|
|||
|
s|^trace:\s*\(.*\)|[35;1m\1[m|
|
|||
|
''}
|
|||
|
'';
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
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 ];
|
|||
|
}
|