Merge remote-tracking branch 'prism/tv'

This commit is contained in:
lassulus 2018-03-06 20:21:02 +01:00
commit 995d1b0c7c
14 changed files with 115 additions and 66 deletions

View File

@ -4,6 +4,11 @@ host@{ name, secure ? false, override ? {} }: let
then "buildbot" then "buildbot"
else "jeschli"; else "jeschli";
_file = <stockholm> + "/jeschli/1systems/${name}/source.nix"; _file = <stockholm> + "/jeschli/1systems/${name}/source.nix";
pkgs = import <nixpkgs> {
overlays = map import [
<stockholm/krebs/5pkgs>
];
};
in in
evalSource (toString _file) [ evalSource (toString _file) [
{ {
@ -17,6 +22,7 @@ in
jeschli = "${getEnv "HOME"}/secrets/${name}"; jeschli = "${getEnv "HOME"}/secrets/${name}";
}; };
stockholm.file = toString <stockholm>; stockholm.file = toString <stockholm>;
stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version";
} }
override override
] ]

View File

@ -5,7 +5,11 @@ let
nixos-version = "${nixos-version-id} (${config.system.nixosCodeName})"; nixos-version = "${nixos-version-id} (${config.system.nixosCodeName})";
nixos-pretty-name = "NixOS ${nixos-version}"; 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-version = "${stockholm-version-id}";
stockholm-pretty-name = "stockholm ${stockholm-version}"; stockholm-pretty-name = "stockholm ${stockholm-version}";

View File

@ -18,10 +18,10 @@ let
type = types.attrsOf (types.submodule ({ config, ... }: { type = types.attrsOf (types.submodule ({ config, ... }: {
options = { options = {
origin = mkOption { origin = mkOption {
type = types.git-source; type = types.source-types.git;
}; };
mirror = mkOption { mirror = mkOption {
type = types.git-source; type = types.source-types.git;
}; };
}; };
config = { config = {
@ -31,7 +31,7 @@ let
})); }));
}; };
latest = mkOption { latest = mkOption {
type = types.nullOr types.git-source; type = types.nullOr types.source-types.git;
default = null; default = null;
}; };
timerConfig = mkOption { timerConfig = mkOption {

View File

@ -16,12 +16,12 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "populate"; name = "populate";
version = "2.1.0"; version = "2.3.0";
src = fetchgit { src = fetchgit {
url = http://cgit.ni.krebsco.de/populate; url = http://cgit.ni.krebsco.de/populate;
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
sha256 = "0cr50y6h6nps0qgpmi01h0z9wzpv2704y5zgx2salk1grkmvcfmh"; sha256 = "05zr132k1s3a1cc879lvhb83hax7dbfmsbrnxmh7dxjcdg3yhxd7";
}; };
phases = [ phases = [

View File

@ -216,7 +216,6 @@
init.env = pkgs.writeText "init.env" /* sh */ '' init.env = pkgs.writeText "init.env" /* sh */ ''
export HOSTNAME="$(${pkgs.nettools}/bin/hostname)" export HOSTNAME="$(${pkgs.nettools}/bin/hostname)"
export STOCKHOLM_VERSION="''${STOCKHOLM_VERSION-$(${cmds.get-version})}"
export quiet export quiet
export system export system
@ -251,7 +250,6 @@
"$target_user@$target_host" -p "$target_port" \ "$target_user@$target_host" -p "$target_port" \
cd "$target_path/stockholm" \; \ cd "$target_path/stockholm" \; \
NIX_PATH=$(${pkgs.quote}/bin/quote "$target_path") \ NIX_PATH=$(${pkgs.quote}/bin/quote "$target_path") \
STOCKHOLM_VERSION=$(${pkgs.quote}/bin/quote "$STOCKHOLM_VERSION") \
nix-shell --run "$(${pkgs.quote}/bin/quote " nix-shell --run "$(${pkgs.quote}/bin/quote "
${lib.concatStringsSep " " (lib.mapAttrsToList ${lib.concatStringsSep " " (lib.mapAttrsToList
(name: opt: /* sh */ (name: opt: /* sh */

View File

@ -2,13 +2,13 @@
python3Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
name = "urlwatch-${version}"; name = "urlwatch-${version}";
version = "2.7"; version = "2.8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "thp"; owner = "thp";
repo = "urlwatch"; repo = "urlwatch";
rev = version; rev = version;
sha256 = "0fx964z73yv08b1lpymmjsigf6929zx9ax5bp34rcf2c5gk11l5m"; sha256 = "1nja7n6pc45azd3l1xyvav89855lvcgwabrvf34rps81dbl8cnl4";
}; };
propagatedBuildInputs = with python3Packages; [ propagatedBuildInputs = with python3Packages; [

View File

@ -4,6 +4,11 @@ host@{ name, secure ? false, override ? {} }: let
then "buildbot" then "buildbot"
else "krebs"; else "krebs";
_file = <stockholm> + "/krebs/1systems/${name}/source.nix"; _file = <stockholm> + "/krebs/1systems/${name}/source.nix";
pkgs = import <nixpkgs> {
overlays = map import [
<stockholm/krebs/5pkgs>
];
};
in in
evalSource (toString _file) [ evalSource (toString _file) [
{ {
@ -16,6 +21,7 @@ in
}; };
}; };
stockholm.file = toString <stockholm>; stockholm.file = toString <stockholm>;
stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version";
nixpkgs.git = { nixpkgs.git = {
url = https://github.com/NixOS/nixpkgs; url = https://github.com/NixOS/nixpkgs;
ref = "c5bc83b503dfb29eb27c1deb0268f15c1858e7ce"; # nixos-17.09 @ 2018-02-27 ref = "c5bc83b503dfb29eb27c1deb0268f15c1858e7ce"; # nixos-17.09 @ 2018-02-27

View File

@ -4,6 +4,11 @@ host@{ name, secure ? false, override ? {} }: let
then "buildbot" then "buildbot"
else "lass"; else "lass";
_file = <stockholm> + "/lass/1systems/${name}/source.nix"; _file = <stockholm> + "/lass/1systems/${name}/source.nix";
pkgs = import <nixpkgs> {
overlays = map import [
<stockholm/krebs/5pkgs>
];
};
in in
evalSource (toString _file) [ evalSource (toString _file) [
{ {
@ -17,6 +22,7 @@ in
}; };
}; };
stockholm.file = toString <stockholm>; stockholm.file = toString <stockholm>;
stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version";
} }
override override
] ]

View File

@ -2,7 +2,7 @@
let let
inherit (lib) 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 genid hasSuffix head isInt isString length mergeOneOption mkOption
mkOptionType optional optionalAttrs optionals range splitString mkOptionType optional optionalAttrs optionals range splitString
stringLength substring test testString typeOf; stringLength substring test testString typeOf;
@ -231,90 +231,93 @@ rec {
source = submodule ({ config, ... }: { source = submodule ({ config, ... }: {
options = { options = {
type = let type = let
types = [ known-types = attrNames source-types;
"file" type-candidates = filter (k: config.${k} != null) known-types;
"git"
"pass"
"symlink"
];
in mkOption { in mkOption {
type = enum types; default = if length type-candidates == 1
default = let then head type-candidates
cands = filter (k: config.${k} != null) types; else throw "cannot determine type";
in type = enum known-types;
if length cands == 1
then head cands
else throw "cannot determine type";
}; };
file = let file = mkOption {
file-path = (file-source.getSubOptions "FIXME").path.type;
in mkOption {
type = nullOr (either file-source file-path);
default = null;
apply = x: apply = x:
if file-path.check x if absolute-pathname.check x
then { path = x; } then { path = x; }
else x; else x;
default = null;
type = nullOr (either absolute-pathname source-types.file);
}; };
git = mkOption { git = mkOption {
type = nullOr git-source;
default = null; default = null;
type = nullOr source-types.git;
}; };
pass = mkOption { pass = mkOption {
type = nullOr pass-source;
default = null; default = null;
type = nullOr source-types.pass;
}; };
symlink = let pipe = mkOption {
symlink-target = (symlink-source.getSubOptions "FIXME").target.type; apply = x:
in mkOption { if absolute-pathname.check x
type = nullOr (either symlink-source symlink-target); 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; default = null;
apply = x: apply = x:
if symlink-target.check x if pathname.check x
then { target = x; } then { target = x; }
else x; else x;
}; };
}; };
}); });
file-source = submodule { source-types = {
options = { file = submodule {
path = mkOption { options = {
type = absolute-pathname; path = mkOption {
type = absolute-pathname;
};
}; };
}; };
}; git = submodule {
options = {
git-source = submodule { ref = mkOption {
options = { type = str; # TODO types.git.ref
ref = mkOption { };
type = str; # TODO types.git.ref url = mkOption {
}; type = str; # TODO types.git.url
url = mkOption { };
type = str; # TODO types.git.url
}; };
}; };
}; pass = submodule {
options = {
pass-source = submodule { dir = mkOption {
options = { type = absolute-pathname;
dir = mkOption { };
type = absolute-pathname; name = mkOption {
}; type = pathname; # TODO relative-pathname
name = mkOption { };
type = pathname; # TODO relative-pathname
}; };
}; };
}; pipe = submodule {
options = {
symlink-source = submodule { command = mkOption {
options = { type = absolute-pathname;
target = mkOption { };
type = pathname; # TODO relative-pathname };
};
symlink = submodule {
options = {
target = mkOption {
type = pathname; # TODO relative-pathname
};
}; };
}; };
};
};
suffixed-str = suffs: suffixed-str = suffs:
mkOptionType { mkOptionType {

View File

@ -13,6 +13,11 @@ let
then "buildbot" then "buildbot"
else "makefu"; else "makefu";
_file = <stockholm> + "/makefu/1systems/${name}/source.nix"; _file = <stockholm> + "/makefu/1systems/${name}/source.nix";
pkgs = import <nixpkgs> {
overlays = map import [
<stockholm/krebs/5pkgs>
];
};
# TODO: automate updating of this ref + cherry-picks # TODO: automate updating of this ref + cherry-picks
ref = "51810e0"; # nixos-17.09 @ 2018-02-14 ref = "51810e0"; # nixos-17.09 @ 2018-02-14
# + do_sqlite3 ruby: 55a952be5b5 # + do_sqlite3 ruby: 55a952be5b5
@ -42,6 +47,7 @@ in
}; };
stockholm.file = toString <stockholm>; stockholm.file = toString <stockholm>;
stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version";
} }
(mkIf ( musnix ) { (mkIf ( musnix ) {
musnix.git = { musnix.git = {

View File

@ -4,6 +4,11 @@ host@{ name, override ? {} }: let
then "buildbot" then "buildbot"
else "mv"; else "mv";
_file = <stockholm> + "/mv/1systems/${name}/source.nix"; _file = <stockholm> + "/mv/1systems/${name}/source.nix";
pkgs = import <nixpkgs> {
overlays = map import [
<stockholm/krebs/5pkgs>
];
};
in in
evalSource (toString _file) [ evalSource (toString _file) [
{ {
@ -18,6 +23,7 @@ in
mv = "/home/mv/secrets/${name}"; mv = "/home/mv/secrets/${name}";
}; };
stockholm.file = toString <stockholm>; stockholm.file = toString <stockholm>;
stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version";
} }
override override
] ]

View File

@ -4,6 +4,11 @@ host@{ name, secure ? false }: let
then "buildbot" then "buildbot"
else "nin"; else "nin";
_file = <stockholm> + "/nin/1systems/${name}/source.nix"; _file = <stockholm> + "/nin/1systems/${name}/source.nix";
pkgs = import <nixpkgs> {
overlays = map import [
<stockholm/krebs/5pkgs>
];
};
in in
evalSource (toString _file) { evalSource (toString _file) {
nixos-config.symlink = "stockholm/nin/1systems/${name}/config.nix"; nixos-config.symlink = "stockholm/nin/1systems/${name}/config.nix";

View File

@ -42,6 +42,9 @@ let {
kirk = { kirk = {
cgit.desc = "IRC tools"; cgit.desc = "IRC tools";
}; };
kops = {
cgit.desc = "deployment tools";
};
load-env = {}; load-env = {};
loldns = { loldns = {
cgit.desc = "toy DNS server"; cgit.desc = "toy DNS server";

View File

@ -6,6 +6,11 @@ with import <stockholm/lib>;
}@host: let }@host: let
builder = if dummy_secrets then "buildbot" else "tv"; builder = if dummy_secrets then "buildbot" else "tv";
_file = <stockholm> + "/tv/1systems/${name}/source.nix"; _file = <stockholm> + "/tv/1systems/${name}/source.nix";
pkgs = import <nixpkgs> {
overlays = map import [
<stockholm/krebs/5pkgs>
];
};
in in
evalSource (toString _file) [ evalSource (toString _file) [
{ {
@ -20,6 +25,7 @@ in
tv = "/home/tv/secrets/${name}"; tv = "/home/tv/secrets/${name}";
}; };
stockholm.file = toString <stockholm>; stockholm.file = toString <stockholm>;
stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version";
} }
(mkIf (builder == "tv") { (mkIf (builder == "tv") {
secrets-common.file = "/home/tv/secrets/common"; secrets-common.file = "/home/tv/secrets/common";