Merge remote-tracking branch 'prism/tv'
This commit is contained in:
commit
995d1b0c7c
@ -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
|
||||
]
|
||||
|
@ -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}";
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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 = [
|
||||
|
@ -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 */
|
||||
|
@ -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; [
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
]
|
||||
|
115
lib/types.nix
115
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";
|
||||
default = if length type-candidates == 1
|
||||
then head type-candidates
|
||||
else throw "cannot determine type";
|
||||
type = enum known-types;
|
||||
};
|
||||
file = let
|
||||
file-path = (file-source.getSubOptions "FIXME").path.type;
|
||||
in mkOption {
|
||||
type = nullOr (either file-source file-path);
|
||||
default = null;
|
||||
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;
|
||||
};
|
||||
name = mkOption {
|
||||
type = pathname; # TODO relative-pathname
|
||||
pass = submodule {
|
||||
options = {
|
||||
dir = mkOption {
|
||||
type = absolute-pathname;
|
||||
};
|
||||
name = mkOption {
|
||||
type = pathname; # TODO relative-pathname
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
symlink-source = submodule {
|
||||
options = {
|
||||
target = mkOption {
|
||||
type = pathname; # TODO relative-pathname
|
||||
pipe = submodule {
|
||||
options = {
|
||||
command = mkOption {
|
||||
type = absolute-pathname;
|
||||
};
|
||||
};
|
||||
};
|
||||
symlink = submodule {
|
||||
options = {
|
||||
target = mkOption {
|
||||
type = pathname; # TODO relative-pathname
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
suffixed-str = suffs:
|
||||
mkOptionType {
|
||||
|
@ -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 = {
|
||||
|
@ -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
|
||||
]
|
||||
|
@ -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";
|
||||
|
@ -42,6 +42,9 @@ let {
|
||||
kirk = {
|
||||
cgit.desc = "IRC tools";
|
||||
};
|
||||
kops = {
|
||||
cgit.desc = "deployment tools";
|
||||
};
|
||||
load-env = {};
|
||||
loldns = {
|
||||
cgit.desc = "toy DNS server";
|
||||
|
@ -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";
|
||||
|
Loading…
Reference in New Issue
Block a user