Merge remote-tracking branch 'lass/master'
This commit is contained in:
commit
332f1ce23c
|
@ -105,9 +105,7 @@ let
|
||||||
gg23 = "hosts";
|
gg23 = "hosts";
|
||||||
shack = "hosts";
|
shack = "hosts";
|
||||||
i = "hosts";
|
i = "hosts";
|
||||||
internet = "hosts";
|
|
||||||
r = "hosts";
|
r = "hosts";
|
||||||
retiolum = "hosts";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
krebs.users = {
|
krebs.users = {
|
||||||
|
@ -141,6 +139,29 @@ let
|
||||||
) cfg.hosts
|
) cfg.hosts
|
||||||
));
|
));
|
||||||
|
|
||||||
|
# TODO dedup with networking.extraHosts
|
||||||
|
nixpkgs.config.packageOverrides = oldpkgs:
|
||||||
|
let
|
||||||
|
domains = attrNames (filterAttrs (_: eq "hosts") cfg.dns.providers);
|
||||||
|
check = hostname: any (domain: hasSuffix ".${domain}" hostname) domains;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
retiolum-hosts = oldpkgs.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 cfg.hosts))))}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
# Implements environment.etc."zones/<zone-name>"
|
# Implements environment.etc."zones/<zone-name>"
|
||||||
environment.etc = let
|
environment.etc = let
|
||||||
stripEmptyLines = s: (concatStringsSep "\n"
|
stripEmptyLines = s: (concatStringsSep "\n"
|
||||||
|
|
|
@ -10,7 +10,7 @@ with import <stockholm/lib>;
|
||||||
internet = {
|
internet = {
|
||||||
ip4.addr = "144.76.172.188";
|
ip4.addr = "144.76.172.188";
|
||||||
aliases = [
|
aliases = [
|
||||||
"dishfire.internet"
|
"dishfire.i"
|
||||||
];
|
];
|
||||||
ssh.port = 45621;
|
ssh.port = 45621;
|
||||||
};
|
};
|
||||||
|
@ -42,7 +42,7 @@ with import <stockholm/lib>;
|
||||||
internet = {
|
internet = {
|
||||||
ip4.addr = "104.233.79.118";
|
ip4.addr = "104.233.79.118";
|
||||||
aliases = [
|
aliases = [
|
||||||
"echelon.internet"
|
"echelon.i"
|
||||||
];
|
];
|
||||||
ssh.port = 45621;
|
ssh.port = 45621;
|
||||||
};
|
};
|
||||||
|
@ -82,9 +82,8 @@ with import <stockholm/lib>;
|
||||||
internet = {
|
internet = {
|
||||||
ip4.addr = "213.239.205.240";
|
ip4.addr = "213.239.205.240";
|
||||||
aliases = [
|
aliases = [
|
||||||
"prism.internet"
|
"prism.i"
|
||||||
"paste.i"
|
"paste.i"
|
||||||
"paste.internet"
|
|
||||||
];
|
];
|
||||||
ssh.port = 45621;
|
ssh.port = 45621;
|
||||||
};
|
};
|
||||||
|
@ -132,7 +131,7 @@ with import <stockholm/lib>;
|
||||||
internet = {
|
internet = {
|
||||||
ip4.addr = "104.167.113.104";
|
ip4.addr = "104.167.113.104";
|
||||||
aliases = [
|
aliases = [
|
||||||
"cloudkrebs.internet"
|
"cloudkrebs.i"
|
||||||
];
|
];
|
||||||
ssh.port = 45621;
|
ssh.port = 45621;
|
||||||
};
|
};
|
||||||
|
|
|
@ -413,8 +413,8 @@ with import <stockholm/lib>;
|
||||||
dv = {
|
dv = {
|
||||||
mail = "dv@alnus.r";
|
mail = "dv@alnus.r";
|
||||||
};
|
};
|
||||||
mv-cd = {
|
mv-ni = {
|
||||||
mail = "mv@cd.r";
|
mail = "mv@ni.r";
|
||||||
pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGer9e2+Lew7vnisgBbsFNECEIkpNJgEaqQqgb9inWkQ mv@vod";
|
pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGer9e2+Lew7vnisgBbsFNECEIkpNJgEaqQqgb9inWkQ mv@vod";
|
||||||
};
|
};
|
||||||
tv = {
|
tv = {
|
||||||
|
|
|
@ -3,15 +3,17 @@
|
||||||
# Usage:
|
# Usage:
|
||||||
# _from=krebs state_dir=. python sed-plugin.py 'dick butt'
|
# _from=krebs state_dir=. python sed-plugin.py 'dick butt'
|
||||||
# _from=krebs state_dir=. python sed-plugin.py 's/t/l/g'
|
# _from=krebs state_dir=. python sed-plugin.py 's/t/l/g'
|
||||||
## dick bull
|
# > dick bull
|
||||||
import shelve
|
import shelve
|
||||||
from os import environ
|
from os import environ
|
||||||
from os.path import join
|
from os.path import join
|
||||||
from sys import argv
|
from sys import argv
|
||||||
d = shelve.open(join(environ['state_dir'],'sed-plugin.shelve'),writeback=True)
|
|
||||||
usr = environ['_from']
|
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
d = shelve.open(join(environ['state_dir'], 'sed-plugin.shelve'), writeback=True)
|
||||||
|
usr = environ['_from']
|
||||||
|
|
||||||
|
|
||||||
def is_regex(line):
|
def is_regex(line):
|
||||||
myre = re.compile(r'^s/(?:\\/|[^/])+/(?:\\/|[^/])*/[ig]?$')
|
myre = re.compile(r'^s/(?:\\/|[^/])+/(?:\\/|[^/])*/[ig]?$')
|
||||||
return myre.match(line)
|
return myre.match(line)
|
||||||
|
@ -19,15 +21,15 @@ def is_regex(line):
|
||||||
line = argv[1]
|
line = argv[1]
|
||||||
|
|
||||||
if is_regex(line):
|
if is_regex(line):
|
||||||
last = d.get(usr,None)
|
last = d.get(usr, None)
|
||||||
if last:
|
if last:
|
||||||
from subprocess import Popen,PIPE
|
from subprocess import Popen, PIPE
|
||||||
p = Popen(['sed',line],stdin=PIPE,stdout=PIPE)
|
p = Popen(['sed', line], stdin=PIPE, stdout=PIPE)
|
||||||
so,se = p.communicate(bytes("{}\n".format(last),"UTF-8"))
|
so, se = p.communicate(bytes("{}\n".format(last), "UTF-8"))
|
||||||
if p.returncode:
|
if p.returncode:
|
||||||
print("something went wrong when trying to process your regex: {}".format(se.decode()))
|
print("something went wrong when trying to process your regex: {}".format(se.decode()))
|
||||||
ret = so.decode()
|
ret = so.decode()
|
||||||
print("\x1b[1m{}\x1b[0m meinte: {}".format(usr,ret.strip()))
|
print("\x1b[1m{}\x1b[0m meant: {}".format(usr, ret.strip()))
|
||||||
if ret:
|
if ret:
|
||||||
d[usr] = ret
|
d[usr] = ret
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ let
|
||||||
down = moveToDir "Y" "./down";
|
down = moveToDir "Y" "./down";
|
||||||
|
|
||||||
in {
|
in {
|
||||||
krebs.per-user.lass.packages = [
|
environment.systemPackages = [
|
||||||
mpv
|
mpv
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,6 @@
|
||||||
{
|
{
|
||||||
krebs.build.source.nixpkgs.git = {
|
krebs.build.source.nixpkgs.git = {
|
||||||
url = https://cgit.lassul.us/nixpkgs;
|
url = https://cgit.lassul.us/nixpkgs;
|
||||||
ref = "11b82a9";
|
ref = "2bb9c1c";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,7 +81,7 @@ in {
|
||||||
alias ${config.krebs.tinc.retiolum.hostsArchive};
|
alias ${config.krebs.tinc.retiolum.hostsArchive};
|
||||||
'';
|
'';
|
||||||
locations."= /retiolum.hosts".extraConfig = ''
|
locations."= /retiolum.hosts".extraConfig = ''
|
||||||
alias /etc/hosts;
|
alias ${pkgs.retiolum-hosts};
|
||||||
'';
|
'';
|
||||||
locations."/tinc".extraConfig = ''
|
locations."/tinc".extraConfig = ''
|
||||||
alias ${config.krebs.tinc_graphs.workingDir}/external;
|
alias ${config.krebs.tinc_graphs.workingDir}/external;
|
||||||
|
|
|
@ -5,6 +5,7 @@ _:
|
||||||
./folderPerms.nix
|
./folderPerms.nix
|
||||||
./hosts.nix
|
./hosts.nix
|
||||||
./mysql-backup.nix
|
./mysql-backup.nix
|
||||||
|
./news.nix
|
||||||
./umts.nix
|
./umts.nix
|
||||||
./usershadow.nix
|
./usershadow.nix
|
||||||
./xresources.nix
|
./xresources.nix
|
||||||
|
|
76
lass/3modules/news.nix
Normal file
76
lass/3modules/news.nix
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with import <stockholm/lib>;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.lass.news;
|
||||||
|
|
||||||
|
out = {
|
||||||
|
options.lass.news = api;
|
||||||
|
config = lib.mkIf cfg.enable imp;
|
||||||
|
};
|
||||||
|
|
||||||
|
api = {
|
||||||
|
enable = mkEnableOption "umts";
|
||||||
|
feeds = mkOption {
|
||||||
|
type = types.listOf (types.submodule { options = {
|
||||||
|
nick = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
feedurl = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
interval = mkOption {
|
||||||
|
type = types.int;
|
||||||
|
default = 1000;
|
||||||
|
};
|
||||||
|
channels = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
};
|
||||||
|
};});
|
||||||
|
};
|
||||||
|
user = mkOption {
|
||||||
|
type = types.user;
|
||||||
|
default = {
|
||||||
|
name = "news";
|
||||||
|
home = "/var/lib/news";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
ircServer = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "echelon.r";
|
||||||
|
description = "to which server the bot should connect";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
imp = {
|
||||||
|
|
||||||
|
users.users.${cfg.user.name} = {
|
||||||
|
inherit (cfg.user) home name uid;
|
||||||
|
createHome = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services = listToAttrs (map (feed:
|
||||||
|
nameValuePair "news-${feed.nick}" {
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
SyslogIdentifier = "news-${feed.nick}";
|
||||||
|
User = cfg.user.name;
|
||||||
|
PrivateTmp = true;
|
||||||
|
Restart = "always";
|
||||||
|
ExecStart = pkgs.writeDash "news-${feed.nick}" ''
|
||||||
|
${pkgs.haskellPackages.news}/bin/news '${feed.feedurl}' '${toString feed.interval}' \
|
||||||
|
| ${pkgs.goify}/bin/goify \
|
||||||
|
| while :; do
|
||||||
|
${pkgs.haskellPackages.kirk}/bin/ircout --nick '${feed.nick}' --host '${cfg.ircServer}' \
|
||||||
|
\${concatStringsSep " \\" feed.channels}
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
) cfg.feeds);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
in out
|
|
@ -19,6 +19,7 @@
|
||||||
q = pkgs.callPackage ./q {};
|
q = pkgs.callPackage ./q {};
|
||||||
rs = pkgs.callPackage ./rs/default.nix {};
|
rs = pkgs.callPackage ./rs/default.nix {};
|
||||||
urban = pkgs.callPackage ./urban/default.nix {};
|
urban = pkgs.callPackage ./urban/default.nix {};
|
||||||
|
xml2json = pkgs.callPackage ./xml2json/default.nix {};
|
||||||
xmonad-lass = import ./xmonad-lass.nix { inherit pkgs; };
|
xmonad-lass = import ./xmonad-lass.nix { inherit pkgs; };
|
||||||
yt-next = pkgs.callPackage ./yt-next/default.nix {};
|
yt-next = pkgs.callPackage ./yt-next/default.nix {};
|
||||||
};
|
};
|
||||||
|
|
17
lass/5pkgs/xml2json/default.nix
Normal file
17
lass/5pkgs/xml2json/default.nix
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{ pkgs, ... }:
|
||||||
|
let
|
||||||
|
pp = pkgs.python35Packages;
|
||||||
|
in pp.buildPythonPackage rec {
|
||||||
|
name = "xml2json-${version}";
|
||||||
|
version = "22ffcd";
|
||||||
|
propagatedBuildInputs = [
|
||||||
|
pp.simplejson
|
||||||
|
];
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "hay";
|
||||||
|
repo = "xml2json";
|
||||||
|
rev = "${version}";
|
||||||
|
sha256 = "1snjd6q6bk517350gdrl8kkphkra0iaz56i583h2q57ab09r29vc";
|
||||||
|
};
|
||||||
|
doCheck = false;
|
||||||
|
}
|
|
@ -21,7 +21,7 @@ with import <stockholm/lib>;
|
||||||
internet-aliases = with config.krebs.users; [
|
internet-aliases = with config.krebs.users; [
|
||||||
{ from = "bku-eppler@viljetic.de"; to = tv.mail; }
|
{ from = "bku-eppler@viljetic.de"; to = tv.mail; }
|
||||||
{ from = "postmaster@viljetic.de"; to = tv.mail; } # RFC 822
|
{ from = "postmaster@viljetic.de"; to = tv.mail; } # RFC 822
|
||||||
{ from = "mirko@viljetic.de"; to = mv-cd.mail; }
|
{ from = "mirko@viljetic.de"; to = mv-ni.mail; }
|
||||||
{ from = "tomislav@viljetic.de"; to = tv.mail; }
|
{ from = "tomislav@viljetic.de"; to = tv.mail; }
|
||||||
{ from = "tv@destroy.dyn.shackspace.de"; to = tv.mail; }
|
{ from = "tv@destroy.dyn.shackspace.de"; to = tv.mail; }
|
||||||
{ from = "tv@viljetic.de"; to = tv.mail; }
|
{ from = "tv@viljetic.de"; to = tv.mail; }
|
||||||
|
|
|
@ -33,6 +33,9 @@ let {
|
||||||
cgit.desc = "dict.leo.org command line interface";
|
cgit.desc = "dict.leo.org command line interface";
|
||||||
};
|
};
|
||||||
get = {};
|
get = {};
|
||||||
|
hstool = {
|
||||||
|
cgit.desc = "Haskell Development Environment ^_^";
|
||||||
|
};
|
||||||
htgen = {
|
htgen = {
|
||||||
cgit.desc = "toy HTTP server";
|
cgit.desc = "toy HTTP server";
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user