summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--krebs/3modules/default.nix1
-rw-r--r--krebs/3modules/hosts.nix61
-rw-r--r--krebs/3modules/retiolum-hosts.nix28
-rw-r--r--lass/2configs/websites/lassulus.nix2
-rw-r--r--tv/5pkgs/override/default.nix2
-rw-r--r--tv/5pkgs/override/rxvt_unicode.nix9
-rw-r--r--tv/5pkgs/override/rxvt_unicode/default.nix6
-rw-r--r--tv/5pkgs/override/rxvt_unicode/finish-running-selection.patch41
8 files changed, 71 insertions, 79 deletions
diff --git a/krebs/3modules/default.nix b/krebs/3modules/default.nix
index 9303a81f..c72215e7 100644
--- a/krebs/3modules/default.nix
+++ b/krebs/3modules/default.nix
@@ -45,7 +45,6 @@ let
./reaktor2.nix
./realwallpaper.nix
./retiolum-bootstrap.nix
- ./retiolum-hosts.nix
./rtorrent.nix
./secret.nix
./setuid.nix
diff --git a/krebs/3modules/hosts.nix b/krebs/3modules/hosts.nix
index 0985bb53..3d572c04 100644
--- a/krebs/3modules/hosts.nix
+++ b/krebs/3modules/hosts.nix
@@ -1,6 +1,5 @@
with import <stockholm/lib>;
{ config, ... }: let
- # TODO dedup functions with ./retiolum-hosts.nix
check = hostname: any (domain: hasSuffix ".${domain}" hostname) domains;
domains = attrNames (filterAttrs (_: eq "hosts") config.krebs.dns.providers);
in {
@@ -30,6 +29,66 @@ in {
map (addr: { ${addr} = aliases; }) net.addrs)
(attrValues host.nets))
(attrValues config.krebs.hosts)));
+
+ nixpkgs.config.packageOverrides = super: let
+ # nameValuePair name value : { "name" : name, "value" : value }
+
+ # addr : str
+ # aliase : str
+ # hostname : str
+ # netname : str
+
+ # addrAliases : nameValuePair addr [alias]
+
+ # hostNetAliases : host -> { ${netname} : [addrAliases] }
+ hostNetAliases = host:
+ mapAttrs (_: net: filter (x: x.name != null) [
+ { name = net.ip4.addr or null; value = net.aliases; }
+ { name = net.ip6.addr or null; value = net.aliases; }
+ ]) host.nets;
+
+ # netAliases : { ${netname} : [addrAliases] }
+ netAliases =
+ foldl'
+ (result: host:
+ foldl'
+ # λ netAliases -> [addrAliases] -> netAliases
+ (result: { name, value }: result // {
+ ${name} = result.${name} or [] ++ value;
+ })
+ result
+ (mapAttrsToList nameValuePair (hostNetAliases host))
+ )
+ {}
+ (attrValues config.krebs.hosts);
+
+ # writeHosts : str -> [addrAliases] -> package
+ writeHosts = name: addrAliases: super.writeText name ''
+ ${concatMapStringsSep
+ "\n"
+ ({ name, value }: "${name} ${toString value}")
+ addrAliases}
+ '';
+ in
+ {
+ # hosts file for all krebs networks
+ krebs-hosts =
+ writeHosts "krebs-hosts" (concatLists [
+ netAliases.internet
+ netAliases.retiolum
+ netAliases.wiregrill
+ ]);
+
+ # combined hosts file for all networks (even custom ones)
+ krebs-hosts_combined =
+ writeHosts "krebs-hosts_combined"
+ (concatLists (attrValues netAliases));
+ }
+ //
+ genAttrs' (attrNames netAliases) (netname: rec {
+ name = "krebs-hosts-${netname}";
+ value = writeHosts name netAliases.${netname};
+ });
};
}
diff --git a/krebs/3modules/retiolum-hosts.nix b/krebs/3modules/retiolum-hosts.nix
deleted file mode 100644
index ddf85ead..00000000
--- a/krebs/3modules/retiolum-hosts.nix
+++ /dev/null
@@ -1,28 +0,0 @@
-with import <stockholm/lib>;
-{ config, ... }: let
- # TODO dedup functions with ./hosts.nix
- check = hostname: any (domain: hasSuffix ".${domain}" hostname) domains;
- domains = attrNames (filterAttrs (_: eq "hosts") config.krebs.dns.providers);
-in {
- nixpkgs.config.packageOverrides = super: {
- retiolum-hosts =
- super.writeText "retiolum-hosts" ''
- ${
- concatStringsSep
- "\n"
- (flatten
- (map
- (host: let
- net = host.nets.retiolum;
- aliases = longs;
- longs = filter check net.aliases;
- in
- optionals
- (aliases != [])
- (map (addr: "${addr} ${toString aliases}") net.addrs))
- (filter (host: hasAttr "retiolum" host.nets)
- (attrValues config.krebs.hosts))))
- }
- '';
- };
-}
diff --git a/lass/2configs/websites/lassulus.nix b/lass/2configs/websites/lassulus.nix
index 27cadd10..526909e8 100644
--- a/lass/2configs/websites/lassulus.nix
+++ b/lass/2configs/websites/lassulus.nix
@@ -61,7 +61,7 @@ in {
alias ${config.krebs.tinc.retiolum.hostsArchive};
'';
locations."= /retiolum.hosts".extraConfig = ''
- alias ${pkgs.retiolum-hosts};
+ alias ${pkgs.krebs-hosts-retiolum};
'';
locations."= /wireguard-key".extraConfig = ''
alias ${pkgs.writeText "prism.wg" config.krebs.hosts.prism.nets.wiregrill.wireguard.pubkey};
diff --git a/tv/5pkgs/override/default.nix b/tv/5pkgs/override/default.nix
index cd7c5645..99c1b3ec 100644
--- a/tv/5pkgs/override/default.nix
+++ b/tv/5pkgs/override/default.nix
@@ -1,6 +1,6 @@
with import <stockholm/lib>;
self: super: {
- rxvt_unicode = self.callPackage ./rxvt_unicode {
+ rxvt_unicode = self.callPackage ./rxvt_unicode.nix {
rxvt_unicode = super.rxvt_unicode;
};
}
diff --git a/tv/5pkgs/override/rxvt_unicode.nix b/tv/5pkgs/override/rxvt_unicode.nix
new file mode 100644
index 00000000..da657fb2
--- /dev/null
+++ b/tv/5pkgs/override/rxvt_unicode.nix
@@ -0,0 +1,9 @@
+{ fetchurl, rxvt_unicode }:
+rxvt_unicode.overrideAttrs (old: {
+ patches = old.patches ++ [
+ (fetchurl {
+ url = https://cgit.krebsco.de/rxvt-unicode/patch/?id=15f3f94;
+ sha256 = "12vldwsds27c9l15ffc6svk9mj17jhypcz736pvpmpqbsymlkz2p";
+ })
+ ];
+})
diff --git a/tv/5pkgs/override/rxvt_unicode/default.nix b/tv/5pkgs/override/rxvt_unicode/default.nix
deleted file mode 100644
index 858a46be..00000000
--- a/tv/5pkgs/override/rxvt_unicode/default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ rxvt_unicode }:
-rxvt_unicode.overrideAttrs (old: {
- patches = old.patches ++ [
- ./finish-running-selection.patch
- ];
-})
diff --git a/tv/5pkgs/override/rxvt_unicode/finish-running-selection.patch b/tv/5pkgs/override/rxvt_unicode/finish-running-selection.patch
deleted file mode 100644
index a342ccf5..00000000
--- a/tv/5pkgs/override/rxvt_unicode/finish-running-selection.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-diff --git a/src/rxvttoolkit.h b/src/rxvttoolkit.h
-index 56c9a3f..429055d 100644
---- a/src/rxvttoolkit.h
-+++ b/src/rxvttoolkit.h
-@@ -384,6 +384,7 @@ struct rxvt_selection
- {
- rxvt_selection (rxvt_display *disp, int selnum, Time tm, Window win, Atom prop, rxvt_term *term);
- void run ();
-+ void finish (char *data = 0, unsigned int len = 0);
- ~rxvt_selection ();
-
- rxvt_term *term; // terminal to paste to, may be 0
-@@ -404,7 +405,6 @@ private:
- void timer_cb (ev::timer &w, int revents); ev::timer timer_ev;
- void x_cb (XEvent &xev); xevent_watcher x_ev;
-
-- void finish (char *data = 0, unsigned int len = 0);
- void stop ();
- bool request (Atom target, int selnum);
- void handle_selection (Window win, Atom prop, bool delete_prop);
-diff --git a/src/screen.C b/src/screen.C
-index 9eb375a..77e7109 100644
---- a/src/screen.C
-+++ b/src/screen.C
-@@ -2736,11 +2736,11 @@ rxvt_term::paste (char *data, unsigned int len) NOTHROW
- void
- rxvt_term::selection_request (Time tm, int selnum) NOTHROW
- {
-- if (!selection_req)
-- {
-- selection_req = new rxvt_selection (display, selnum, tm, vt, xa[XA_VT_SELECTION], this);
-- selection_req->run ();
-- }
-+ if (selection_req)
-+ selection_req->finish ();
-+
-+ selection_req = new rxvt_selection (display, selnum, tm, vt, xa[XA_VT_SELECTION], this);
-+ selection_req->run ();
- }
-
- /* ------------------------------------------------------------------------- */