diff options
-rw-r--r-- | jeschli/source.nix | 6 | ||||
-rw-r--r-- | krebs/3modules/os-release.nix | 6 | ||||
-rw-r--r-- | krebs/3modules/repo-sync.nix | 6 | ||||
-rw-r--r-- | krebs/5pkgs/simple/populate/default.nix | 4 | ||||
-rw-r--r-- | krebs/5pkgs/simple/stockholm/default.nix | 2 | ||||
-rw-r--r-- | krebs/5pkgs/simple/urlwatch/default.nix | 4 | ||||
-rw-r--r-- | krebs/source.nix | 6 | ||||
-rw-r--r-- | lass/source.nix | 6 | ||||
-rw-r--r-- | lib/types.nix | 115 | ||||
-rw-r--r-- | makefu/source.nix | 6 | ||||
-rw-r--r-- | mv/source.nix | 6 | ||||
-rw-r--r-- | nin/source.nix | 6 | ||||
-rw-r--r-- | tv/2configs/gitrepos.nix | 3 | ||||
-rw-r--r-- | tv/source.nix | 6 |
14 files changed, 116 insertions, 66 deletions
diff --git a/jeschli/source.nix b/jeschli/source.nix index 382dd61bc..fe1de8fd1 100644 --- a/jeschli/source.nix +++ b/jeschli/source.nix @@ -4,6 +4,11 @@ host@{ name, secure ? false, override ? {} }: let then "buildbot" else "jeschli"; _file = <stockholm> + "/jeschli/1systems/${name}/source.nix"; + pkgs = import <nixpkgs> { + overlays = map import [ + <stockholm/krebs/5pkgs> + ]; + }; in evalSource (toString _file) [ { @@ -17,6 +22,7 @@ in jeschli = "${getEnv "HOME"}/secrets/${name}"; }; stockholm.file = toString <stockholm>; + stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version"; } override ] diff --git a/krebs/3modules/os-release.nix b/krebs/3modules/os-release.nix index 0779feede..8f71a357f 100644 --- a/krebs/3modules/os-release.nix +++ b/krebs/3modules/os-release.nix @@ -5,7 +5,11 @@ let nixos-version = "${nixos-version-id} (${config.system.nixosCodeName})"; nixos-pretty-name = "NixOS ${nixos-version}"; - stockholm-version-id = maybeEnv "STOCKHOLM_VERSION" "unknown"; + stockholm-version-id = let + eval = tryEval (removeSuffix "\n" (readFile <stockholm-version>)); + in + if eval.success then eval.value else "unknown"; + stockholm-version = "${stockholm-version-id}"; stockholm-pretty-name = "stockholm ${stockholm-version}"; diff --git a/krebs/3modules/repo-sync.nix b/krebs/3modules/repo-sync.nix index b2e3aa7c5..45d9d81c3 100644 --- a/krebs/3modules/repo-sync.nix +++ b/krebs/3modules/repo-sync.nix @@ -18,10 +18,10 @@ let type = types.attrsOf (types.submodule ({ config, ... }: { options = { origin = mkOption { - type = types.git-source; + type = types.source-types.git; }; mirror = mkOption { - type = types.git-source; + type = types.source-types.git; }; }; config = { @@ -31,7 +31,7 @@ let })); }; latest = mkOption { - type = types.nullOr types.git-source; + type = types.nullOr types.source-types.git; default = null; }; timerConfig = mkOption { diff --git a/krebs/5pkgs/simple/populate/default.nix b/krebs/5pkgs/simple/populate/default.nix index 62e3ab216..e35423b49 100644 --- a/krebs/5pkgs/simple/populate/default.nix +++ b/krebs/5pkgs/simple/populate/default.nix @@ -16,12 +16,12 @@ in stdenv.mkDerivation rec { name = "populate"; - version = "2.1.0"; + version = "2.3.0"; src = fetchgit { url = http://cgit.ni.krebsco.de/populate; rev = "refs/tags/v${version}"; - sha256 = "0cr50y6h6nps0qgpmi01h0z9wzpv2704y5zgx2salk1grkmvcfmh"; + sha256 = "05zr132k1s3a1cc879lvhb83hax7dbfmsbrnxmh7dxjcdg3yhxd7"; }; phases = [ diff --git a/krebs/5pkgs/simple/stockholm/default.nix b/krebs/5pkgs/simple/stockholm/default.nix index 53c1ca5ba..4d15e7ac2 100644 --- a/krebs/5pkgs/simple/stockholm/default.nix +++ b/krebs/5pkgs/simple/stockholm/default.nix @@ -216,7 +216,6 @@ init.env = pkgs.writeText "init.env" /* sh */ '' export HOSTNAME="$(${pkgs.nettools}/bin/hostname)" - export STOCKHOLM_VERSION="''${STOCKHOLM_VERSION-$(${cmds.get-version})}" export quiet export system @@ -251,7 +250,6 @@ "$target_user@$target_host" -p "$target_port" \ cd "$target_path/stockholm" \; \ NIX_PATH=$(${pkgs.quote}/bin/quote "$target_path") \ - STOCKHOLM_VERSION=$(${pkgs.quote}/bin/quote "$STOCKHOLM_VERSION") \ nix-shell --run "$(${pkgs.quote}/bin/quote " ${lib.concatStringsSep " " (lib.mapAttrsToList (name: opt: /* sh */ diff --git a/krebs/5pkgs/simple/urlwatch/default.nix b/krebs/5pkgs/simple/urlwatch/default.nix index ebf872568..64f3ad1ac 100644 --- a/krebs/5pkgs/simple/urlwatch/default.nix +++ b/krebs/5pkgs/simple/urlwatch/default.nix @@ -2,13 +2,13 @@ python3Packages.buildPythonApplication rec { name = "urlwatch-${version}"; - version = "2.7"; + version = "2.8"; src = fetchFromGitHub { owner = "thp"; repo = "urlwatch"; rev = version; - sha256 = "0fx964z73yv08b1lpymmjsigf6929zx9ax5bp34rcf2c5gk11l5m"; + sha256 = "1nja7n6pc45azd3l1xyvav89855lvcgwabrvf34rps81dbl8cnl4"; }; propagatedBuildInputs = with python3Packages; [ diff --git a/krebs/source.nix b/krebs/source.nix index b22ef3574..7e0ea7e47 100644 --- a/krebs/source.nix +++ b/krebs/source.nix @@ -4,6 +4,11 @@ host@{ name, secure ? false, override ? {} }: let then "buildbot" else "krebs"; _file = <stockholm> + "/krebs/1systems/${name}/source.nix"; + pkgs = import <nixpkgs> { + overlays = map import [ + <stockholm/krebs/5pkgs> + ]; + }; in evalSource (toString _file) [ { @@ -16,6 +21,7 @@ in }; }; stockholm.file = toString <stockholm>; + stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version"; nixpkgs.git = { url = https://github.com/NixOS/nixpkgs; ref = "c5bc83b503dfb29eb27c1deb0268f15c1858e7ce"; # nixos-17.09 @ 2018-02-27 diff --git a/lass/source.nix b/lass/source.nix index e3332c5de..1d840f38f 100644 --- a/lass/source.nix +++ b/lass/source.nix @@ -4,6 +4,11 @@ host@{ name, secure ? false, override ? {} }: let then "buildbot" else "lass"; _file = <stockholm> + "/lass/1systems/${name}/source.nix"; + pkgs = import <nixpkgs> { + overlays = map import [ + <stockholm/krebs/5pkgs> + ]; + }; in evalSource (toString _file) [ { @@ -17,6 +22,7 @@ in }; }; stockholm.file = toString <stockholm>; + stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version"; } override ] diff --git a/lib/types.nix b/lib/types.nix index b85794925..1cf2d96c9 100644 --- a/lib/types.nix +++ b/lib/types.nix @@ -2,7 +2,7 @@ let inherit (lib) - all any concatMapStringsSep concatStringsSep const filter flip + all any attrNames concatMapStringsSep concatStringsSep const filter flip genid hasSuffix head isInt isString length mergeOneOption mkOption mkOptionType optional optionalAttrs optionals range splitString stringLength substring test testString typeOf; @@ -231,90 +231,93 @@ rec { source = submodule ({ config, ... }: { options = { type = let - types = [ - "file" - "git" - "pass" - "symlink" - ]; + known-types = attrNames source-types; + type-candidates = filter (k: config.${k} != null) known-types; in mkOption { - type = enum types; - default = let - cands = filter (k: config.${k} != null) types; - in - if length cands == 1 - then head cands - else throw "cannot determine type"; - }; - file = let - file-path = (file-source.getSubOptions "FIXME").path.type; - in mkOption { - type = nullOr (either file-source file-path); - default = null; + default = if length type-candidates == 1 + then head type-candidates + else throw "cannot determine type"; + type = enum known-types; + }; + file = mkOption { apply = x: - if file-path.check x + if absolute-pathname.check x then { path = x; } else x; + default = null; + type = nullOr (either absolute-pathname source-types.file); }; git = mkOption { - type = nullOr git-source; default = null; + type = nullOr source-types.git; }; pass = mkOption { - type = nullOr pass-source; default = null; + type = nullOr source-types.pass; }; - symlink = let - symlink-target = (symlink-source.getSubOptions "FIXME").target.type; - in mkOption { - type = nullOr (either symlink-source symlink-target); + pipe = mkOption { + apply = x: + if absolute-pathname.check x + then { command = x; } + else x; + default = null; + type = nullOr (either absolute-pathname source-types.pipe); + }; + symlink = mkOption { + type = nullOr (either pathname source-types.symlink); default = null; apply = x: - if symlink-target.check x + if pathname.check x then { target = x; } else x; }; }; }); - file-source = submodule { - options = { - path = mkOption { - type = absolute-pathname; + source-types = { + file = submodule { + options = { + path = mkOption { + type = absolute-pathname; + }; }; }; - }; - - git-source = submodule { - options = { - ref = mkOption { - type = str; # TODO types.git.ref - }; - url = mkOption { - type = str; # TODO types.git.url + git = submodule { + options = { + ref = mkOption { + type = str; # TODO types.git.ref + }; + url = mkOption { + type = str; # TODO types.git.url + }; }; }; - }; - - pass-source = submodule { - options = { - dir = mkOption { - type = absolute-pathname; + pass = submodule { + options = { + dir = mkOption { + type = absolute-pathname; + }; + name = mkOption { + type = pathname; # TODO relative-pathname + }; }; - name = mkOption { - type = pathname; # TODO relative-pathname + }; + pipe = submodule { + options = { + command = mkOption { + type = absolute-pathname; + }; }; }; - }; - - symlink-source = submodule { - options = { - target = mkOption { - type = pathname; # TODO relative-pathname + symlink = submodule { + options = { + target = mkOption { + type = pathname; # TODO relative-pathname + }; }; }; - }; + }; suffixed-str = suffs: mkOptionType { diff --git a/makefu/source.nix b/makefu/source.nix index 708f0d20c..79a2c535f 100644 --- a/makefu/source.nix +++ b/makefu/source.nix @@ -13,6 +13,11 @@ let then "buildbot" else "makefu"; _file = <stockholm> + "/makefu/1systems/${name}/source.nix"; + pkgs = import <nixpkgs> { + overlays = map import [ + <stockholm/krebs/5pkgs> + ]; + }; # TODO: automate updating of this ref + cherry-picks ref = "51810e0"; # nixos-17.09 @ 2018-02-14 # + do_sqlite3 ruby: 55a952be5b5 @@ -42,6 +47,7 @@ in }; stockholm.file = toString <stockholm>; + stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version"; } (mkIf ( musnix ) { musnix.git = { diff --git a/mv/source.nix b/mv/source.nix index 5f6b2fe36..1a7b83961 100644 --- a/mv/source.nix +++ b/mv/source.nix @@ -4,6 +4,11 @@ host@{ name, override ? {} }: let then "buildbot" else "mv"; _file = <stockholm> + "/mv/1systems/${name}/source.nix"; + pkgs = import <nixpkgs> { + overlays = map import [ + <stockholm/krebs/5pkgs> + ]; + }; in evalSource (toString _file) [ { @@ -18,6 +23,7 @@ in mv = "/home/mv/secrets/${name}"; }; stockholm.file = toString <stockholm>; + stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version"; } override ] diff --git a/nin/source.nix b/nin/source.nix index ce1879357..9fb2cb390 100644 --- a/nin/source.nix +++ b/nin/source.nix @@ -4,6 +4,11 @@ host@{ name, secure ? false }: let then "buildbot" else "nin"; _file = <stockholm> + "/nin/1systems/${name}/source.nix"; + pkgs = import <nixpkgs> { + overlays = map import [ + <stockholm/krebs/5pkgs> + ]; + }; in evalSource (toString _file) { nixos-config.symlink = "stockholm/nin/1systems/${name}/config.nix"; @@ -12,5 +17,6 @@ in nin = "/home/nin/secrets/${name}"; }; stockholm.file = toString <stockholm>; + stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version"; nixpkgs = (import <stockholm/krebs/source.nix> host).nixpkgs; } diff --git a/tv/2configs/gitrepos.nix b/tv/2configs/gitrepos.nix index dc50be4f1..c3418e7ee 100644 --- a/tv/2configs/gitrepos.nix +++ b/tv/2configs/gitrepos.nix @@ -42,6 +42,9 @@ let { kirk = { cgit.desc = "IRC tools"; }; + kops = { + cgit.desc = "deployment tools"; + }; load-env = {}; loldns = { cgit.desc = "toy DNS server"; diff --git a/tv/source.nix b/tv/source.nix index b5e3f7cd7..e5e5e0413 100644 --- a/tv/source.nix +++ b/tv/source.nix @@ -6,6 +6,11 @@ with import <stockholm/lib>; }@host: let builder = if dummy_secrets then "buildbot" else "tv"; _file = <stockholm> + "/tv/1systems/${name}/source.nix"; + pkgs = import <nixpkgs> { + overlays = map import [ + <stockholm/krebs/5pkgs> + ]; + }; in evalSource (toString _file) [ { @@ -20,6 +25,7 @@ in tv = "/home/tv/secrets/${name}"; }; stockholm.file = toString <stockholm>; + stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version"; } (mkIf (builder == "tv") { secrets-common.file = "/home/tv/secrets/common"; |