diff options
-rw-r--r-- | machines/profpatsch/katara.nix | 4 | ||||
-rw-r--r-- | modules/module-list.nix | 1 | ||||
-rw-r--r-- | modules/user/aszlig/profiles/workstation/default.nix | 2 | ||||
-rw-r--r-- | modules/user/aszlig/profiles/workstation/packages.nix | 1 | ||||
-rw-r--r-- | modules/user/aszlig/programs/taalo-build/default.nix | 93 | ||||
-rw-r--r-- | pkgs/default.nix | 2 | ||||
-rw-r--r-- | pkgs/taalo-build/default.nix | 19 |
7 files changed, 23 insertions, 99 deletions
diff --git a/machines/profpatsch/katara.nix b/machines/profpatsch/katara.nix index aafbcd6d..84408084 100644 --- a/machines/profpatsch/katara.nix +++ b/machines/profpatsch/katara.nix @@ -183,6 +183,7 @@ in { nixPkgs = [ nix-repl # nix REPL nix-prefetch-scripts # prefetch store paths from various destinations + vuizvui.taalo-build # build derivation on taalo ]; tmpPkgs = [ # TODO needs user service @@ -333,9 +334,6 @@ in { # TODO: base config? vuizvui.programs.fish.fasd.enable = true; - # build derivation on taalo - vuizvui.user.aszlig.programs.taalo-build.enable = true; - vuizvui.user.profpatsch.programs.scanning = { enable = true; remoteScanners = '' diff --git a/modules/module-list.nix b/modules/module-list.nix index f4538dd0..1ec2a71a 100644 --- a/modules/module-list.nix +++ b/modules/module-list.nix @@ -20,7 +20,6 @@ ./user/aszlig/programs/gajim ./user/aszlig/programs/git ./user/aszlig/programs/mpv - ./user/aszlig/programs/taalo-build ./user/aszlig/programs/taskwarrior ./user/aszlig/programs/zsh ./user/aszlig/services/i3 diff --git a/modules/user/aszlig/profiles/workstation/default.nix b/modules/user/aszlig/profiles/workstation/default.nix index 45eacb8a..dce7575c 100644 --- a/modules/user/aszlig/profiles/workstation/default.nix +++ b/modules/user/aszlig/profiles/workstation/default.nix @@ -111,8 +111,6 @@ in { vuizvui.programs.gnupg.agent.sshSupport = true; vuizvui.programs.gnupg.agent.scdaemon.enable = true; - vuizvui.user.aszlig.programs.taalo-build.enable = true; - services = { openssh = { enable = true; diff --git a/modules/user/aszlig/profiles/workstation/packages.nix b/modules/user/aszlig/profiles/workstation/packages.nix index 277e9f0c..d5d76b2b 100644 --- a/modules/user/aszlig/profiles/workstation/packages.nix +++ b/modules/user/aszlig/profiles/workstation/packages.nix @@ -67,6 +67,7 @@ pkgs: with pkgs; [ stdmanpages strace surfraw + vuizvui.taalo-build telnet unzip valgrind diff --git a/modules/user/aszlig/programs/taalo-build/default.nix b/modules/user/aszlig/programs/taalo-build/default.nix deleted file mode 100644 index 5fb09438..00000000 --- a/modules/user/aszlig/programs/taalo-build/default.nix +++ /dev/null @@ -1,93 +0,0 @@ -{ config, pkgs, lib, ... }: - -let - # Make sure we use a Nix version prior to 1.12, because taalo currently uses - # the legacy SSH protocol, so we can't use the ssh-ng store backend here. - # - # Apart from that, even if we would use the new store backend we would break - # the taalo-build backend for Nix 1.11. - inherit (import (import (../../../../../nixpkgs-path.nix)) { - config = {}; - }) nix; - - backend = pkgs.writeScript "taalo-realize-backend" '' - #!${pkgs.perl}/bin/perl -I${nix}/lib/perl5/site_perl - use strict; - use Nix::CopyClosure; - use Nix::SSH; - use IPC::Open2; - - binmode STDERR, ":encoding(utf8)"; - - my ($from, $to); - my $dest = 'nix-remote-build@taalo.headcounter.org'; - my $cmd = "exec ssh $dest -C -- nix-store --serve --write"; - my $pid = open2($from, $to, $cmd); - - # Do the handshake. - my $magic; - eval { - my $SERVE_MAGIC_1 = 0x390c9deb; # FIXME - my $clientVersion = 0x200; - syswrite($to, pack("L<x4L<x4", $SERVE_MAGIC_1, $clientVersion)) - or die; - $magic = readInt($from); - }; - - die "unable to connect to taalo\n" if $@; - die "did not get valid handshake from taalo\n" if $magic != 0x5452eecb; - - my $serverVersion = readInt($from); - die "unsupported server version\n" - if $serverVersion < 0x200 || $serverVersion >= 0x300; - - Nix::CopyClosure::copyToOpen( - $from, $to, "taalo", \@ARGV, 0, 0, 0, 1 - ); - - writeInt(6, $to) or die; - writeStrings(\@ARGV, $to); - writeInt(0, $to); - writeInt(0, $to); - - my $res = readInt($from); - - close $to; - - waitpid($pid, 0); - exit $res; - ''; - - taalo-realize = pkgs.writeScriptBin "taalo-realize" '' - #!${pkgs.stdenv.shell} - if [ $# -le 0 -o "$1" = "--help" -o "$1" = "-h" ]; then - echo "Usage: $0 DERIVATION..." >&2 - exit 1 - fi - - exec ${backend} "$@" - ''; - - taalo-build = pkgs.writeScriptBin "taalo-build" '' - #!${pkgs.stdenv.shell} - if tmpdir="$("${pkgs.coreutils}/bin/mktemp" -d -t taalo-build.XXXXXX)"; then - trap "rm -rf '$tmpdir'" EXIT - set -o pipefail - drvs="$(nix-instantiate --add-root "$tmpdir/derivation" --indirect "$@" \ - | cut -d'!' -f1)" || exit 1 - ${backend} $("${pkgs.coreutils}/bin/readlink" $drvs) - exit $? - else - echo "Unable to create temporary directory for build link!" >&2 - exit 1 - fi - ''; - -in { - options.vuizvui.user.aszlig.programs.taalo-build = { - enable = lib.mkEnableOption "aszlig's build helpers for remote builds"; - }; - config = lib.mkIf config.vuizvui.user.aszlig.programs.taalo-build.enable { - environment.systemPackages = [ taalo-realize taalo-build ]; - }; -} diff --git a/pkgs/default.nix b/pkgs/default.nix index e2e09840..b7255aff 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -20,6 +20,8 @@ let config = pkgs.config.vuizvui.games or null; }; + taalo-build = callPackage ./taalo-build { }; + aszlig = callPackageScope ./aszlig; openlab = callPackageScope ./openlab; profpatsch = callPackageScope ./profpatsch; diff --git a/pkgs/taalo-build/default.nix b/pkgs/taalo-build/default.nix new file mode 100644 index 00000000..d9ff8976 --- /dev/null +++ b/pkgs/taalo-build/default.nix @@ -0,0 +1,19 @@ +{ stdenv, lib, runCommand, nixUnstable }: + +let + nixRemote = "ssh-ng://nix-remote-build@taalo.headcounter.org?compress=true"; + + mkScript = cmd: lib.escapeShellArg '' + #!${stdenv.shell} + export NIX_REMOTE=${lib.escapeShellArg nixRemote} + exec ${lib.escapeShellArg nixUnstable}/bin/${cmd} "$@" + ''; + +in runCommand "taalo-build" {} '' + mkdir -p "$out/bin" + + echo -n ${mkScript "nix-build"} > "$out/bin/taalo-build" + echo -n ${mkScript "nix-store -r"} > "$out/bin/taalo-realize" + + chmod +x "$out"/bin/taalo-{build,realize} +'' |