diff options
33 files changed, 864 insertions, 178 deletions
diff --git a/krebs/3modules/default.nix b/krebs/3modules/default.nix index e2aea7057..c695589ca 100644 --- a/krebs/3modules/default.nix +++ b/krebs/3modules/default.nix @@ -14,6 +14,7 @@ let ./iptables.nix ./nginx.nix ./Reaktor.nix + ./retiolum-bootstrap.nix ./realwallpaper.nix ./retiolum.nix ./urlwatch.nix diff --git a/krebs/3modules/lass/default.nix b/krebs/3modules/lass/default.nix index 59052021b..d86c00563 100644 --- a/krebs/3modules/lass/default.nix +++ b/krebs/3modules/lass/default.nix @@ -2,7 +2,34 @@ with lib; -{ +let + testHosts = lib.genAttrs [ + "test-arch" + "test-centos6" + "test-centos7" + ] (name: { + inherit name; + nets = { + retiolum = { + addrs4 = ["10.243.111.111"]; + addrs6 = ["42:0:0:0:0:0:0:7357"]; + aliases = [ + "test.retiolum" + ]; + tinc.pubkey = '' + -----BEGIN RSA PUBLIC KEY----- + MIIBCgKCAQEAy41YKF/wpHLnN370MSdnAo63QUW30aw+6O79cnaJyxoL6ZQkk4Nd + mrX2tBIfb2hhhgm4Jecy33WVymoEL7EiRZ6gshJaYwte51Jnrac6IFQyiRGMqHY5 + TG/6IzzTOkeQrT1fw3Yfh0NRfqLBZLr0nAFoqgzIVRxvy+QO1gCU2UDKkQ/y5df1 + K+YsMipxU08dsOkPkmLdC/+vDaZiEdYljIS3Omd+ED5JmLM3MSs/ZPQ8xjkjEAy8 + QqD9/67bDoeXyg1ZxED2n0+aRKtU/CK/66Li//yev6yv38OQSEM4t/V0dr9sjLcY + VIdkxKf96F9r3vcDf/9xw2HrqVoy+D5XYQIDAQAB + -----END RSA PUBLIC KEY----- + ''; + }; + }; + }); +in { hosts = addNames { echelon = { cores = 4; @@ -104,7 +131,11 @@ with lib; uriel = { cores = 1; dc = "lass"; - nets = rec { + nets = { + gg23 = { + addrs4 = ["10.23.1.12"]; + aliases = ["uriel.gg23"]; + }; retiolum = { addrs4 = ["10.243.81.176"]; addrs6 = ["42:dc25:60cf:94ef:759b:d2b6:98a9:2e56"]; @@ -131,7 +162,11 @@ with lib; mors = { cores = 2; dc = "lass"; - nets = rec { + nets = { + gg23 = { + addrs4 = ["10.23.1.11"]; + aliases = ["mors.gg23"]; + }; retiolum = { addrs4 = ["10.243.0.2"]; addrs6 = ["42:0:0:0:0:0:0:dea7"]; @@ -155,8 +190,24 @@ with lib; ssh.privkey.path = <secrets/ssh.id_ed25519>; ssh.pubkey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINAMPlIG+6u75GJ3kvsPF6OoIZsU+u8ZQ+rdviv5fNMD"; }; + schnabel-ap = { + nets = { + gg23 = { + addrs4 = ["10.23.1.20"]; + aliases = ["schnabel-ap.gg23"]; + }; + }; + }; + Reichsfunk-ap = { + nets = { + gg23 = { + addrs4 = ["10.23.1.10"]; + aliases = ["Reichsfunk-ap.gg23"]; + }; + }; + }; - }; + } // testHosts; users = addNames { lass = { pubkey = readFile ../../Zpubkeys/lass.ssh.pub; diff --git a/krebs/3modules/makefu/default.nix b/krebs/3modules/makefu/default.nix index 9cf5c9aea..42764e48c 100644 --- a/krebs/3modules/makefu/default.nix +++ b/krebs/3modules/makefu/default.nix @@ -127,10 +127,8 @@ with lib; "krebsco.de" = '' IN MX 10 mx42 euer IN MX 1 aspmx.l.google.com. - io IN NS pigstarter.krebsco.de. pigstarter IN A ${head nets.internet.addrs4} gold IN A ${head nets.internet.addrs4} - tinc IN A ${head nets.internet.addrs4} boot IN A ${head nets.internet.addrs4}''; }; nets = { @@ -166,7 +164,9 @@ with lib; extraZones = { "krebsco.de" = '' wry IN A ${head nets.internet.addrs4} + io IN NS wry.krebsco.de. graphs IN A ${head nets.internet.addrs4} + tinc IN A ${head nets.internet.addrs4} ''; }; nets = rec { diff --git a/krebs/3modules/retiolum-bootstrap.nix b/krebs/3modules/retiolum-bootstrap.nix new file mode 100644 index 000000000..eed11642f --- /dev/null +++ b/krebs/3modules/retiolum-bootstrap.nix @@ -0,0 +1,58 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.krebs.retiolum-bootstrap; + + out = { + options.krebs.retiolum-bootstrap = api; + config = mkIf cfg.enable imp ; + }; + + api = { + enable = mkEnableOption "retiolum boot strap for tinc.krebsco.de"; + hostname = mkOption { + type = types.str; + description = "hostname which serves tinc boot"; + default = "tinc.krebsco.de" ; + }; + ssl_certificate_key = mkOption { + type = types.str; + description = "Certificate key to use for ssl"; + default = "/root/secrets/tinc.krebsco.de.key"; + }; + ssl_certificate = mkOption { + type = types.str; + description = "Certificate file to use for ssl"; + default = "/root/secrets/tinc.krebsco.de.crt" ; + }; + # in use: + # <secrets/tinc.krebsco.de.crt> + # <secrets/tinc.krebsco.de.key> + }; + + imp = { + krebs.nginx.servers = assert config.krebs.nginx.enable; { + retiolum-boot-redir = { + server-names = singleton cfg.hostname; + extraConfig = '' + return 301 https://$server_name$request_uri; + ''; + locations = []; + }; + retiolum-boot-ssl = { + server-names = singleton cfg.hostname; + listen = "443 ssl"; + extraConfig = '' + ssl_certificate ${cfg.ssl_certificate}; + ssl_certificate_key ${cfg.ssl_certificate_key}; + root ${pkgs.retiolum-bootstrap}; + try_files $uri $uri/retiolum.sh; + ''; + locations = []; + }; + }; + }; + +in +out diff --git a/krebs/4lib/infest/finalize.sh b/krebs/4lib/infest/finalize.sh index 0039960c5..94b13e0be 100644 --- a/krebs/4lib/infest/finalize.sh +++ b/krebs/4lib/infest/finalize.sh @@ -3,8 +3,8 @@ set -eux { umount /mnt/nix umount /mnt/root - umount /boot || : umount /mnt/boot + umount /boot || : umount /mnt coreutils_path=$(set +f; for i in /nix/store/*coreutils*/bin; do :; done; echo $i) diff --git a/krebs/4lib/infest/prepare.sh b/krebs/4lib/infest/prepare.sh index 9fbd5be86..94c9b0fb5 100644 --- a/krebs/4lib/infest/prepare.sh +++ b/krebs/4lib/infest/prepare.sh @@ -18,6 +18,13 @@ prepare() {( esac ;; esac + elif test -e /etc/centos-release; then + case $(cat /etc/centos-release) in + 'CentOS release 6.5 (Final)') + prepare_centos "$@" + exit + ;; + esac fi echo "$0 prepare: unknown OS" >&2 exit -1 diff --git a/krebs/5pkgs/retiolum-bootstrap/default.nix b/krebs/5pkgs/retiolum-bootstrap/default.nix new file mode 100644 index 000000000..331b1cb7f --- /dev/null +++ b/krebs/5pkgs/retiolum-bootstrap/default.nix @@ -0,0 +1,29 @@ +{ stdenv,lib,fetchurl, ... }: +with lib; +stdenv.mkDerivation rec { + name = "retiolum-bootstrap"; + version = "4.2.3"; + + + src = fetchurl { + url = https://raw.githubusercontent.com/krebscode/painload/master/retiolum/scripts/tinc_setup/new_install.sh; + sha256 = "03kmil8q2xm3rdm2jxyah7vww84pw6w01d0c3siid9zpn2j7la9s"; + }; + + phases = [ + "installPhase" + ]; + + installPhase = '' + mkdir -p "$out" + cp -a ${src} $out/retiolum.sh + ''; + + meta = { + description = "Retiolum boostrap scripts"; + url = https://github.com/krebscode/painload; + license = licenses.wtfpl; + platforms = platforms.unix; + maintainers = with maintainers; [ makefu ]; + }; +} diff --git a/lass/1systems/cloudkrebs.nix b/lass/1systems/cloudkrebs.nix index 17915e087..ab24b584b 100644 --- a/lass/1systems/cloudkrebs.nix +++ b/lass/1systems/cloudkrebs.nix @@ -27,30 +27,9 @@ in { } { - nix.maxJobs = 1; sound.enable = false; } ]; - krebs.build = { - user = config.krebs.users.lass; - host = config.krebs.hosts.cloudkrebs; - source = { - dir.secrets = { - host = config.krebs.hosts.mors; - path = "/home/lass/secrets/${config.krebs.build.host.name}"; - }; - dir.stockholm = { - host = config.krebs.hosts.mors; - path = "/home/lass/dev/stockholm"; - }; - }; - }; - - networking.hostName = "cloudkrebs"; - - environment.systemPackages = [ - pkgs.dic - ]; - + krebs.build.host = config.krebs.hosts.cloudkrebs; } diff --git a/lass/1systems/echelon.nix b/lass/1systems/echelon.nix index feaf77ef6..80cb51060 100644 --- a/lass/1systems/echelon.nix +++ b/lass/1systems/echelon.nix @@ -31,26 +31,9 @@ in { } { - nix.maxJobs = 1; sound.enable = false; } ]; - krebs.build = { - user = config.krebs.users.lass; - host = config.krebs.hosts.echelon; - source = { - dir.secrets = { - host = config.krebs.hosts.mors; - path = "/home/lass/secrets/${config.krebs.build.host.name}"; - }; - dir.stockholm = { - host = config.krebs.hosts.mors; - path = "/home/lass/dev/stockholm"; - }; - }; - }; - - networking.hostName = config.krebs.build.host.name; - + krebs.build.host = config.krebs.hosts.echelon; } diff --git a/lass/1systems/mors.nix b/lass/1systems/mors.nix index 7076c8b14..b0b8ff573 100644 --- a/lass/1systems/mors.nix +++ b/lass/1systems/mors.nix @@ -2,7 +2,7 @@ { imports = [ - ../2configs/desktop-base.nix + ../2configs/baseX.nix ../2configs/programs.nix ../2configs/bitcoin.nix ../2configs/browsers.nix @@ -10,7 +10,6 @@ ../2configs/pass.nix ../2configs/virtualbox.nix ../2configs/elster.nix - ../2configs/urxvt.nix ../2configs/steam.nix ../2configs/wine.nix ../2configs/texlive.nix @@ -18,7 +17,6 @@ #../2configs/ircd.nix ../2configs/chromium-patched.nix ../2configs/git.nix - #../../2configs/tv/synaptics.nix ../2configs/retiolum.nix ../2configs/wordpress.nix ../2configs/bitlbee.nix @@ -26,22 +24,8 @@ ../2configs/skype.nix ]; - krebs.build = { - user = config.krebs.users.lass; - host = config.krebs.hosts.mors; - source = { - dir.secrets = { - host = config.krebs.hosts.mors; - path = "/home/lass/secrets/${config.krebs.build.host.name}"; - }; - dir.stockholm = { - host = config.krebs.hosts.mors; - path = "/home/lass/dev/stockholm"; - }; - }; - }; + krebs.build.host = config.krebs.hosts.mors; - networking.hostName = "mors"; networking.wireless.enable = true; networking.extraHosts = '' @@ -52,8 +36,6 @@ 10.243.206.102 apanowicz.de ''; - nix.maxJobs = 4; - hardware.enableAllFirmware = true; nixpkgs.config.allowUnfree = true; @@ -159,11 +141,6 @@ emulateWheel = true; }; - #system.activationScripts.trackpoint = '' - # echo 0 > '/sys/devices/platform/i8042/serio1/serio2/speed' - # echo 220 > '/sys/devices/platform/i8042/serio1/serio2/sensitivity' - #''; - services.xserver = { videoDriver = "intel"; vaapiDrivers = [ pkgs.vaapiIntel ]; @@ -210,9 +187,19 @@ ]; }; }; + #touchpad config services.xserver.synaptics = { enable = true; + accelFactor = "0.035"; + additionalOptions = '' + Option "FingerHigh" "60" + Option "FingerLow" "60" + ''; tapButtons = false; + twoFingerScroll = true; }; + + #for google hangout + users.extraUsers.gm.extraGroups = [ "audio" "video" ]; } diff --git a/lass/1systems/test-arch.nix b/lass/1systems/test-arch.nix new file mode 100644 index 000000000..0ab9da2f3 --- /dev/null +++ b/lass/1systems/test-arch.nix @@ -0,0 +1,36 @@ +{ config, lib, pkgs, ... }: + +let + inherit (import ../4lib { inherit pkgs lib; }) getDefaultGateway; + inherit (lib) head; + +in { + imports = [ + ../2configs/base.nix + { + boot.loader.grub = { + device = "/dev/sda"; + splashImage = null; + }; + + boot.initrd.availableKernelModules = [ + "ata_piix" + "vmw_pvscsi" + ]; + + fileSystems."/" = { + device = "/dev/sda1"; + }; + } + { + networking.dhcpcd.allowInterfaces = [ + "enp*" + ]; + } + { + sound.enable = false; + } + ]; + + krebs.build.host = config.krebs.hosts.test-arch; +} diff --git a/lass/1systems/test-centos6.nix b/lass/1systems/test-centos6.nix new file mode 100644 index 000000000..7270c2262 --- /dev/null +++ b/lass/1systems/test-centos6.nix @@ -0,0 +1,30 @@ +{ config, lib, pkgs, ... }: + +let + inherit (import ../4lib { inherit pkgs lib; }) getDefaultGateway; + inherit (lib) head; + + ip = "168.235.148.52"; +in { + imports = [ + ../2configs/base.nix + ../2configs/os-templates/CAC-CentOS-6.5-64bit.nix + { + networking.interfaces.enp11s0.ip4 = [ + { + address = ip; + prefixLength = 24; + } + ]; + networking.defaultGateway = getDefaultGateway ip; + networking.nameservers = [ + "8.8.8.8" + ]; + } + { + sound.enable = false; + } + ]; + + krebs.build.host = config.krebs.hosts.test-centos6; +} diff --git a/lass/1systems/test-centos7.nix b/lass/1systems/test-centos7.nix new file mode 100644 index 000000000..91bd3e0fe --- /dev/null +++ b/lass/1systems/test-centos7.nix @@ -0,0 +1,31 @@ +{ config, lib, pkgs, ... }: + +let + inherit (import ../4lib { inherit pkgs lib; }) getDefaultGateway; + inherit (lib) head; + + ip = "168.235.145.85"; +in { + imports = [ + ../2configs/base.nix + ../2configs/os-templates/CAC-CentOS-7-64bit.nix + { + networking.interfaces.enp2s1.ip4 = [ + { + address = ip; + prefixLength = 24; + } + ]; + networking.defaultGateway = getDefaultGateway ip; + networking.nameservers = [ + "8.8.8.8" + ]; + + } + { + sound.enable = false; + } + ]; + + krebs.build.host = config.krebs.hosts.test-centos7; +} diff --git a/lass/1systems/uriel.nix b/lass/1systems/uriel.nix index 62338d054..1b008cbfd 100644 --- a/lass/1systems/uriel.nix +++ b/lass/1systems/uriel.nix @@ -3,11 +3,10 @@ with builtins; { imports = [ - ../2configs/desktop-base.nix + ../2configs/baseX.nix ../2configs/browsers.nix ../2configs/games.nix ../2configs/pass.nix - ../2configs/urxvt.nix ../2configs/bird.nix ../2configs/git.nix ../2configs/chromium-patched.nix @@ -25,26 +24,9 @@ with builtins; } ]; - krebs.build = { - user = config.krebs.users.lass; - target = "root@uriel"; - host = config.krebs.hosts.uriel; - source = { - dir.secrets = { - host = config.krebs.hosts.mors; - path = "/home/lass/secrets/${config.krebs.build.host.name}"; - }; - dir.stockholm = { - host = config.krebs.hosts.mors; - path = "/home/lass/dev/stockholm"; - }; - }; - }; - - networking.hostName = "uriel"; + krebs.build.host = config.krebs.hosts.uriel; networking.wireless.enable = true; - nix.maxJobs = 2; hardware.enableAllFirmware = true; nixpkgs.config.allowUnfree = true; @@ -65,8 +47,6 @@ with builtins; initrd.availableKernelModules = [ "xhci_hcd" "ehci_pci" "ahci" "usb_storage" ]; #kernelModules = [ "kvm-intel" "msr" ]; kernelModules = [ "msr" ]; - extraModprobeConfig = '' - ''; }; fileSystems = { "/" = { @@ -93,11 +73,4 @@ with builtins; Option "FingerLow" "60" ''; }; - - environment.systemPackages = with pkgs; [ - ]; - - #for google hangout - - users.extraUsers.google.extraGroups = [ "audio" "video" ]; } diff --git a/lass/2configs/base.nix b/lass/2configs/base.nix index f313054d9..6fa9c5b2d 100644 --- a/lass/2configs/base.nix +++ b/lass/2configs/base.nix @@ -38,14 +38,28 @@ with lib; } ]; + networking.hostName = config.krebs.build.host.name; + nix.maxJobs = config.krebs.build.host.cores; + krebs = { enable = true; search-domain = "retiolum"; exim-retiolum.enable = true; - build.source = { - git.nixpkgs = { - url = https://github.com/Lassulus/nixpkgs; - rev = "b9270a2e8ac3d2cf4c95075a9529528aa1d859da"; + build = { + user = config.krebs.users.lass; + source = { + git.nixpkgs = { + url = https://github.com/Lassulus/nixpkgs; + rev = "33bdc011f5360288cd10b9fda90da2950442b2ab"; + }; + dir.secrets = { + host = config.krebs.hosts.mors; + path = "/home/lass/secrets/${config.krebs.build.host.name}"; + }; + dir.stockholm = { + host = config.krebs.hosts.mors; + path = "/home/lass/stockholm"; + }; }; }; }; @@ -82,6 +96,9 @@ with lib; #network iptables + + #stuff for dl + aria2 ]; programs.bash = { @@ -123,12 +140,6 @@ with lib; "sendmail" ]; - #services.gitolite = { - # enable = true; - # dataDir = "/home/gitolite"; - # adminPubkey = config.sshKeys.lass.pub; - #}; - services.openssh = { enable = true; hostKeys = [ diff --git a/lass/2configs/desktop-base.nix b/lass/2configs/baseX.nix index 4e693997d..1f5c3de55 100644 --- a/lass/2configs/desktop-base.nix +++ b/lass/2configs/baseX.nix @@ -5,6 +5,7 @@ let in { imports = [ ./base.nix + ./urxvt.nix ]; time.timeZone = "Europe/Berlin"; @@ -30,6 +31,7 @@ in { powertop sxiv much + push #window manager stuff haskellPackages.xmobar diff --git a/lass/2configs/newsbot-js.nix b/lass/2configs/newsbot-js.nix new file mode 100644 index 000000000..211b29780 --- /dev/null +++ b/lass/2configs/newsbot-js.nix @@ -0,0 +1,202 @@ +{ config, pkgs, ... }: + +let + newsfile = pkgs.writeText "feeds" '' + aje|http://www.aljazeera.com/Services/Rss/?PostingId=2007731105943979989|#news + aktuelle_themen|http://bundestag.de/service/rss/Bundestag_Aktuelle_Themen.rss|#news #bundestag + allafrica|http://allafrica.com/tools/headlines/rdf/latest/headlines.rdf|#news + anon|http://anoninsiders.net/feed/|#news + antirez|http://antirez.com/rss|#news + arbor|http://feeds2.feedburner.com/asert/|#news + archlinux|http://www.archlinux.org/feeds/news/|#news + ars|http://feeds.arstechnica.com/arstechnica/index?format=xml|#news + asiaone_asia|http://news.asiaone.com/rss/asia|#news + asiaone_business|http://business.asiaone.com/rss.xml|#news + asiaone_sci|http://news.asiaone.com/rss/science-and-tech|#news + asiaone_world|http://news.asiaone.com/rss/world|#news + augustl|http://augustl.com/atom.xml|#news + bbc|http://feeds.bbci.co.uk/news/rss.xml|#news + bdt_drucksachen|http://www.bundestag.de/dip21rss/bundestag_drucksachen.rss|#news #bundestag + bdt_plenarproto|http://www.bundestag.de/rss_feeds/plenarprotokolle.rss|#news #bundestag + bdt_pressemitteilungen|http://bundestag.de/service/rss/Bundestag_Presse.rss|#news #bundestag + bdt_wd|http://bundestag.de/service/rss/Bundestag_WD.rss|#news #bundestag + bitcoinpakistan|https://bitcoinspakistan.com/feed/|#news #financial + cancer|http://feeds.feedburner.com/ncinewsreleases?format=xml|#news + carta|http://feeds2.feedburner.com/carta-standard-rss|#news + catholic_news|http://feeds.feedburner.com/catholicnewsagency/dailynews|#news + cbc_busi|http://rss.cbc.ca/lineup/business.xml|#news + cbc_offbeat|http://www.cbc.ca/cmlink/rss-offbeat|#news + cbc_pol|http://rss.cbc.ca/lineup/politics.xml|#news + cbc_tech|http://rss.cbc.ca/lineup/technology.xml|#news + cbc_top|http://rss.cbc.ca/lineup/topstories.xml|#news + ccc|http://www.ccc.de/rss/updates.rdf|#news + chan_b|https://boards.4chan.org/b/index.rss|#brainfuck + chan_biz|https://boards.4chan.org/biz/index.rss|#news #brainfuck + chan_int|https://boards.4chan.org/int/index.rss|#news #brainfuck + cna|http://www.channelnewsasia.com/starterkit/servlet/cna/rss/home.xml|#news + coinspotting|http://coinspotting.com/rss|#news #financial + cryptanalysis|https://cryptanalys.is/rss.php|#news + cryptocoinsnews|http://www.cryptocoinsnews.com/feed/|#news #financial + cryptogon|http://www.cryptogon.com/?feed=rss2|#news + csm|http://rss.csmonitor.com/feeds/csm|#news + csm_world|http://rss.csmonitor.com/feeds/world|#news + cyberguerrilla|https://www.cyberguerrilla.org/a/2012/?feed=rss2|#news + danisch|http://www.danisch.de/blog/feed/|#news + dod|http://www.defense.gov/news/afps2.xml|#news + dwn|http://deutsche-wirtschafts-nachrichten.de/feed/customfeed/|#news + ecat|http://ecat.com/feed|#news + eia_press|http://www.eia.gov/rss/press_rss.xml|#news + eia_today|http://www.eia.gov/rss/todayinenergy.xml|#news + embargowatch|https://embargowatch.wordpress.com/feed/|#news + ethereum-comments|http://blog.ethereum.org/comments/feed|#news + ethereum|http://blog.ethereum.org/feed|#news + europa_ric|http://ec.europa.eu/research/infocentre/rss/infocentre-rss.xml|#news + eu_survei|http://www.eurosurveillance.org/public/RSSFeed/RSS.aspx|#news + exploitdb|http://www.exploit-db.com/rss.xml|#news + fars|http://www.farsnews.com/rss.php|#news #test + faz_feui|http://www.faz.net/rss/aktuell/feuilleton/|#news + faz_politik|http://www.faz.net/rss/aktuell/politik/|#news + faz_wirtschaft|http://www.faz.net/rss/aktuell/wirtschaft/|#news #financial + fbi|http://www.fbi.gov/homepage/RSS|#news #bullerei + fbi_news|http://www.fbi.gov/news/news_blog/rss.xml|#news + fbi_press|http://www.fbi.gov/news/current/rss.xml|#news #bullerei + fbi_stories|http://www.fbi.gov/news/stories/all-stories/rss.xml|#news #bullerei + fedreserve|http://www.federalreserve.gov/feeds/press_all.xml|#news #financial + fefe|http://blog.fefe.de/rss.xml|#news + forbes|http://www.forbes.com/forbes/feed2/|#news + forbes_realtime|http://www.forbes.com/real-time/feed2/|#news + fox|http://feeds.foxnews.com/foxnews/latest|#news + geheimorganisation|http://geheimorganisation.org/feed/|#news + GerForPol|http://www.german-foreign-policy.com/de/news/rss-2.0|#news + gmanet|http://www.gmanetwork.com/news/rss/news|#news + golem|http://www.golem.de/rss.php?feed=RSS1.0|#news + google|http://news.google.com/?output=rss|#news + greenpeace|http://feeds.feedburner.com/GreenpeaceNews|#news + guardian_uk|http://feeds.theguardian.com/theguardian/uk-news/rss|#news + gulli|http://ticker.gulli.com/rss/|#news + handelsblatt|http://www.handelsblatt.com/contentexport/feed/schlagzeilen|#news #financial + heise|http://heise.de.feedsportal.com/c/35207/f/653902/index.rss|#news + hindu_business|http://www.thehindubusinessline.com/?service=rss|#news #financial + hindu|http://www.thehindu.com/?service=rss|#news + hintergrund|http://www.hintergrund.de/index.php?option=com_bca-rss-syndicator&feed_id=8|#news + ign|http://feeds.ign.com/ign/all|#news + independent|http://www.independent.com/rss/headlines/|#news + indymedia|http://de.indymedia.org/RSS/newswire.xml|#news + info_libera|http://www.informationliberation.com/rss.xml|#news + klagen-gegen-rundfuckbeitrag|http://klagen-gegen-rundfunkbeitrag.blogspot.com/feeds/posts/default|#news + korea_herald|http://www.koreaherald.com/rss_xml.php|#news + linuxinsider|http://www.linuxinsider.com/perl/syndication/rssfull.pl|#news + lisp|http://planet.lisp.org/rss20.xml|#news + liveleak|http://www.liveleak.com/rss|#news + lolmythesis|http://lolmythesis.com/rss|#news + LtU|http://lambda-the-ultimate.org/rss.xml|#news + lukepalmer|http://lukepalmer.wordpress.com/feed/|#news + mit|http://web.mit.edu/newsoffice/rss-feeds.feed?type=rss|#news + mongrel2_master|https://github.com/zedshaw/mongrel2/commits/master.atom|#news + nds|http://www.nachdenkseiten.de/?feed=atom|#news + netzpolitik|https://netzpolitik.org/feed/|#news + newsbtc|http://newsbtc.com/feed/|#news #financial + nnewsg|http://www.net-news-global.net/rss/rssfeed.xml|#news + npr_busi|http://www.npr.org/rss/rss.php?id=1006|#news + npr_headlines|http://www.npr.org/rss/rss.php?id=1001|#news + npr_pol|http://www.npr.org/rss/rss.php?id=1012|#news + npr_world|http://www.npr.org/rss/rss.php?id=1004|#news + nsa|http://www.nsa.gov/rss.shtml|#news #bullerei + nytimes|http://rss.nytimes.com/services/xml/rss/nyt/World.xml|#news + painload|https://github.com/krebscode/painload/commits/master.atom|#news + phys|http://phys.org/rss-feed/|#news + piraten|https://www.piratenpartei.de/feed/|#news + polizei_berlin|http://www.berlin.de/polizei/presse-fahndung/_rss_presse.xml|#news #bullerei + presse_polizei|http://www.presseportal.de/rss/polizei.rss2|#news #bullerei + presseportal|http://www.presseportal.de/rss/presseportal.rss2|#news + prisonplanet|http://prisonplanet.com/feed.rss|#news + proofmarket|https://proofmarket.org/feed_problem|#news + rawstory|http://www.rawstory.com/rs/feed/|#news + reddit_4chan|http://www.reddit.com/r/4chan/new/.rss|#news #brainfuck + reddit_anticonsum|http://www.reddit.com/r/Anticonsumption/new/.rss|#news + reddit_btc|http://www.reddit.com/r/Bitcoin/new/.rss|#news #financial + reddit_prog|http://www.reddit.com/r/programming/new/.rss|#news + reddit_tpp|http://www.reddit.com/r/twitchplayspokemon/.rss|#news #tpp + reddit_world|http://www.reddit.com/r/worldnews/.rss|#news + r-ethereum|http://www.reddit.com/r/ethereum/.rss|#news + reuters|http://feeds.reuters.com/Reuters/worldNews|#news + reuters-odd|http://feeds.reuters.com/reuters/oddlyEnoughNews?format=xml|#news + rt|http://rt.com/rss/news/|#news + schallurauch|http://feeds.feedburner.com/SchallUndRauch|#news + sciencemag|http://news.sciencemag.org/rss/current.xml|#news + scmp|http://www.scmp.com/rss/91/feed|#news + sec-db|http://feeds.security-database.com/SecurityDatabaseToolsWatch|#news + shackspace|http://shackspace.de/?feed=rss2|#news + shz_news|http://www.shz.de/nachrichten/newsticker/rss|#news + sky_busi|http://news.sky.com/feeds/rss/business.xml|#news + sky_pol|http://news.sky.com/feeds/rss/politics.xml|#news + sky_strange|http://news.sky.com/feeds/rss/strange.xml|#news + sky_tech|http://news.sky.com/feeds/rss/technology.xml|#news + sky_world|http://news.sky.com/feeds/rss/world.xml|#news + slashdot|http://rss.slashdot.org/Slashdot/slashdot|#news + slate|http://feeds.slate.com/slate|#news + spiegel_eil|http://www.spiegel.de/schlagzeilen/eilmeldungen/index.rss|#news + spiegelfechter|http://feeds.feedburner.com/DerSpiegelfechter?format=xml|#news + spiegel_top|http://www.spiegel.de/schlagzeilen/tops/index.rss|#news + standardmedia_ke|http://www.standardmedia.co.ke/rss/headlines.php|#news + stern|http://www.stern.de/feed/standard/all/|#news + stz|http://www.stuttgarter-zeitung.de/rss/topthemen.rss.feed|#news + sz_politik|http://rss.sueddeutsche.de/rss/Politik|#news + sz_wirtschaft|http://rss.sueddeutsche.de/rss/Wirtschaft|#news #financial + sz_wissen|http://suche.sueddeutsche.de/rss/Wissen|#news + tagesschau|http://www.tagesschau.de/newsticker.rdf|#news + taz|http://taz.de/Themen-des-Tages/!p15;rss/|#news + telegraph_finance|http://www.telegraph.co.uk/finance/rss|#news #financial + telegraph_pol|http://www.telegraph.co.uk/news/politics/rss|#news + telegraph_uk|http://www.telegraph.co.uk/news/uknews/rss|#news + telegraph_world|http://www.telegraph.co.uk/news/worldnews/rss|#news + telepolis|http://www.heise.de/tp/rss/news-atom.xml|#news + the_insider|http://www.theinsider.org/rss/news/headlines-xml.asp|#news + tigsource|http://www.tigsource.com/feed/|#news + times|http://www.thetimes.co.uk/tto/news/rss|#news + tinc|http://tinc-vpn.org/news/index.rss|#news + topix_b|http://www.topix.com/rss/wire/de/berlin|#news + torr_bits|http://feeds.feedburner.com/TorrentfreakBits|#news + torrentfreak|http://feeds.feedburner.com/Torrentfreak|#news + torr_news|http://feed.torrentfreak.com/Torrentfreak/|#news + travel_warnings|http://feeds.travel.state.gov/ca/travelwarnings-alerts|#news + truther|http://truthernews.wordpress.com/feed/|#news + un_afr|http://www.un.org/apps/news/rss/rss_africa.asp|#news + un_am|http://www.un.org/apps/news/rss/rss_americas.asp|#news + un_eu|http://www.un.org/apps/news/rss/rss_europe.asp|#news + un_me|http://www.un.org/apps/news/rss/rss_mideast.asp|#news + un_pac|http://www.un.org/apps/news/rss/rss_asiapac.asp|#news + un_top|http://www.un.org/apps/news/rss/rss_top.asp|#news + us_math_society|http://www.ams.org/cgi-bin/content/news_items.cgi?rss=1|#news + vimperator|https://sites.google.com/a/vimperator.org/www/blog/posts.xml|#news + weechat|http://dev.weechat.org/feed/atom|#news + wired_sci|http://www.wired.com/category/science/feed/|#news + wp_world|http://feeds.washingtonpost.com/rss/rss_blogpost|#news + xkcd|https://xkcd.com/rss.xml|#news + zdnet|http://www.zdnet.com/news/rss.xml|#news + + chan_g|https://boards.4chan.org/g/index.rss|#news + chan_x|https://boards.4chan.org/x/index.rss|#news + chan_sci|https://boards.4chan.org/sci/index.rss|#news + reddit_consp|http://reddit.com/r/conspiracy/.rss|#news + reddit_sci|http://www.reddit.com/r/science/.rss|#news + reddit_tech|http://www.reddit.com/r/technology/.rss|#news + reddit_nix|http://www.reddit.com/r/nixos/.rss|#news + reddit_haskell|http://www.reddit.com/r/haskell/.rss|#news + hackernews|https://news.ycombinator.com/rss|#news + ''; +in { + imports = [ + ../3modules/newsbot-js.nix + ]; + environment.systemPackages = [ + pkgs.newsbot-js + ]; + lass.newsbot-js = { + enable = true; + ircServer = "localhost"; + feeds = newsfile; + urlShortenerHost = "go"; + urlShortenerPort = "80"; + }; +} diff --git a/lass/2configs/os-templates/CAC-CentOS-6.5-64bit.nix b/lass/2configs/os-templates/CAC-CentOS-6.5-64bit.nix new file mode 100644 index 000000000..b5ec722a0 --- /dev/null +++ b/lass/2configs/os-templates/CAC-CentOS-6.5-64bit.nix @@ -0,0 +1,47 @@ +_: + +{ + boot.loader.grub = { + device = "/dev/sda"; + splashImage = null; + }; + + boot.initrd.availableKernelModules = [ + "ata_piix" + "vmw_pvscsi" + ]; + + fileSystems."/" = { + device = "/dev/VolGroup/lv_root"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/sda1"; + fsType = "ext4"; + }; + + swapDevices = [ + { device = "/dev/VolGroup/lv_swap"; } + ]; + + users.extraGroups = { + # ● systemd-tmpfiles-setup.service - Create Volatile Files and Directories + # Loaded: loaded (/nix/store/2l33gg7nmncqkpysq9f5fxyhlw6ncm2j-systemd-217/example/systemd/system/systemd-tmpfiles-setup.service) + # Active: failed (Result: exit-code) since Mon 2015-03-16 10:29:18 UTC; 4s ago + # Docs: man:tmpfiles.d(5) + # man:systemd-tmpfiles(8) + # Process: 19272 ExecStart=/nix/store/2l33gg7nmncqkpysq9f5fxyhlw6ncm2j-systemd-217/bin/systemd-tmpfiles --create --remove --boot --exclude-prefix=/dev (code=exited, status=1/FAILURE) + # Main PID: 19272 (code=exited, status=1/FAILURE) + # + # Mar 16 10:29:17 cd systemd-tmpfiles[19272]: [/usr/lib/tmpfiles.d/legacy.conf:26] Unknown group 'lock'. + # Mar 16 10:29:18 cd systemd-tmpfiles[19272]: Two or more conflicting lines for /var/log/journal configured, ignoring. + # Mar 16 10:29:18 cd systemd-tmpfiles[19272]: Two or more conflicting lines for /var/log/journal/7b35116927d74ea58785e00b47ac0f0d configured, ignoring. + # Mar 16 10:29:18 cd systemd[1]: systemd-tmpfiles-setup.service: main process exited, code=exited, status=1/FAILURE + # Mar 16 10:29:18 cd systemd[1]: Failed to start Create Volatile Files and Directories. + # Mar 16 10:29:18 cd systemd[1]: Unit systemd-tmpfiles-setup.service entered failed state. + # Mar 16 10:29:18 cd systemd[1]: systemd-tmpfiles-setup.service failed. + # warning: error(s) occured while switching to the new configuration + lock.gid = 10001; + }; +} diff --git a/lass/2configs/sshkeys.nix b/lass/2configs/sshkeys.nix deleted file mode 100644 index f6081cf37..000000000 --- a/lass/2configs/sshkeys.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ config, ... }: - -{ - imports = [ - ../3modules/sshkeys.nix - ]; - - config.sshKeys.lass.pub = "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAp83zynhIueJJsWlSEykVSBrrgBFKq38+vT8bRfa+csqyjZBl2SQFuCPo+Qbh49mwchpZRshBa9jQEIGqmXxv/PYdfBFQuOFgyUq9ZcTZUXqeynicg/SyOYFW86iiqYralIAkuGPfQ4howLPVyjTZtWeEeeEttom6p6LMY5Aumjz2em0FG0n9rRFY2fBzrdYAgk9C0N6ojCs/Gzknk9SGntA96MDqHJ1HXWFMfmwOLCnxtE5TY30MqSmkrJb7Fsejwjoqoe9Y/mCaR0LpG2cStC1+37GbHJNH0caCMaQCX8qdfgMVbWTVeFWtV6aWOaRgwLrPDYn4cHWQJqTfhtPrNQ== lass@mors"; - - config.sshKeys.uriel.pub = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDExWuRcltGM2FqXO695nm6/QY3wU3r1bDTyCpMrLfUSym7TxcXDSmZSWcueexPXV6GENuUfjJPZswOdWqIo5u2AXw9t0aGvwEDmI6uJ7K5nzQOsXIneGMdYuoOaAzWI8pxZ4N+lIP1HsOYttIPDp8RwU6kyG+Ud8mnVHWSTO13C7xC9vePnDP6b+44nHS691Zj3X/Cq35Ls0ISC3EM17jreucdP62L3TKk2R4NCm3Sjqj+OYEv0LAqIpgqSw5FypTYQgNByxRcIcNDlri63Q1yVftUP1338UiUfxtraUu6cqa2CdsHQmtX5mTNWEluVWO3uUKTz9zla3rShC+d3qvr lass@uriel"; -} diff --git a/lass/3modules/default.nix b/lass/3modules/default.nix index 9de987bf3..b081dc3cc 100644 --- a/lass/3modules/default.nix +++ b/lass/3modules/default.nix @@ -1,7 +1,13 @@ _: - { imports = [ ./xresources.nix + ./bitlbee.nix + ./folderPerms.nix + ./go.nix + ./newsbot-js.nix + ./per-user.nix + ./urxvtd.nix + ./xresources.nix ]; } diff --git a/lass/3modules/newsbot-js.nix b/lass/3modules/newsbot-js.nix new file mode 100644 index 000000000..6d87d256d --- /dev/null +++ b/lass/3modules/newsbot-js.nix @@ -0,0 +1,87 @@ +{ config, lib, pkgs, ... }: + +with builtins; +with lib; + +let + cfg = config.lass.newsbot-js; + + out = { + options.lass.newsbot-js = api; + config = mkIf cfg.enable imp; + }; + + api = { + enable = mkEnableOption "Enable krebs newsbot"; + ircServer = mkOption { + type = types.str; + default = "echelon.retiolum"; + description = "to which server the bot should connect"; + }; + channel = mkOption { + type = types.str; + default = "#news"; + description = "post the news in this channel"; + }; + masterNick = mkOption { + type = types.str; + default = "knews"; + description = "nickname of the master bot"; + }; + feeds = mkOption { + type = types.path; + description = '' + file with feeds to post + format: + $nick|$feedURI + ''; + }; + urlShortenerHost = mkOption { + type = types.str; + default = "echelon"; + description = "what server to use for url shortening, host"; + }; + urlShortenerPort = mkOption { + type = types.str; + default = "80"; + description = "what server to use for url shortening, port"; + }; + }; + + imp = { + users.extraUsers.newsbot-js = { + name = "newsbot-js"; + uid = 1616759810; #genid newsbot-js + description = "newsbot-js user"; + home = "/var/empty"; + }; + + systemd.services.newsbot-js = { + description = "krebs newsbot"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + + path = with pkgs; [ + newsbot-js + ]; + + environment = { + irc_server = cfg.ircServer; + master_nick = cfg.masterNick; + news_channel = cfg.channel; + feeds_file = cfg.feeds; + url_shortener_host = cfg.urlShortenerHost; + url_shortener_port = cfg.urlShortenerPort; + }; + + restartIfChanged = true; + + serviceConfig = { + User = "newsbot-js"; + Restart = "always"; + ExecStart = "${pkgs.newsbot-js}/bin/newsbot"; + }; + }; + }; + +in out diff --git a/lass/3modules/sshkeys.nix b/lass/3modules/sshkeys.nix deleted file mode 100644 index 5f1c60668..000000000 --- a/lass/3modules/sshkeys.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ lib, ... }: - -with lib; - -{ - options = { - sshKeys = mkOption { - type = types.attrsOf (types.submodule ( - { config, ... }: - { - options = { - pub = mkOption { - type = types.str; - description = "Public part of the ssh key."; - }; - - priv = mkOption { - type = types.str; - description = "Private part of the ssh key."; - }; - }; - })); - description = "collection of ssh-keys"; - }; - }; -} diff --git a/lass/4lib/default.nix b/lass/4lib/default.nix index 2e493177d..6a8a28972 100644 --- a/lass/4lib/default.nix +++ b/lass/4lib/default.nix @@ -1,12 +1,8 @@ { lib, pkgs, ... }: -let - krebs = import ../../krebs/4lib { inherit lib; }; -in +with lib; -with krebs; - -krebs // rec { +{ simpleScript = name: content: pkgs.stdenv.mkDerivation { diff --git a/lass/5pkgs/newsbot-js/default.nix b/lass/5pkgs/newsbot-js/default.nix index 7758b04db..ace2a976f 100644 --- a/lass/5pkgs/newsbot-js/default.nix +++ b/lass/5pkgs/newsbot-js/default.nix @@ -26,8 +26,8 @@ in nodePackages.buildNodePackage { src = fetchgit { url = "http://cgit.echelon/newsbot-js/"; - rev = "cd32ef7b39819f53c7125b22c594202724cc8754"; - sha256 = "425e800f7638a5679ed8a049614a7533f3c8dd09659061885240dc93952ff0ae"; + rev = "b22729670236bfa6491207d57c5d7565137625ca"; + sha256 = "8ff00de56d85543399776c82d41d92ccc68000e5dce0f008d926748e188f3c69"; }; phases = [ diff --git a/makefu/1systems/pornocauster.nix b/makefu/1systems/pornocauster.nix index 8f7f5ea7c..97cf86a4e 100644 --- a/makefu/1systems/pornocauster.nix +++ b/makefu/1systems/pornocauster.nix @@ -21,6 +21,7 @@ # applications ../2configs/exim-retiolum.nix + ../2configs/mail-client.nix #../2configs/virtualization.nix ../2configs/virtualization-virtualbox.nix ../2configs/wwan.nix diff --git a/makefu/1systems/wry.nix b/makefu/1systems/wry.nix index 819a208ac..a7ed93c43 100644 --- a/makefu/1systems/wry.nix +++ b/makefu/1systems/wry.nix @@ -5,38 +5,50 @@ let ip = (lib.head config.krebs.build.host.nets.internet.addrs4); in { imports = [ - ../../tv/2configs/CAC-CentOS-7-64bit.nix - ../2configs/base.nix - ../2configs/base-sources.nix - ../2configs/tinc-basic-retiolum.nix + # TODO: copy this config or move to krebs + ../../tv/2configs/CAC-CentOS-7-64bit.nix + ../2configs/base.nix + ../2configs/base-sources.nix + ../2configs/tinc-basic-retiolum.nix + + ../2configs/iodined.nix + + # Reaktor + ../2configs/Reaktor/simpleExtend.nix ]; + krebs.Reaktor.enable = true; + networking.firewall.allowPing = true; networking.interfaces.enp2s1.ip4 = [ - { - address = ip; - prefixLength = 24; - } - ]; - networking.defaultGateway = "104.233.87.1"; - networking.nameservers = [ - "8.8.8.8" - ]; + { + address = ip; + prefixLength = 24; + } + ]; + networking.defaultGateway = "104.233.87.1"; + networking.nameservers = [ + "8.8.8.8" + ]; # based on ../../tv/2configs/CAC-Developer-2.nix sound.enable = false; # prepare graphs nixpkgs.config.packageOverrides = pkgs: { tinc = pkgs.tinc_pre; }; + krebs.nginx.enable = true; + krebs.retiolum-bootstrap.enable = true; makefu.tinc_graphs.enable = true; + makefu.tinc_graphs.krebsNginx = { enable = true; # TODO: remove hard-coded hostname hostnames_complete = [ "graphs.wry" ]; hostnames_anonymous = [ "graphs.krebsco.de" ]; }; - networking.firewall.allowedTCPPorts = [80]; + + networking.firewall.allowedTCPPorts = [ 53 80 443 ]; krebs.build = { user = config.krebs.users.makefu; diff --git a/makefu/2configs/base-sources.nix b/makefu/2configs/base-sources.nix index 826cd6fef..7e6bebec3 100644 --- a/makefu/2configs/base-sources.nix +++ b/makefu/2configs/base-sources.nix @@ -3,9 +3,9 @@ { krebs.build.source = { git.nixpkgs = { - url = https://github.com/NixOS/nixpkgs; - #url = https://github.com/makefu/nixpkgs; - rev = "dc18f39bfb2f9d1ba62c7e8ad98544bb15cb26b2"; # nixos-15.09 + #url = https://github.com/NixOS/nixpkgs; + url = https://github.com/makefu/nixpkgs; + rev = "78340b042463fd35caa587b0db2e400e5666dbe1"; # nixos-15.09 + cherry-picked iodine }; dir.secrets = { diff --git a/makefu/2configs/git/cgit-retiolum.nix b/makefu/2configs/git/cgit-retiolum.nix index 1277a014e..189dd66c8 100644 --- a/makefu/2configs/git/cgit-retiolum.nix +++ b/makefu/2configs/git/cgit-retiolum.nix @@ -10,6 +10,9 @@ let stockholm = { desc = "Make all the systems into 1systems!"; }; + tinc_graphs = { + desc = "Tinc Advanced Graph Generation"; + }; }; priv-repos = mapAttrs make-priv-repo { diff --git a/makefu/2configs/iodined.nix b/makefu/2configs/iodined.nix new file mode 100644 index 000000000..db8a1bfed --- /dev/null +++ b/makefu/2configs/iodined.nix @@ -0,0 +1,16 @@ +{ services,builtins,environment,pkgs, ... }: + +let + # TODO: make this a parameter + domain = "io.krebsco.de"; + pw = import <secrets/iodinepw.nix>; +in { + + services.iodined = { + enable = true; + domain = domain; + ip = "172.16.10.1/24"; + extraConfig = "-P ${pw}"; + }; + +} diff --git a/makefu/2configs/mail-client.nix b/makefu/2configs/mail-client.nix new file mode 100644 index 000000000..a6ae33d2f --- /dev/null +++ b/makefu/2configs/mail-client.nix @@ -0,0 +1,12 @@ +{ config, lib, pkgs, ... }: + +with lib; +{ + environment.systemPackages = with pkgs; [ + msmtp + mutt-kz + notmuch + offlineimap + ]; + +} diff --git a/makefu/3modules/bepasty-server.nix b/makefu/3modules/bepasty-server.nix new file mode 100644 index 000000000..d970652a4 --- /dev/null +++ b/makefu/3modules/bepasty-server.nix @@ -0,0 +1,160 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + gunicorn = pkgs.pythonPackages.gunicorn; + bepasty = pkgs.pythonPackages.bepasty-server; + gevent = pkgs.pythonPackages.gevent; + python = pkgs.pythonPackages.python; + cfg = config.makefu.bepasty-server; + + out = { + options.makefu.bepasty-server = api; + config = mkIf cfg.enable (mkMerge [(mkIf cfg.serveNginx nginx-imp) imp ]) ; + }; + + api = { + enable = mkEnableOption "Bepasty Servers"; + serveNginx = mkEnableOption "Serve Bepasty Servers with Nginx"; + + servers = mkOption { + type = with types; attrsOf optionSet; + options = singleton { + nginxCfg = mkOption { + # TODO use the correct type + type = with types; attrsOf unspecified; + description = '' + additional nginx configuration. see krebs.nginx for all options + '' ; + }; + debug = mkOption { + type = types.bool; + description = '' + run server in debug mode + ''; + default = false; + }; + + # TODO: assert secretKey + secretKey = mkOption { + type = types.str; + description = '' + server secret for safe session cookies, must be set. + ''; + }; + + # we create a wsgi socket in $workDir/gunicorn-${name}.wsgi + workDir = mkOption { + type = types.str; + description = '' + Path to the working directory (used for sockets and pidfile). + Defaults to the users home directory. Must be accessible to nginx, + permissions will be set to 755 + ''; + default = config.users.extraUsers.bepasty.home; + }; + + dataDir = mkOption { + type = types.str; + description = '' + Defaults to the new users home dir which defaults to + /var/lib/bepasty-server/data + ''; + default = "${config.users.extraUsers.bepasty.home}/data"; + }; + + extraConfig = mkOption { + type = types.str; + default = ""; + example = '' + PERMISSIONS = { + 'myadminsecret': 'admin,list,create,read,delete', + } + MAX_ALLOWED_FILE_SIZE = 5 * 1000 * 1000 + ''; + }; + + defaultPermissions = mkOption { + type = types.str; + default = "list"; + }; + + }; + default = {}; + }; + + }; + + imp = { + # Configures systemd services for each configured server + # environment.systemPackages = [ bepasty gunicorn gevent ]; + systemd.services = mapAttrs' (name: server: + nameValuePair ("bepasty-server-${name}") + ({ + description = "Bepasty Server ${name}"; + wantedBy = [ "multi-user.target" ]; + after = [ "network.target" ]; + restartIfChanged = true; + environment = { + BEPASTY_CONFIG = "${server.workDir}/bepasty-${name}.conf"; + PYTHONPATH= "${bepasty}/lib/${python.libPrefix}/site-packages:${gevent}/lib/${python.libPrefix}/site-packages"; + }; + serviceConfig = { + Type = "simple"; + PrivateTmp = true; + ExecStartPre = pkgs.writeScript "bepasty-server.${name}-init" '' + #!/bin/sh + chmod 755 ${server.workDir} + mkdir -p ${server.dataDir} + cat > ${server.workDir}/bepasty-${name}.conf <<EOF + SITENAME="${name}" + STORAGE_FILESYSTEM_DIRECTORY="${server.dataDir}" + SECRET_KEY="${escapeShellArg server.secretKey}" + DEFAULT_PERMISSIONS="${server.defaultPermissions}" + ${server.extraConfig} + EOF + ''; + Directory = "${bepasty}/lib/${python.libPrefix}/site-packages"; + # we use Gunicorn to start a wsgi server + ExecStart = ''${gunicorn}/bin/gunicorn bepasty.wsgi --name ${name} \ + --workers 3 --log-level=info \ + --bind=unix:${server.workDir}/gunicorn-${name}.sock \ + --pid ${server.workDir}/gunicorn-${name}.pid \ + -k gevent + ''; + }; + }) + ) cfg.servers; + + users.extraUsers.bepasty = { + uid = 2796546855; #genid bepasty + home = "/var/lib/bepasty-server"; + createHome = true; + }; + }; + nginx-imp = { + assertions = [ { assertion = config.krebs.nginx.enable; + message = "krebs.nginx.enable must be true"; }]; + + krebs.nginx.servers = mapAttrs' (name: server: + nameValuePair("bepasty-server-${name}") + (server.nginxCfg // { + extraConfig = '' + client_max_body_size 32M; + ''; + locations = [ + (nameValuePair ("/") + ('' + proxy_set_header Host $http_host; + proxy_pass http://unix:${server.workDir}/gunicorn-${name}.sock; + '')) + (nameValuePair ("/static/") + ('' + alias ${bepasty}/lib/${python.libPrefix}/site-packages/bepasty/static/; + '')) + ]; + }) + ) cfg.servers ; + }; +in +out diff --git a/makefu/3modules/tinc_graphs.nix b/makefu/3modules/tinc_graphs.nix index 62d607527..ff2f55873 100644 --- a/makefu/3modules/tinc_graphs.nix +++ b/makefu/3modules/tinc_graphs.nix @@ -83,7 +83,9 @@ let ExecStartPre = pkgs.writeScript "tinc_graphs-init" '' #!/bin/sh - mkdir -p "${external_dir}" "${internal_dir}" + if ! test -e "${cfg.workingDir}/internal/index.html"; then + cp -fr "$(${pkgs.tinc_graphs}/bin/tincstats-static-dir)/internal/" "${internal_dir}" + fi ''; ExecStart = "${pkgs.tinc_graphs}/bin/all-the-graphs"; @@ -94,10 +96,10 @@ let # this is needed because homedir is created with 700 chmod 755 "${cfg.workingDir}" ''; + PrivateTmp = "yes"; User = "root"; # tinc cannot be queried as user, # seems to be a tinc-pre issue - privateTmp = true; }; }; diff --git a/makefu/5pkgs/tinc_graphs/default.nix b/makefu/5pkgs/tinc_graphs/default.nix index 5bc974157..62a787d30 100644 --- a/makefu/5pkgs/tinc_graphs/default.nix +++ b/makefu/5pkgs/tinc_graphs/default.nix @@ -2,20 +2,21 @@ python3Packages.buildPythonPackage rec { name = "tinc_graphs-${version}"; - version = "0.2.12"; + version = "0.3.6"; propagatedBuildInputs = with pkgs;[ python3Packages.pygeoip ## ${geolite-legacy}/share/GeoIP/GeoIPCity.dat ]; src = fetchurl { url = "https://pypi.python.org/packages/source/t/tinc_graphs/tinc_graphs-${version}.tar.gz"; - sha256 = "03jxvxahpcbpnz4668x32b629dwaaz5jcjkyaijm0zzpgcn4cbgp"; + sha256 = "0ghdx9aaipmppvc2b6cgks4nxw6zsb0fhjrmnisbx7rz0vjvzc74"; }; preFixup = with pkgs;'' wrapProgram $out/bin/build-graphs --prefix PATH : "$out/bin" wrapProgram $out/bin/all-the-graphs --prefix PATH : "${imagemagick}/bin:${graphviz}/bin:$out/bin" wrapProgram $out/bin/tinc-stats2json --prefix PATH : "${tinc}/bin" ''; + meta = { homepage = http://krebsco.de/; description = "Create Graphs from Tinc Stats"; |