summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jeschli/source.nix6
-rw-r--r--krebs/3modules/os-release.nix6
-rw-r--r--krebs/3modules/repo-sync.nix6
-rw-r--r--krebs/5pkgs/simple/populate/default.nix4
-rw-r--r--krebs/5pkgs/simple/stockholm/default.nix2
-rw-r--r--krebs/5pkgs/simple/urlwatch/default.nix4
-rw-r--r--krebs/source.nix6
-rw-r--r--lass/source.nix6
-rw-r--r--lib/types.nix115
-rw-r--r--makefu/source.nix6
-rw-r--r--mv/source.nix6
-rw-r--r--nin/source.nix6
-rw-r--r--tv/2configs/gitrepos.nix3
-rw-r--r--tv/source.nix6
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";