Merge remote-tracking branch 'lass/master'
This commit is contained in:
commit
332f1ce23c
krebs
lass
2configs
3modules
5pkgs
tv/2configs
|
@ -105,9 +105,7 @@ let
|
|||
gg23 = "hosts";
|
||||
shack = "hosts";
|
||||
i = "hosts";
|
||||
internet = "hosts";
|
||||
r = "hosts";
|
||||
retiolum = "hosts";
|
||||
};
|
||||
|
||||
krebs.users = {
|
||||
|
@ -141,6 +139,29 @@ let
|
|||
) 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>"
|
||||
environment.etc = let
|
||||
stripEmptyLines = s: (concatStringsSep "\n"
|
||||
|
|
|
@ -10,7 +10,7 @@ with import <stockholm/lib>;
|
|||
internet = {
|
||||
ip4.addr = "144.76.172.188";
|
||||
aliases = [
|
||||
"dishfire.internet"
|
||||
"dishfire.i"
|
||||
];
|
||||
ssh.port = 45621;
|
||||
};
|
||||
|
@ -42,7 +42,7 @@ with import <stockholm/lib>;
|
|||
internet = {
|
||||
ip4.addr = "104.233.79.118";
|
||||
aliases = [
|
||||
"echelon.internet"
|
||||
"echelon.i"
|
||||
];
|
||||
ssh.port = 45621;
|
||||
};
|
||||
|
@ -82,9 +82,8 @@ with import <stockholm/lib>;
|
|||
internet = {
|
||||
ip4.addr = "213.239.205.240";
|
||||
aliases = [
|
||||
"prism.internet"
|
||||
"prism.i"
|
||||
"paste.i"
|
||||
"paste.internet"
|
||||
];
|
||||
ssh.port = 45621;
|
||||
};
|
||||
|
@ -132,7 +131,7 @@ with import <stockholm/lib>;
|
|||
internet = {
|
||||
ip4.addr = "104.167.113.104";
|
||||
aliases = [
|
||||
"cloudkrebs.internet"
|
||||
"cloudkrebs.i"
|
||||
];
|
||||
ssh.port = 45621;
|
||||
};
|
||||
|
|
|
@ -413,8 +413,8 @@ with import <stockholm/lib>;
|
|||
dv = {
|
||||
mail = "dv@alnus.r";
|
||||
};
|
||||
mv-cd = {
|
||||
mail = "mv@cd.r";
|
||||
mv-ni = {
|
||||
mail = "mv@ni.r";
|
||||
pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGer9e2+Lew7vnisgBbsFNECEIkpNJgEaqQqgb9inWkQ mv@vod";
|
||||
};
|
||||
tv = {
|
||||
|
|
|
@ -3,15 +3,17 @@
|
|||
# Usage:
|
||||
# _from=krebs state_dir=. python sed-plugin.py 'dick butt'
|
||||
# _from=krebs state_dir=. python sed-plugin.py 's/t/l/g'
|
||||
## dick bull
|
||||
# > dick bull
|
||||
import shelve
|
||||
from os import environ
|
||||
from os.path import join
|
||||
from sys import argv
|
||||
d = shelve.open(join(environ['state_dir'],'sed-plugin.shelve'),writeback=True)
|
||||
usr = environ['_from']
|
||||
import re
|
||||
|
||||
d = shelve.open(join(environ['state_dir'], 'sed-plugin.shelve'), writeback=True)
|
||||
usr = environ['_from']
|
||||
|
||||
|
||||
def is_regex(line):
|
||||
myre = re.compile(r'^s/(?:\\/|[^/])+/(?:\\/|[^/])*/[ig]?$')
|
||||
return myre.match(line)
|
||||
|
@ -19,15 +21,15 @@ def is_regex(line):
|
|||
line = argv[1]
|
||||
|
||||
if is_regex(line):
|
||||
last = d.get(usr,None)
|
||||
last = d.get(usr, None)
|
||||
if last:
|
||||
from subprocess import Popen,PIPE
|
||||
p = Popen(['sed',line],stdin=PIPE,stdout=PIPE)
|
||||
so,se = p.communicate(bytes("{}\n".format(last),"UTF-8"))
|
||||
from subprocess import Popen, PIPE
|
||||
p = Popen(['sed', line], stdin=PIPE, stdout=PIPE)
|
||||
so, se = p.communicate(bytes("{}\n".format(last), "UTF-8"))
|
||||
if p.returncode:
|
||||
print("something went wrong when trying to process your regex: {}".format(se.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:
|
||||
d[usr] = ret
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ let
|
|||
down = moveToDir "Y" "./down";
|
||||
|
||||
in {
|
||||
krebs.per-user.lass.packages = [
|
||||
environment.systemPackages = [
|
||||
mpv
|
||||
];
|
||||
}
|
||||
|
|
|
@ -3,6 +3,6 @@
|
|||
{
|
||||
krebs.build.source.nixpkgs.git = {
|
||||
url = https://cgit.lassul.us/nixpkgs;
|
||||
ref = "11b82a9";
|
||||
ref = "2bb9c1c";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -81,7 +81,7 @@ in {
|
|||
alias ${config.krebs.tinc.retiolum.hostsArchive};
|
||||
'';
|
||||
locations."= /retiolum.hosts".extraConfig = ''
|
||||
alias /etc/hosts;
|
||||
alias ${pkgs.retiolum-hosts};
|
||||
'';
|
||||
locations."/tinc".extraConfig = ''
|
||||
alias ${config.krebs.tinc_graphs.workingDir}/external;
|
||||
|
|
|
@ -5,6 +5,7 @@ _:
|
|||
./folderPerms.nix
|
||||
./hosts.nix
|
||||
./mysql-backup.nix
|
||||
./news.nix
|
||||
./umts.nix
|
||||
./usershadow.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 {};
|
||||
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 pkgs; };
|
||||
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; [
|
||||
{ from = "bku-eppler@viljetic.de"; to = tv.mail; }
|
||||
{ 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 = "tv@destroy.dyn.shackspace.de"; to = tv.mail; }
|
||||
{ from = "tv@viljetic.de"; to = tv.mail; }
|
||||
|
|
|
@ -33,6 +33,9 @@ let {
|
|||
cgit.desc = "dict.leo.org command line interface";
|
||||
};
|
||||
get = {};
|
||||
hstool = {
|
||||
cgit.desc = "Haskell Development Environment ^_^";
|
||||
};
|
||||
htgen = {
|
||||
cgit.desc = "toy HTTP server";
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue