diff --git a/Makefile b/Makefile index 552e6e0fd..8834cb7c8 100644 --- a/Makefile +++ b/Makefile @@ -35,11 +35,11 @@ ifeq ($(filter),json) else filter() { cat; } endif - NIX_PATH=stockholm=$$PWD:$$NIX_PATH \ nix-instantiate \ $${extraArgs-} \ --eval \ -A "$$get" \ + -I stockholm="$$PWD" \ '' \ --argstr current-date "$$(date -Is)" \ --argstr current-host-name "$$HOSTNAME" \ diff --git a/krebs/4lib/default.nix b/krebs/4lib/default.nix index ca7219c7e..78f719988 100644 --- a/krebs/4lib/default.nix +++ b/krebs/4lib/default.nix @@ -5,6 +5,8 @@ with lib; builtins // lib // rec { + eq = x: y: x == y; + addName = name: set: set // { inherit name; }; @@ -22,4 +24,8 @@ builtins // lib // rec { null = "NULL"; string = toJSON x; # close enough }.${typeOf x}; + + subdirsOf = path: + mapAttrs (name: _: path + "/${name}") + (filterAttrs (_: eq "directory") (readDir path)); } diff --git a/krebs/5pkgs/default.nix b/krebs/5pkgs/default.nix index c48c3dee8..a8a1b5853 100644 --- a/krebs/5pkgs/default.nix +++ b/krebs/5pkgs/default.nix @@ -3,28 +3,15 @@ with import ../4lib { inherit lib; }; let - inherit (pkgs) callPackage; + subdirs = mapAttrs (_: flip pkgs.callPackage {}) (subdirsOf ./.); + pkgs' = pkgs // subdirs; in -rec { - cac = callPackage ./cac {}; - charybdis = callPackage ./charybdis {}; - dic = callPackage ./dic {}; - genid = callPackage ./genid {}; - get = callPackage ./get {}; - github-hosts-sync = callPackage ./github-hosts-sync {}; - hashPassword = callPackage ./hashPassword {}; - jq = callPackage ./jq {}; - krebszones = callPackage ./krebszones {}; - lentil = callPackage ./lentil {}; - much = callPackage ./much {}; - nq = callPackage ./nq {}; - posix-array = callPackage ./posix-array {}; - pssh = callPackage ./pssh {}; - passwdqc-utils = callPackage ./passwdqc-utils {}; - Reaktor = callPackage ./Reaktor {}; - realwallpaper = callPackage ./realwallpaper.nix {}; - youtube-tools = callPackage ./youtube-tools {}; +subdirs // rec { + + push = pkgs'.callPackage ./push { + inherit (subdirs) get jq; + }; execve = name: { filename, argv, envp ? {}, destination ? "" }: writeC name { inherit destination; } '' diff --git a/krebs/5pkgs/push/default.nix b/krebs/5pkgs/push/default.nix new file mode 100644 index 000000000..ce496d9c3 --- /dev/null +++ b/krebs/5pkgs/push/default.nix @@ -0,0 +1,48 @@ +{ fetchgit, lib, stdenv +, coreutils +, get +, git +, gnused +, jq +, openssh +, parallel +, ... }: + +stdenv.mkDerivation { + name = "push-1.0.0"; + + src = fetchgit { + url = http://cgit.cd.retiolum/push; + rev = "513da89fe50b3bad3d758855f5622c4508977e4a"; + sha256 = "6124e1d4d4ef57455e2f06891e06fb01d3786846efaf9b79e3176d89988e1b4e"; + }; + + phases = [ + "unpackPhase" + "installPhase" + ]; + + installPhase = + let + path = lib.makeSearchPath "bin" [ + coreutils + get + git + gnused + jq + openssh + parallel + ]; + in + '' + mkdir -p $out/bin + + sed \ + '1s,.*,&\nPATH=${path},' \ + < ./push \ + > $out/bin/push + + chmod +x $out/bin/push + ''; +} + diff --git a/tv/1systems/mkdir.nix b/tv/1systems/mkdir.nix index 76432ba03..669dcc2f3 100644 --- a/tv/1systems/mkdir.nix +++ b/tv/1systems/mkdir.nix @@ -24,7 +24,7 @@ in krebs.build.source = { git.nixpkgs = { url = https://github.com/NixOS/nixpkgs; - rev = "68bd8e4a9dc247726ae89cc8739574261718e328"; + rev = "e57024f821c94caf5684964474073649b8b6356b"; }; dir.secrets = { host = config.krebs.hosts.wu; diff --git a/tv/1systems/wu.nix b/tv/1systems/wu.nix index 0ef846f93..cc99b0498 100644 --- a/tv/1systems/wu.nix +++ b/tv/1systems/wu.nix @@ -89,6 +89,7 @@ with lib; pavucontrol posix_man_pages pssh + push qrencode sxiv texLive diff --git a/tv/2configs/git.nix b/tv/2configs/git.nix index 401cf5f4d..d782c87f1 100644 --- a/tv/2configs/git.nix +++ b/tv/2configs/git.nix @@ -35,6 +35,7 @@ let nixos-infest = {}; nixpkgs = {}; painload = {}; + push = {}; quipper = {}; regfish = {}; stockholm = {