summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--jeschli/1systems/brauerei/config.nix2
-rw-r--r--jeschli/source.nix6
-rw-r--r--krebs/3modules/lass/default.nix26
-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.nix8
-rw-r--r--lass/1systems/mors/config.nix2
-rw-r--r--lass/2configs/baseX.nix8
-rw-r--r--lass/2configs/exim-smarthost.nix10
-rw-r--r--lass/2configs/mail.nix44
-rw-r--r--lass/5pkgs/custom/xmonad-lass/default.nix (renamed from lass/5pkgs/xmonad-lass.nix)9
-rw-r--r--lass/5pkgs/default.nix63
-rw-r--r--lass/5pkgs/xephyrify/default.nix42
-rw-r--r--lass/default.nix4
-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/1systems/axon/config.nix4
-rw-r--r--nin/2configs/ableton.nix20
-rw-r--r--nin/2configs/git.nix11
-rw-r--r--nin/2configs/im.nix19
-rw-r--r--nin/source.nix11
-rw-r--r--tv/2configs/gitrepos.nix3
-rw-r--r--tv/source.nix6
28 files changed, 326 insertions, 127 deletions
diff --git a/jeschli/1systems/brauerei/config.nix b/jeschli/1systems/brauerei/config.nix
index e4109c638..eb2bb11d2 100644
--- a/jeschli/1systems/brauerei/config.nix
+++ b/jeschli/1systems/brauerei/config.nix
@@ -79,6 +79,8 @@
jetbrains.goland
# document viewer
zathura
+ # xorg
+ xorg.xbacklight
];
# Some programs need SUID wrappers, can be configured further or are
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/lass/default.nix b/krebs/3modules/lass/default.nix
index 655a38030..e269d1fa1 100644
--- a/krebs/3modules/lass/default.nix
+++ b/krebs/3modules/lass/default.nix
@@ -551,6 +551,32 @@ with import <stockholm/lib>;
};
};
};
+ dpdkm = {
+ ci = false;
+ external = true;
+ nets = rec {
+ retiolum = {
+ ip4.addr = "10.243.29.173";
+ ip6.addr = "42:4992:6a6d:900::1";
+ aliases = [ "dpdkm.r" ];
+ tinc.pubkey = ''
+ -----BEGIN RSA PUBLIC KEY-----
+ MIICCgKCAgEAuW31xGBdPMSS45KmsCX81yuTcDZv1z7wSpsGQiAw7RsApG0fbBDj
+ NvzWZaZpTTUueG7gtt7U9Gk8DhWYR1hNt8bLXxE5QlY+gxVjU8+caRvlv10Y9XYp
+ qZEr1n1O5R7jS1srvutPt74uiA8I3hBoeP5TXndu8tVcehjRWXPqJj4VCy9pT2gP
+ X880Z30cXm0jUIu9XKhzQU2UNaxbqRzhJTvFUG04M+0a9olsUoN7PnDV6MC5Dxzn
+ f0ZZZDgHkcx6vsSkN/C8Tik/UCXr3tS/VX6/3+PREz6Z3bPd2QfaWdowrlFQPeYa
+ bELPvuqYiq7zR/jw3vVsWX2e91goAfKH5LYKNmzJCj5yYq+knB7Wil3HgBn86zvL
+ Joj56VsuB8fQrrUxjrDetNgtdwci+yFeXkJouQRLM0r0W24liyCuBX4B6nqbj71T
+ B6rAMzhBbl1yixgf31EgiCYFSusk+jiT+hye5lAhes4gBW9GAWxGNU9zE4QeAc1w
+ tkPH/CxRIAeuPYNwmjvYI2eQH9UQkgSBa3/Kz7/KT9scbykbs8nhDHCXwT6oAp+n
+ dR5aHkuBrTQOCU3Xx5ZwU5A0T83oLExIeH8jR1h2mW1JoJDdO85dAOrIBHWnjLls
+ mqrJusBh2gbgvNqIrDaQ9J+o1vefw1QeSvcF71JjF1CEBUmTbUAp8KMCAwEAAQ==
+ -----END RSA PUBLIC KEY-----
+ '';
+ };
+ };
+ };
xerxes = {
cores = 2;
nets = rec {
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 c2fbbc5f8..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,9 +21,10 @@ in
};
};
stockholm.file = toString <stockholm>;
+ stockholm-version.pipe = "${pkgs.stockholm}/bin/get-version";
nixpkgs.git = {
url = https://github.com/NixOS/nixpkgs;
- ref = "d09e425aea3e09b6cec5c7b05cc0603f6853748b"; # nixos-17.09 @ 2018-02-22
+ ref = "c5bc83b503dfb29eb27c1deb0268f15c1858e7ce"; # nixos-17.09 @ 2018-02-27
};
}
override
diff --git a/lass/1systems/mors/config.nix b/lass/1systems/mors/config.nix
index 6ca980155..cbb71ab24 100644
--- a/lass/1systems/mors/config.nix
+++ b/lass/1systems/mors/config.nix
@@ -182,7 +182,7 @@ with import <stockholm/lib>;
echo 'secrets are crypted' >&2
exit 23
else
- exec nix-shell -I stockholm="$PWD" --run 'deploy --diff --system="$SYSTEM"'
+ exec nix-shell -I stockholm="$PWD" --run 'deploy --system="$SYSTEM"'
fi
'';
predeploy = pkgs.writeDash "predeploy" ''
diff --git a/lass/2configs/baseX.nix b/lass/2configs/baseX.nix
index 2b7a5c924..ed179ded6 100644
--- a/lass/2configs/baseX.nix
+++ b/lass/2configs/baseX.nix
@@ -2,6 +2,7 @@
with import <stockholm/lib>;
let
user = config.krebs.build.user;
+ xmonad-lass = pkgs.callPackage <stockholm/lass/5pkgs/custom/xmonad-lass> { inherit config; };
in {
imports = [
./mpv.nix
@@ -84,7 +85,6 @@ in {
powertop
push
rxvt_unicode_with-plugins
- screengrab
slock
sxiv
timewarrior
@@ -99,6 +99,7 @@ in {
zathura
cabal2nix
+ xephyrify
];
fonts.fonts = with pkgs; [
@@ -129,7 +130,6 @@ in {
};
systemd.user.services.xmonad = {
- #wantedBy = [ "graphical-session.target" ];
environment = {
DISPLAY = ":${toString config.services.xserver.display}";
RXVT_SOCKET = "%t/urxvtd-socket";
@@ -137,8 +137,8 @@ in {
};
serviceConfig = {
SyslogIdentifier = "xmonad";
- ExecStart = "${pkgs.xmonad-lass}/bin/xmonad";
- ExecStop = "${pkgs.xmonad-lass}/bin/xmonad --shutdown";
+ ExecStart = "${xmonad-lass}/bin/xmonad";
+ ExecStop = "${xmonad-lass}/bin/xmonad --shutdown";
};
restartIfChanged = false;
};
diff --git a/lass/2configs/exim-smarthost.nix b/lass/2configs/exim-smarthost.nix
index 4335c7cab..ae652722a 100644
--- a/lass/2configs/exim-smarthost.nix
+++ b/lass/2configs/exim-smarthost.nix
@@ -11,7 +11,6 @@ with import <stockholm/lib>;
primary_hostname = "lassul.us";
sender_domains = [
"lassul.us"
- "aidsballs.de"
];
relay_from_hosts = map (host: host.nets.retiolum.ip6.addr) [
config.krebs.hosts.mors
@@ -70,6 +69,15 @@ with import <stockholm/lib>;
{ from = "aws@lassul.us"; to = lass.mail; }
{ from = "reddit@lassul.us"; to = lass.mail; }
{ from = "banggood@lassul.us"; to = lass.mail; }
+ { from = "immoscout@lassul.us"; to = lass.mail; }
+ { from = "gmail@lassul.us"; to = lass.mail; }
+ { from = "amazon@lassul.us"; to = lass.mail; }
+ { from = "humblebundle@lassul.us"; to = lass.mail; }
+ { from = "meetup@lassul.us"; to = lass.mail; }
+ { from = "gebfrei@lassul.us"; to = lass.mail; }
+ { from = "github@lassul.us"; to = lass.mail; }
+ { from = "ovh@lassul.us"; to = lass.mail; }
+ { from = "hetzner@lassul.us"; to = lass.mail; }
];
system-aliases = [
{ from = "mailer-daemon"; to = "postmaster"; }
diff --git a/lass/2configs/mail.nix b/lass/2configs/mail.nix
index e83201cd8..03d39ef75 100644
--- a/lass/2configs/mail.nix
+++ b/lass/2configs/mail.nix
@@ -21,13 +21,46 @@ let
'';
mailboxes = {
- wireguard = [ "to:wireguard@lists.zx2c4" ];
c-base = [ "to:c-base.org" ];
- security = [ "to:seclists.org" "to:security" "to:bugtraq" ];
+ coins = [
+ "to:btce@lassul.us"
+ "to:coinbase@lassul.us"
+ "to:polo@lassul.us"
+ "to:bitwala@lassul.us"
+ "to:payeer@lassul.us"
+ "to:gatehub@lassul.us"
+ "to:bitfinex@lassul.us"
+ "to:binance@lassul.us"
+ "to:bitcoin.de@lassul.us"
+ "to:robinhood@lassul.us"
+ ];
+ dezentrale = [ "to:dezentrale.space" ];
+ dhl = [ "to:dhl@lassul.us" ];
+ github = [ "to:github@lassul.us" ];
+ gmail = [ "to:gmail@lassul.us" "to:lassulus@gmail.com" "lassulus@googlemail.com" ];
+ kaosstuff = [ "to:gearbest@lassul.us" "to:banggood@lassul.us" "to:tomtop@lassul.us" ];
nix-devel = [ "to:nix-devel@googlegroups.com" ];
+ patreon = [ "to:patreon@lassul.us" ];
+ paypal = [ "to:paypal@lassul.us" ];
+ ptl = [ "to:ptl@posttenebraslab.ch" ];
+ retiolum = [ "to:lass@mors.r" ];
+ security = [ "to:seclists.org" "to:bugtraq" "to:securityfocus@lassul.us" ];
shack = [ "to:shackspace.de" ];
+ steam = [ "to:steam@lassul.us" ];
+ tinc = [ "to:tinc@tinc-vpn.org" "to:tinc-devel@tinc-vpn.org" ];
+ wireguard = [ "to:wireguard@lists.zx2c4" ];
+ zzz = [ "to:pizza@lassul.us" "to:spam@krebsco.de" ];
};
+ tag-new-mails = pkgs.writeDashBin "nm-tag-init" ''
+ ${pkgs.notmuch}/bin/notmuch new
+ ${concatMapStringsSep "\n" (i: ''${pkgs.notmuch}/bin/notmuch tag -inbox +${i.name} -- tag:inbox ${concatMapStringsSep " or " (f: "${f}") i.value}'') (mapAttrsToList nameValuePair mailboxes)}
+ '';
+
+ tag-old-mails = pkgs.writeDashBin "nm-tag-old" ''
+ ${concatMapStringsSep "\n" (i: ''${pkgs.notmuch}/bin/notmuch tag -inbox -archive +${i.name} -- ${concatMapStringsSep " or " (f: "${f}") i.value}'') (mapAttrsToList nameValuePair mailboxes)}
+ '';
+
muttrc = pkgs.writeText "muttrc" ''
# gpg
source ${pkgs.neomutt}/share/doc/mutt/samples/gpg.rc
@@ -80,10 +113,9 @@ let
# V
''} %r |"
- virtual-mailboxes "INBOX" "notmuch://?query=tag:inbox ${concatMapStringsSep " " (f: "and NOT ${f}") (flatten (attrValues mailboxes))}"
+ virtual-mailboxes "INBOX" "notmuch://?query=tag:inbox"
virtual-mailboxes "Unread" "notmuch://?query=tag:unread"
- ${concatMapStringsSep "\n" (i: ''${" "}virtual-mailboxes "${i.name}" "notmuch://?query=${concatMapStringsSep " or " (f: "${f}") i.value}"'') (mapAttrsToList nameValuePair mailboxes)}
- virtual-mailboxes "BOX" "notmuch://?query=${concatMapStringsSep " and " (f: "NOT ${f}") (flatten (attrValues mailboxes))}"
+ ${concatMapStringsSep "\n" (i: ''${" "}virtual-mailboxes "${i.name}" "notmuch://?query=tag:${i.name}"'') (mapAttrsToList nameValuePair mailboxes)}
virtual-mailboxes "TODO" "notmuch://?query=tag:TODO"
virtual-mailboxes "Starred" "notmuch://?query=tag:*"
virtual-mailboxes "Archive" "notmuch://?query=tag:archive"
@@ -163,5 +195,7 @@ in {
mutt
pkgs.much
pkgs.notmuch
+ tag-new-mails
+ tag-old-mails
];
}
diff --git a/lass/5pkgs/xmonad-lass.nix b/lass/5pkgs/custom/xmonad-lass/default.nix
index 59c95cff7..e658897da 100644
--- a/lass/5pkgs/xmonad-lass.nix
+++ b/lass/5pkgs/custom/xmonad-lass/default.nix
@@ -143,12 +143,21 @@ myKeyMap =
, ("M4-d", floatNext True >> spawn "${pkgs.copyq}/bin/copyq show")
+ , ("M4-<F4>", spawn "${pkgs.writeDash "nm-dmenu" ''
+ export PATH=$PATH:${pkgs.dmenu}/bin:${pkgs.networkmanagerapplet}/bin
+ exec ${pkgs.networkmanager_dmenu}/bin/networkmanager_dmenu "$@"
+ ''}")
+
, ("M4-<F5>", spawn "${pkgs.xorg.xbacklight}/bin/xbacklight -set 1")
, ("M4-<F6>", spawn "${pkgs.xorg.xbacklight}/bin/xbacklight -set 10")
, ("M4-<F7>", spawn "${pkgs.xorg.xbacklight}/bin/xbacklight -set 33")
, ("M4-<F8>", spawn "${pkgs.xorg.xbacklight}/bin/xbacklight -set 100")
, ("<Pause>", spawn "${pkgs.xcalib}/bin/xcalib -invert -alter")
+
+ --, ("M4-w", screenWorkspace 0 >>= (windows . W.greedyView))
+ --, ("M4-e", screenWorkspace 1 >>= (windows . W.greedyView))
+ --, ("M4-r", screenWorkspace 2 >>= (windows . W.greedyView))
]
forkFile :: FilePath -> [String] -> Maybe [(String, String)] -> X ()
diff --git a/lass/5pkgs/default.nix b/lass/5pkgs/default.nix
index a158cd3c6..28482eb91 100644
--- a/lass/5pkgs/default.nix
+++ b/lass/5pkgs/default.nix
@@ -1,40 +1,39 @@
-{ config, pkgs, ... }@args:
+with import <stockholm/lib>;
+self: super: let
-{
- nixpkgs.config.packageOverrides = rec {
- acronym = pkgs.callPackage ./acronym/default.nix {};
- dpass = pkgs.callPackage ./dpass {};
- firefoxPlugins = {
- noscript = pkgs.callPackage ./firefoxPlugins/noscript.nix {};
- ublock = pkgs.callPackage ./firefoxPlugins/ublock.nix {};
- vimperator = pkgs.callPackage ./firefoxPlugins/vimperator.nix {};
- };
- init = pkgs.callPackage ./init/default.nix args;
- logify = pkgs.callPackage ./logify/default.nix {};
- mk_sql_pair = pkgs.callPackage ./mk_sql_pair/default.nix {};
- mpv-poll = pkgs.callPackage ./mpv-poll/default.nix {};
- pop = pkgs.callPackage ./pop/default.nix {};
- q = pkgs.callPackage ./q {};
- rs = pkgs.callPackage ./rs/default.nix {};
- urban = pkgs.callPackage ./urban/default.nix {};
- xml2json = pkgs.callPackage ./xml2json/default.nix {};
- xmonad-lass = import ./xmonad-lass.nix { inherit config pkgs; };
- yt-next = pkgs.callPackage ./yt-next/default.nix {};
+ # This callPackage will try to detect obsolete overrides.
+ callPackage = path: args: let
+ override = super.callPackage path args;
+ upstream = optionalAttrs (override ? "name")
+ (super.${(parseDrvName override.name).name} or {});
+ in if upstream ? "name" &&
+ override ? "name" &&
+ compareVersions upstream.name override.name != -1
+ then
+ trace
+ "Upstream `${upstream.name}' gets overridden by `${override.name}'."
+ override
+ else override;
- bank = pkgs.writeDashBin "bank" ''
+ subdirsOf = path:
+ mapAttrs (name: _: path + "/${name}")
+ (filterAttrs (_: eq "directory") (readDir path));
+
+in {
+ bank = self.writeDashBin "bank" ''
tmp=$(mktemp)
- ${pkgs.pass}/bin/pass show hledger > $tmp
- ${pkgs.hledger}/bin/hledger --file=$tmp "$@"
- ${pkgs.pass}/bin/pass show hledger | if ${pkgs.diffutils}/bin/diff $tmp -; then
+ ${self.pass}/bin/pass show hledger > $tmp
+ ${self.hledger}/bin/hledger --file=$tmp "$@"
+ ${self.pass}/bin/pass show hledger | if ${self.diffutils}/bin/diff $tmp -; then
exit 0
else
- ${pkgs.coreutils}/bin/cat $tmp | ${pkgs.pass}/bin/pass insert -m hledger
+ ${self.coreutils}/bin/cat $tmp | ${self.pass}/bin/pass insert -m hledger
fi
- ${pkgs.coreutils}/bin/rm $tmp
- '';
- screengrab = pkgs.writeDashBin "screengrab" ''
- resolution="$(${pkgs.xorg.xrandr}/bin/xrandr | ${pkgs.gnugrep}/bin/grep '*' | ${pkgs.gawk}/bin/awk '{print $1}')"
- ${pkgs.ffmpeg}/bin/ffmpeg -f x11grab -r 25 -i :${toString config.services.xserver.display} -s $resolution -c:v huffyuv $1
+ ${self.coreutils}/bin/rm $tmp
'';
- };
+ rtl8814au = callPackage ./custom/rtl8814au { kernel = self.linux; };
}
+
+// mapAttrs (_: flip callPackage {})
+ (filterAttrs (_: dir: pathExists (dir + "/default.nix"))
+ (subdirsOf ./.))
diff --git a/lass/5pkgs/xephyrify/default.nix b/lass/5pkgs/xephyrify/default.nix
new file mode 100644
index 000000000..8b18ea949
--- /dev/null
+++ b/lass/5pkgs/xephyrify/default.nix
@@ -0,0 +1,42 @@
+{ writeDashBin, writeHaskell, coreutils, xorg, virtualgl, ... }:
+
+let
+
+ minimalXmonad = writeHaskell "minimalXmonad" {
+ executables.xmonad = {
+ extra-depends = [
+ "containers"
+ "xmonad"
+ ];
+ text = /* haskell */ ''
+ module Main where
+ import XMonad
+ import qualified Data.Map as Map
+
+ main :: IO ()
+ main = do
+ xmonad def
+ { workspaces = [ "1" ]
+ , layoutHook = myLayoutHook
+ , keys = myKeys
+ , normalBorderColor = "#000000"
+ , focusedBorderColor = "#000000"
+ }
+
+ myLayoutHook = Full
+ myKeys _ = Map.fromList []
+ '';
+ };
+ };
+
+in writeDashBin "xephyrify" ''
+ NDISPLAY=:$(${coreutils}/bin/shuf -i 100-65536 -n 1)
+ echo "using DISPLAY $NDISPLAY"
+ ${xorg.xorgserver}/bin/Xephyr -br -ac -reset -terminate -resizeable $NDISPLAY &
+ XEPHYR_PID=$!
+ DISPLAY=$NDISPLAY ${minimalXmonad}/bin/xmonad &
+ XMONAD_PID=$!
+ DISPLAY=$NDISPLAY ${virtualgl}/bin/vglrun "$@"
+ kill $XMONAD_PID
+ kill $XEPHYR_PID
+''
diff --git a/lass/default.nix b/lass/default.nix
index b1c7c1be8..d077cc09f 100644
--- a/lass/default.nix
+++ b/lass/default.nix
@@ -1,9 +1,9 @@
-_:
+{ pkgs, ... }:
{
imports = [
../krebs
./2configs
./3modules
- ./5pkgs
];
+ nixpkgs.config.packageOverrides = import ./5pkgs pkgs;
}
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