Merge remote-tracking branch 'prism/master'

This commit is contained in:
tv 2016-10-13 20:33:45 +02:00
commit 65165f422d
37 changed files with 407 additions and 256 deletions

View file

@ -17,29 +17,57 @@ let
# see `repo-sync --help` # see `repo-sync --help`
# `ref` provides sane defaults and can be omitted # `ref` provides sane defaults and can be omitted
# you can have multiple repo-sync groups and therefore multiple @latest
# configuration entries.
# attrset will be converted to json and be used as config # attrset will be converted to json and be used as config
{ repo = { # each attrset defines a group of repos for syncing
{ nxpkgs = {
makefu = { makefu = {
origin = { origin = {
url = http://github.com/makefu/repo ; url = http://github.com/makefu/nixpkgs;
ref = "heads/dev" ; ref = "heads/dev" ;
}; };
mirror = { mirror = {
url = "git@internal:mirror" ; url = "git@internal:nixpkgs-mirror" ;
ref = "heads/github-mirror-dev" ; ref = "heads/github-mirror-dev" ;
}; };
}; };
lass = { lass = {
origin = { origin = {
url = http://github.com/lass/repo ; url = http://github.com/lass/nixpkgs;
}; };
mirror = { mirror = {
url = "git@internal:mirror" ; url = "git@internal:nixpkgs-mirror" ;
}; };
}; };
"@latest" = { "@latest" = {
mirror = { mirror = {
url = "git@internal:mirror"; url = "git@internal:nixpkgs-mirror";
ref = "heads/master";
};
};
};
stockholm = {
lass = {
origin = {
url = http://cgit.prism.r/stockholm;
};
mirror = {
url = "git@internal:stockholm-mirror" ;
};
};
makefu = {
origin = {
url = http://gum.krebsco.de/stockholm;
};
mirror = {
url = "git@internal:stockholm-mirror" ;
};
};
"@latest" = {
mirror = {
url = "git@internal:stockholm-mirror";
ref = "heads/master"; ref = "heads/master";
}; };
}; };

View file

@ -336,7 +336,6 @@ let
pm.min_spare_servers = 1 pm.min_spare_servers = 1
pm.max_spare_servers = 3 pm.max_spare_servers = 3
chdir = / chdir = /
# errors to journal
php_admin_value[error_log] = 'stderr' php_admin_value[error_log] = 'stderr'
php_admin_flag[log_errors] = on php_admin_flag[log_errors] = on
catch_workers_output = yes catch_workers_output = yes

View file

@ -1,13 +1,18 @@
{stdenv,pam,fetchurl,...}: { stdenv, pam,
fetchurl, lib,
wordset-file ? null, # set your own wordset-file
... }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "passwdqc-utils-${version}"; name = "passwdqc-utils-${version}";
version = "1.3.0"; version = "1.3.0";
buildInputs = [ pam ]; buildInputs = [ pam ];
src = fetchurl { src = fetchurl {
url = "http://www.openwall.com/passwdqc/passwdqc-${version}.tar.gz"; url = "http://www.openwall.com/passwdqc/passwdqc-${version}.tar.gz";
sha256 = "0l3zbrp4pvah0dz33m48aqlz9nx663cc1fqhnlwr0p853b10la93"; sha256 = "0l3zbrp4pvah0dz33m48aqlz9nx663cc1fqhnlwr0p853b10la93";
}; };
buildTargets = "utils"; buildTargets = "utils";
installFlags= [ "BINDIR=$(out)/bin" installFlags= [ "BINDIR=$(out)/bin"
"CONFDIR=$(out)/etc" "CONFDIR=$(out)/etc"
@ -15,7 +20,12 @@ stdenv.mkDerivation rec {
"DEVEL_LIBDIR=$(out)/lib" "DEVEL_LIBDIR=$(out)/lib"
"SECUREDIR=$(out)/lib/security" "SECUREDIR=$(out)/lib/security"
"INCLUDEDIR=$(out)/include" "INCLUDEDIR=$(out)/include"
"MANDIR=$(out)/man"]; "MANDIR=$(out)/man" ];
patchPhase = lib.optionalString (wordset-file != null) ''
cp -f ${wordset-file} wordset_4k.c
'';
installTargets = "install_lib install_utils"; installTargets = "install_lib install_utils";
meta = { meta = {

View file

@ -102,6 +102,11 @@ with config.krebs.lib;
device = "/dev/pool/bku"; device = "/dev/pool/bku";
fsType = "ext4"; fsType = "ext4";
}; };
"/tmp" = {
device = "tmpfs";
fsType = "tmpfs";
options = ["nosuid" "nodev" "noatime"];
};
}; };
#services.udev.extraRules = '' #services.udev.extraRules = ''

View file

@ -23,7 +23,7 @@ with config.krebs.lib;
../2configs/teamviewer.nix ../2configs/teamviewer.nix
../2configs/libvirt.nix ../2configs/libvirt.nix
../2configs/fetchWallpaper.nix ../2configs/fetchWallpaper.nix
../2configs/c-base.nix #../2configs/c-base.nix
../2configs/mail.nix ../2configs/mail.nix
../2configs/krebs-pass.nix ../2configs/krebs-pass.nix
../2configs/repo-sync.nix ../2configs/repo-sync.nix
@ -54,8 +54,8 @@ with config.krebs.lib;
enable = true; enable = true;
package = pkgs.postgresql; package = pkgs.postgresql;
}; };
virtualisation.docker.enable = true; #virtualisation.docker.enable = true;
users.users.mainUser.extraGroups = [ "docker" ]; #users.users.mainUser.extraGroups = [ "docker" ];
} }
{ {
lass.umts = { lass.umts = {
@ -140,6 +140,11 @@ with config.krebs.lib;
device = "/dev/big/conf"; device = "/dev/big/conf";
fsType = "ext4"; fsType = "ext4";
}; };
"/tmp" = {
device = "tmpfs";
fsType = "tmpfs";
options = ["nosuid" "nodev" "noatime"];
};
}; };
services.udev.extraRules = '' services.udev.extraRules = ''
@ -192,8 +197,12 @@ with config.krebs.lib;
urban urban
mk_sql_pair mk_sql_pair
remmina remmina
thunderbird
logf logf
iodine
macchanger
]; ];
#TODO: fix this shit #TODO: fix this shit

View file

@ -120,6 +120,12 @@ in {
device = "/dev/pool/bku"; device = "/dev/pool/bku";
}; };
fileSystems."/tmp" = {
device = "tmpfs";
fsType = "tmpfs";
options = ["nosuid" "nodev" "noatime"];
};
} }
{ {
sound.enable = false; sound.enable = false;

View file

@ -50,6 +50,11 @@ with builtins;
device = "/dev/pool/home-lass"; device = "/dev/pool/home-lass";
fsType = "ext4"; fsType = "ext4";
}; };
"/tmp" = {
device = "tmpfs";
fsType = "tmpfs";
options = ["nosuid" "nodev" "noatime"];
};
}; };
services.udev.extraRules = '' services.udev.extraRules = ''

View file

@ -23,7 +23,6 @@ with config.krebs.lib;
useDefaultShell = true; useDefaultShell = true;
}; };
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
networking.wireless.enable = mkForce false;
hardware.pulseaudio = { hardware.pulseaudio = {
enable = true; enable = true;
systemWide = true; systemWide = true;
@ -41,8 +40,6 @@ with config.krebs.lib;
krebs.build.host = config.krebs.hosts.uriel; krebs.build.host = config.krebs.hosts.uriel;
networking.wireless.enable = true;
hardware.enableAllFirmware = true; hardware.enableAllFirmware = true;
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
@ -77,6 +74,11 @@ with config.krebs.lib;
"/boot" = { "/boot" = {
device = "/dev/sda1"; device = "/dev/sda1";
}; };
"/tmp" = {
device = "tmpfs";
fsType = "tmpfs";
options = ["nosuid" "nodev" "noatime"];
};
}; };
services.udev.extraRules = '' services.udev.extraRules = ''

View file

@ -1,11 +1,28 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with config.krebs.lib;
let let
inherit (config.krebs.lib) genid;
mainUser = config.users.extraUsers.mainUser; mainUser = config.users.extraUsers.mainUser;
createChromiumUser = name: extraGroups: packages:
{ browser-select = pkgs.writeScriptBin "browser-select" ''
BROWSER=$(echo -e "${concatStringsSep "\\n" (attrNames config.lass.browser.paths)}" | ${pkgs.dmenu}/bin/dmenu)
case $BROWSER in
${concatMapStringsSep "\n" (n: ''
${n})
export BIN=${config.lass.browser.paths.${n}}/bin/${n}
;;
'') (attrNames config.lass.browser.paths)}
esac
$BIN "$@"
'';
createChromiumUser = name: extraGroups:
let
bin = pkgs.writeScriptBin name ''
/var/setuid-wrappers/sudo -u ${name} -i ${pkgs.chromium}/bin/chromium $@
'';
in {
users.extraUsers.${name} = { users.extraUsers.${name} = {
inherit name; inherit name;
inherit extraGroups; inherit extraGroups;
@ -14,19 +31,21 @@ let
useDefaultShell = true; useDefaultShell = true;
createHome = true; createHome = true;
}; };
krebs.per-user.${name}.packages = packages; lass.browser.paths.${name} = bin;
security.sudo.extraConfig = '' security.sudo.extraConfig = ''
${mainUser.name} ALL=(${name}) NOPASSWD: ALL ${mainUser.name} ALL=(${name}) NOPASSWD: ALL
''; '';
environment.systemPackages = [ environment.systemPackages = [
(pkgs.writeScriptBin name '' bin
/var/setuid-wrappers/sudo -u ${name} -i chromium $@
'')
]; ];
}; };
createFirefoxUser = name: extraGroups: packages: createFirefoxUser = name: extraGroups:
{ let
bin = pkgs.writeScriptBin name ''
/var/setuid-wrappers/sudo -u ${name} -i ${pkgs.firefox}/bin/firefox $@
'';
in {
users.extraUsers.${name} = { users.extraUsers.${name} = {
inherit name; inherit name;
inherit extraGroups; inherit extraGroups;
@ -35,14 +54,12 @@ let
useDefaultShell = true; useDefaultShell = true;
createHome = true; createHome = true;
}; };
krebs.per-user.${name}.packages = packages; lass.browser.paths.${name} = bin;
security.sudo.extraConfig = '' security.sudo.extraConfig = ''
${mainUser.name} ALL=(${name}) NOPASSWD: ALL ${mainUser.name} ALL=(${name}) NOPASSWD: ALL
''; '';
environment.systemPackages = [ environment.systemPackages = [
(pkgs.writeScriptBin name '' bin
/var/setuid-wrappers/sudo -u ${name} -i firefox $@
'')
]; ];
}; };
@ -50,19 +67,26 @@ let
in { in {
lass.browser.select = browser-select;
environment.systemPackages = [ environment.systemPackages = [
(pkgs.writeScriptBin "browser-select" '' browser-select
BROWSER=$(echo -e "ff\ncr\nwk\nfb\ngm\nflash" | dmenu)
$BROWSER $@
'')
]; ];
imports = [ imports = [
( createFirefoxUser "ff" [ "audio" ] [ pkgs.firefox ] ) {
( createChromiumUser "cr" [ "video" "audio" ] [ pkgs.chromium ] ) options.lass.browser.select = mkOption {
( createChromiumUser "wk" [ "video" "audio" ] [ pkgs.chromium ] ) type = types.path;
( createChromiumUser "fb" [ "video" "audio" ] [ pkgs.chromium ] ) };
( createChromiumUser "gm" [ "video" "audio" ] [ pkgs.chromium ] ) options.lass.browser.paths = mkOption {
( createChromiumUser "com" [ "video" "audio" ] [ pkgs.chromium ] ) type = with types; attrsOf path;
};
}
( createFirefoxUser "ff" [ "audio" ] )
( createChromiumUser "cr" [ "video" "audio" ] )
( createChromiumUser "wk" [ "video" "audio" ] )
( createChromiumUser "fb" [ "video" "audio" ] )
( createChromiumUser "gm" [ "video" "audio" ] )
( createChromiumUser "com" [ "video" "audio" ] )
]; ];
} }

View file

@ -67,7 +67,7 @@ with config.krebs.lib;
}; };
}; };
nix.useChroot = true; nix.useSandbox = true;
users.mutableUsers = false; users.mutableUsers = false;
@ -97,6 +97,7 @@ with config.krebs.lib;
jq jq
parallel parallel
proot proot
populate
#style #style
most most
@ -141,15 +142,6 @@ with config.krebs.lib;
shopt -s histappend histreedit histverify shopt -s histappend histreedit histverify
shopt -s no_empty_cmd_completion shopt -s no_empty_cmd_completion
complete -d cd complete -d cd
#fancy colors
if [ -e ~/LS_COLORS ]; then
eval $(dircolors ~/LS_COLORS)
fi
if [ -e /etc/nixos/dotfiles/link ]; then
/etc/nixos/dotfiles/link
fi
''; '';
promptInit = '' promptInit = ''
if test $UID = 0; then if test $UID = 0; then

View file

@ -6,15 +6,15 @@ let
pw = import <secrets/iodinepw.nix>; pw = import <secrets/iodinepw.nix>;
in { in {
services.iodined = { services.iodine.server = {
enable = true; enable = true;
domain = domain; domain = domain;
ip = "172.16.10.1/24"; ip = "172.16.10.1/24";
extraConfig = "-P ${pw} -l ${config.krebs.build.host.nets.internet.ip4.addr}"; extraConfig = "-c -P ${pw} -l ${config.krebs.build.host.nets.internet.ip4.addr}";
}; };
krebs.iptables.tables.filter.INPUT.rules = [ krebs.iptables.tables.filter.INPUT.rules = [
{ predicate = "-p udp --dport 54"; target = "ACCEPT";} { predicate = "-p udp --dport 53"; target = "ACCEPT";}
]; ];
} }

View file

@ -2,7 +2,7 @@
{ {
krebs.build.source.nixpkgs.git = { krebs.build.source.nixpkgs.git = {
url = https://github.com/lassulus/nixpkgs; url = https://github.com/nixos/nixpkgs;
ref = "3fb009d94e70f5d1151f4ec239a90d2de1979a74"; ref = "354fd3728952c229fee4f2924737c601d7ab4725";
}; };
} }

View file

@ -143,24 +143,12 @@ in {
}; };
}; };
services.phpfpm.phpOptions = ''
#services.phpfpm.phpOptions = '' sendmail_path = ${sendmail} -t
# extension=${pkgs.phpPackages.apcu}/lib/php/extensions/apcu.so
# sendmail_path = ${sendmail} -t
#'';
services.phpfpm.phpIni = pkgs.runCommand "php.ini" {
options = ''
extension=${pkgs.phpPackages.apcu}/lib/php/extensions/apcu.so
sendmail_path = "${sendmail} -t -i"
always_populate_raw_post_data = -1
upload_max_filesize = 100M upload_max_filesize = 100M
post_max_size = 100M post_max_size = 100M
file_uploads = on file_uploads = on
''; '';
} ''
cat ${pkgs.php}/etc/php-recommended.ini > $out
echo "$options" >> $out
'';
# MAIL STUFF # MAIL STUFF
# TODO: make into its own module # TODO: make into its own module

View file

@ -167,7 +167,6 @@ rec {
pm.max_spare_servers = 3 pm.max_spare_servers = 3
listen.owner = nginx listen.owner = nginx
listen.group = nginx listen.group = nginx
# errors to journal
php_admin_value[error_log] = 'stderr' php_admin_value[error_log] = 'stderr'
php_admin_flag[log_errors] = on php_admin_flag[log_errors] = on
catch_workers_output = yes catch_workers_output = yes
@ -220,7 +219,6 @@ rec {
pm.max_spare_servers = 3 pm.max_spare_servers = 3
listen.owner = nginx listen.owner = nginx
listen.group = nginx listen.group = nginx
# errors to journal
php_admin_value[error_log] = 'stderr' php_admin_value[error_log] = 'stderr'
php_admin_flag[log_errors] = on php_admin_flag[log_errors] = on
catch_workers_output = yes catch_workers_output = yes

View file

@ -11,7 +11,7 @@ pkgs.writeText "Xresources" ''
! ref https://github.com/muennich/urxvt-perls ! ref https://github.com/muennich/urxvt-perls
URxvt.perl-lib: ${pkgs.urxvt_perls}/lib/urxvt/perl URxvt.perl-lib: ${pkgs.urxvt_perls}/lib/urxvt/perl
URxvt.perl-ext-common: default,clipboard,url-select,keyboard-select URxvt.perl-ext-common: default,clipboard,url-select,keyboard-select
URxvt.url-select.launcher: browser-select URxvt.url-select.launcher: ${config.lass.browser.select}/bin/browser-select
URxvt.url-select.underline: true URxvt.url-select.underline: true
URxvt.keysym.M-u: perl:url-select:select_next URxvt.keysym.M-u: perl:url-select:select_next
URxvt.keysym.M-Escape: perl:keyboard-select:activate URxvt.keysym.M-Escape: perl:keyboard-select:activate

View file

@ -1,13 +1,23 @@
{ config, lib, pkgs, ... }@args: { config, pkgs, ... }@args:
with config.krebs.lib; with config.krebs.lib;
let let
# TODO krebs.build.user user = config.krebs.build.user;
user = config.users.users.mainUser; in {
environment.systemPackages = [
pkgs.gitAndTools.qgit
pkgs.mpv
pkgs.sxiv
pkgs.xsel
pkgs.zathura
];
fonts.fonts = [
pkgs.xlibs.fontschumachermisc
];
out = {
services.xserver = { services.xserver = {
enable = true;
display = 11; display = 11;
tty = 11; tty = 11;
@ -17,45 +27,41 @@ let
accelFactor = "0.035"; accelFactor = "0.035";
}; };
#keyboard stuff
layout = "us"; layout = "us";
xkbVariant = "altgr-intl"; xkbVariant = "altgr-intl";
xkbOptions = "caps:backspace"; xkbOptions = "caps:backspace";
}; };
fonts.fonts = [
pkgs.xlibs.fontschumachermisc
];
systemd.services.urxvtd = {
wantedBy = [ "multi-user.target" ];
reloadIfChanged = true;
serviceConfig = {
ExecReload = need-reload "urxvtd.service";
ExecStart = "${pkgs.rxvt_unicode}/bin/urxvtd";
Restart = "always";
RestartSec = "2s";
StartLimitBurst = 0;
User = user.name;
};
};
krebs.per-user.lass.packages = [
pkgs.rxvt_unicode_with-plugins
];
systemd.services.display-manager.enable = false; systemd.services.display-manager.enable = false;
services.xserver.enable = true;
systemd.services.xmonad = { systemd.services.xmonad = {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
requires = [ "xserver.service" ]; requires = [ "xserver.service" ];
environment = xmonad-environment; environment = {
restartIfChanged = true; DISPLAY = ":${toString config.services.xserver.display}";
XMONAD_STARTUP_HOOK = pkgs.writeDash "xmonad-startup-hook" ''
${pkgs.xorg.xhost}/bin/xhost +LOCAL: &
${pkgs.xorg.xrdb}/bin/xrdb -merge ${import ./Xresources.nix args} &
${pkgs.xorg.xsetroot}/bin/xsetroot -solid '#1c1c1c' &
wait
'';
XMONAD_STATE = "/tmp/xmonad.state";
# XXX JSON is close enough :)
XMONAD_WORKSPACES0_FILE = pkgs.writeText "xmonad.workspaces0" (toJSON [
"dashboard" # we start here
]);
};
serviceConfig = { serviceConfig = {
ExecStart = "${xmonad-start}/bin/xmonad"; SyslogIdentifier = "xmonad";
ExecStop = "${xmonad-stop}/bin/xmonad-stop"; ExecStart = "${pkgs.xmonad-lass}/bin/xmonad";
ExecStop = pkgs.writeScript "xmonad-stop" ''
#! /bin/sh
${pkgs.xmonad-lass}/bin/xmonad --shutdown
${pkgs.coreutils}/bin/sleep 2s
'';
User = user.name; User = user.name;
WorkingDirectory = user.home; WorkingDirectory = user.home;
}; };
@ -68,76 +74,39 @@ let
"acpid.service" "acpid.service"
]; ];
reloadIfChanged = true; reloadIfChanged = true;
environment = xserver-environment; environment = {
serviceConfig = {
ExecReload = need-reload "xserver.service";
ExecStart = "${xserver}/bin/xserver";
};
};
};
xmonad-environment = {
DISPLAY = ":${toString config.services.xserver.display}";
XMONAD_STATE = "/tmp/xmonad.state";
# XXX JSON is close enough :)
XMONAD_WORKSPACES0_FILE = pkgs.writeText "xmonad.workspaces0" (toJSON [
"dashboard"
]);
};
xmonad-start = pkgs.writeScriptBin "xmonad" ''
#! ${pkgs.bash}/bin/bash
set -efu
export PATH; PATH=${makeSearchPath "bin" ([
pkgs.rxvt_unicode
] ++ config.environment.systemPackages)}:/var/setuid-wrappers
settle() {(
# Use PATH for a clean journal
command=''${1##*/}
PATH=''${1%/*}; export PATH
shift
until "$command" "$@"; do
${pkgs.coreutils}/bin/sleep 1
done
)&}
settle ${pkgs.xorg.xhost}/bin/xhost +LOCAL:
settle ${pkgs.xorg.xrdb}/bin/xrdb -merge ${import ./Xresources.nix args}
settle ${pkgs.xorg.xsetroot}/bin/xsetroot -solid '#1c1c1c'
exec ${pkgs.xmonad-lass}/bin/xmonad
'';
xmonad-stop = pkgs.writeScriptBin "xmonad-stop" ''
#! /bin/sh
${pkgs.xmonad-lass}/bin/xmonad --shutdown
${pkgs.coreutils}/bin/sleep 2s
'';
xserver-environment = {
XKB_BINDIR = "${pkgs.xorg.xkbcomp}/bin"; # Needed for the Xkb extension. XKB_BINDIR = "${pkgs.xorg.xkbcomp}/bin"; # Needed for the Xkb extension.
XORG_DRI_DRIVER_PATH = "/run/opengl-driver/lib/dri"; # !!! Depends on the driver selected at runtime. XORG_DRI_DRIVER_PATH = "/run/opengl-driver/lib/dri"; # !!! Depends on the driver selected at runtime.
LD_LIBRARY_PATH = concatStringsSep ":" ( LD_LIBRARY_PATH = concatStringsSep ":" (
[ "${pkgs.xorg.libX11}/lib" "${pkgs.xorg.libXext}/lib" ] [ "${pkgs.xorg.libX11}/lib" "${pkgs.xorg.libXext}/lib" ]
++ concatLists (catAttrs "libPath" config.services.xserver.drivers)); ++ concatLists (catAttrs "libPath" config.services.xserver.drivers));
}; };
serviceConfig = {
SyslogIdentifier = "xserver";
ExecReload = "${pkgs.coreutils}/bin/echo NOP";
ExecStart = toString [
"${pkgs.xorg.xorgserver}/bin/X"
":${toString config.services.xserver.display}"
"vt${toString config.services.xserver.tty}"
"-config ${import ./xserver.conf.nix args}"
"-logfile /dev/null -logverbose 0 -verbose 3"
"-nolisten tcp"
"-xkbdir ${pkgs.xkeyboard_config}/etc/X11/xkb"
];
};
};
xserver = pkgs.writeScriptBin "xserver" '' systemd.services.urxvtd = {
#! /bin/sh wantedBy = [ "multi-user.target" ];
set -efu reloadIfChanged = true;
exec ${pkgs.xorg.xorgserver.out}/bin/X \ serviceConfig = {
:${toString config.services.xserver.display} \ SyslogIdentifier = "urxvtd";
vt${toString config.services.xserver.tty} \ ExecReload = "${pkgs.coreutils}/bin/echo NOP";
-config ${import ./xserver.conf.nix args} \ ExecStart = "${pkgs.rxvt_unicode}/bin/urxvtd";
-logfile /var/log/X.${toString config.services.xserver.display}.log \ Restart = "always";
-nolisten tcp \ RestartSec = "2s";
-xkbdir ${pkgs.xkeyboard_config}/etc/X11/xkb \ StartLimitBurst = 0;
''; User = user.name;
};
need-reload = s: let };
pkg = pkgs.writeScriptBin "need-reload" '' }
#! /bin/sh
echo "$*"
'';
in "${pkg}/bin/need-reload ${s}";
in out

View file

@ -118,5 +118,4 @@
fi fi
''; '';
}; };
users.defaultUserShell = "/run/current-system/sw/bin/zsh";
} }

View file

@ -3,6 +3,7 @@ _:
imports = [ imports = [
./ejabberd ./ejabberd
./folderPerms.nix ./folderPerms.nix
./hosts.nix
./mysql-backup.nix ./mysql-backup.nix
./umts.nix ./umts.nix
./urxvtd.nix ./urxvtd.nix

12
lass/3modules/hosts.nix Normal file
View file

@ -0,0 +1,12 @@
{ config, ... }:
with config.krebs.lib;
{
options.lass.hosts = mkOption {
type = types.attrsOf types.host;
default =
filterAttrs (_: host: host.owner.name == "lass")
config.krebs.hosts;
};
}

View file

@ -111,7 +111,6 @@ let
pm.max_spare_servers = 3 pm.max_spare_servers = 3
listen.owner = ${user} listen.owner = ${user}
listen.group = ${group} listen.group = ${group}
# errors to journal
php_admin_value[error_log] = 'stderr' php_admin_value[error_log] = 'stderr'
php_admin_flag[log_errors] = on php_admin_flag[log_errors] = on
catch_workers_output = yes catch_workers_output = yes

View file

@ -41,10 +41,6 @@ let
wvdial = nixpkgs-1509.wvdial; # https://github.com/NixOS/nixpkgs/issues/16113 wvdial = nixpkgs-1509.wvdial; # https://github.com/NixOS/nixpkgs/issues/16113
#modem-device = "/dev/serial/by-id/usb-Lenovo_F5521gw_38214921FBBBC7B0-if09";
modem-device = "/dev/serial/by-id/usb-HUAWEI_Technologies_HUAWEI_Mobile-if00-port0";
# TODO: currently it is only netzclub
umts-bin = pkgs.writeScriptBin "umts" '' umts-bin = pkgs.writeScriptBin "umts" ''
#!/bin/sh #!/bin/sh
set -euf set -euf

View file

@ -154,7 +154,6 @@ let
pm.max_spare_servers = 3 pm.max_spare_servers = 3
listen.owner = ${user} listen.owner = ${user}
listen.group = ${group} listen.group = ${group}
# errors to journal
php_admin_value[error_log] = 'stderr' php_admin_value[error_log] = 'stderr'
php_admin_flag[log_errors] = on php_admin_flag[log_errors] = on
catch_workers_output = yes catch_workers_output = yes

View file

@ -9,7 +9,7 @@ pkgs.writeHaskell "xmonad-lass" {
"xmonad-contrib" "xmonad-contrib"
"xmonad-stockholm" "xmonad-stockholm"
]; ];
text = '' text = /* haskell */ ''
{-# LANGUAGE DeriveDataTypeable #-} -- for XS {-# LANGUAGE DeriveDataTypeable #-} -- for XS
{-# LANGUAGE FlexibleContexts #-} -- for xmonad' {-# LANGUAGE FlexibleContexts #-} -- for xmonad'
{-# LANGUAGE LambdaCase #-} {-# LANGUAGE LambdaCase #-}
@ -24,6 +24,7 @@ import Control.Exception
import Data.List (isInfixOf) import Data.List (isInfixOf)
import System.Environment (getArgs, withArgs, getEnv) import System.Environment (getArgs, withArgs, getEnv)
import System.IO (hPutStrLn, stderr) import System.IO (hPutStrLn, stderr)
import System.Posix.Process (executeFile)
import Text.Read (readEither) import Text.Read (readEither)
import XMonad.Actions.CopyWindow (copy, kill1) import XMonad.Actions.CopyWindow (copy, kill1)
import XMonad.Actions.CycleWS (toggleWS) import XMonad.Actions.CycleWS (toggleWS)
@ -41,13 +42,13 @@ import XMonad.Layout.Minimize (minimize, minimizeWindow, MinimizeMsg(RestoreNext
import XMonad.Layout.NoBorders (smartBorders) import XMonad.Layout.NoBorders (smartBorders)
import XMonad.Prompt (autoComplete, searchPredicate, XPConfig) import XMonad.Prompt (autoComplete, searchPredicate, XPConfig)
import XMonad.Prompt.Window (windowPromptGoto, windowPromptBringCopy) import XMonad.Prompt.Window (windowPromptGoto, windowPromptBringCopy)
import XMonad.Stockholm.Shutdown (sendShutdownEvent, handleShutdownEvent)
import XMonad.Util.EZConfig (additionalKeysP) import XMonad.Util.EZConfig (additionalKeysP)
import XMonad.Layout.SimpleFloat (simpleFloat) import XMonad.Layout.SimpleFloat (simpleFloat)
import XMonad.Stockholm.Shutdown
myTerm :: String urxvtcPath :: FilePath
myTerm = "${pkgs.rxvt_unicode}/bin/urxvtc" urxvtcPath = "${pkgs.rxvt_unicode}/bin/urxvtc"
myFont :: String myFont :: String
myFont = "-schumacher-*-*-*-*-*-*-*-*-*-*-*-iso10646-*" myFont = "-schumacher-*-*-*-*-*-*-*-*-*-*-*-iso10646-*"
@ -63,12 +64,14 @@ mainNoArgs = do
xmonad' xmonad'
$ withUrgencyHook (SpawnUrgencyHook "echo emit Urgency ") $ withUrgencyHook (SpawnUrgencyHook "echo emit Urgency ")
$ def $ def
{ terminal = myTerm { terminal = urxvtcPath
, modMask = mod4Mask , modMask = mod4Mask
, workspaces = workspaces0 , workspaces = workspaces0
, layoutHook = smartBorders $ myLayoutHook , layoutHook = smartBorders $ myLayoutHook
, manageHook = placeHook (smart (1,0)) <+> floatNextHook , manageHook = placeHook (smart (1,0)) <+> floatNextHook
, startupHook = spawn "echo emit XMonadStartup" , startupHook = do
path <- liftIO (getEnv "XMONAD_STARTUP_HOOK")
forkFile path [] Nothing
, normalBorderColor = "#1c1c1c" , normalBorderColor = "#1c1c1c"
, focusedBorderColor = "#f000b0" , focusedBorderColor = "#f000b0"
, handleEventHook = handleShutdownEvent , handleEventHook = handleShutdownEvent
@ -84,7 +87,7 @@ xmonad' conf = do
path <- getEnv "XMONAD_STATE" path <- getEnv "XMONAD_STATE"
try (readFile path) >>= \case try (readFile path) >>= \case
Right content -> do Right content -> do
hPutStrLn stderr ("resuming from " ++ path ++ "; state = " ++ show content) hPutStrLn stderr ("resuming from " ++ path)
withArgs ("--resume" : lines content) (xmonad conf) withArgs ("--resume" : lines content) (xmonad conf)
Left e -> do Left e -> do
hPutStrLn stderr (displaySomeException e) hPutStrLn stderr (displaySomeException e)
@ -108,7 +111,7 @@ displaySomeException = displayException
myKeyMap :: [([Char], X ())] myKeyMap :: [([Char], X ())]
myKeyMap = myKeyMap =
[ ("M4-<F11>", spawn "i3lock -i /var/lib/wallpaper/wallpaper -f") [ ("M4-<F11>", spawn "${pkgs.i3lock}/bin/i3lock -i /var/lib/wallpaper/wallpaper -f")
, ("M4-p", spawn "${pkgs.pass}/bin/passmenu --type") , ("M4-p", spawn "${pkgs.pass}/bin/passmenu --type")
, ("<XF86AudioRaiseVolume>", spawn "${pkgs.pulseaudioLight.out}/bin/pactl -- set-sink-volume 0 +4%") , ("<XF86AudioRaiseVolume>", spawn "${pkgs.pulseaudioLight.out}/bin/pactl -- set-sink-volume 0 +4%")
, ("<XF86AudioLowerVolume>", spawn "${pkgs.pulseaudioLight.out}/bin/pactl -- set-sink-volume 0 -4%") , ("<XF86AudioLowerVolume>", spawn "${pkgs.pulseaudioLight.out}/bin/pactl -- set-sink-volume 0 -4%")
@ -124,8 +127,8 @@ myKeyMap =
, ("M4-S-<Backspace>", removeEmptyWorkspace) , ("M4-S-<Backspace>", removeEmptyWorkspace)
, ("M4-S-c", kill1) , ("M4-S-c", kill1)
, ("M4-<Esc>", toggleWS) , ("M4-<Esc>", toggleWS)
, ("M4-S-<Enter>", spawn myTerm) , ("M4-S-<Enter>", spawn urxvtcPath)
, ("M4-x", floatNext True >> spawn myTerm) , ("M4-x", floatNext True >> spawn urxvtcPath)
, ("M4-f", floatNext True) , ("M4-f", floatNext True)
, ("M4-b", sendMessage ToggleStruts) , ("M4-b", sendMessage ToggleStruts)
@ -142,6 +145,10 @@ myKeyMap =
, ("M4-S-q", return ()) , ("M4-S-q", return ())
] ]
forkFile :: FilePath -> [String] -> Maybe [(String, String)] -> X ()
forkFile path args env =
xfork (executeFile path False args env) >> return ()
autoXPConfig :: XPConfig autoXPConfig :: XPConfig
autoXPConfig = def autoXPConfig = def
{ autoComplete = Just 5000 { autoComplete = Just 5000
@ -160,8 +167,6 @@ gridConfig = def
, gs_navigate = navNSearch , gs_navigate = navNSearch
, gs_font = myFont , gs_font = myFont
} }
''; '';
}; };
} }

View file

@ -22,6 +22,8 @@ in {
../2configs/tinc/retiolum.nix ../2configs/tinc/retiolum.nix
../2configs/urlwatch.nix ../2configs/urlwatch.nix
../2configs/torrent.nix ../2configs/torrent.nix
../2configs/sabnzbd.nix
../2configs/opentracker.nix ../2configs/opentracker.nix
]; ];

View file

@ -43,9 +43,11 @@ in {
# TODO: unlock home partition via ssh # TODO: unlock home partition via ssh
../2configs/fs/sda-crypto-root.nix ../2configs/fs/sda-crypto-root.nix
../2configs/zsh-user.nix ../2configs/zsh-user.nix
../2configs/urlwatch.nix
../2configs/exim-retiolum.nix ../2configs/exim-retiolum.nix
../2configs/smart-monitor.nix ../2configs/smart-monitor.nix
../2configs/mail-client.nix ../2configs/mail-client.nix
../2configs/disable_v6.nix
#../2configs/graphite-standalone.nix #../2configs/graphite-standalone.nix
#../2configs/share-user-sftp.nix #../2configs/share-user-sftp.nix
../2configs/omo-share.nix ../2configs/omo-share.nix
@ -56,13 +58,11 @@ in {
# docker run -d -v /var/lib/pyload:/opt/pyload/pyload-config -v /media/crypt0/pyload:/opt/pyload/Downloads --name pyload --restart=always -p 8112:8000 -P writl/pyload # docker run -d -v /var/lib/pyload:/opt/pyload/pyload-config -v /media/crypt0/pyload:/opt/pyload/Downloads --name pyload --restart=always -p 8112:8000 -P writl/pyload
]; ];
makefu.full-populate = true; makefu.full-populate = true;
makefu.deluge.cfg = { krebs.rtorrent = {
max_active_seeding = 1; downloadDir = lib.mkForce "/media/crypt0/torrent";
stop_seed_ratio = 1; extraConfig = ''
natpmp = true; upload_rate = 200
upnp = true; '';
max_upload_speed = 200;
}; };
users.groups.share = { users.groups.share = {
gid = config.krebs.lib.genid "share"; gid = config.krebs.lib.genid "share";
@ -109,6 +109,7 @@ in {
environment.systemPackages = with pkgs;[ environment.systemPackages = with pkgs;[
mergerfs # hard requirement for mount mergerfs # hard requirement for mount
wol # wake up filepimp wol # wake up filepimp
f3
]; ];
fileSystems = let fileSystems = let
cryptMount = name: cryptMount = name:

View file

@ -9,6 +9,7 @@
../. ../.
../2configs/main-laptop.nix #< base-gui + zsh ../2configs/main-laptop.nix #< base-gui + zsh
../2configs/laptop-utils.nix ../2configs/laptop-utils.nix
../2configs/laptop-backup.nix
# Krebs # Krebs
#../2configs/disable_v6.nix #../2configs/disable_v6.nix
@ -42,13 +43,14 @@
../2configs/tinc/retiolum.nix ../2configs/tinc/retiolum.nix
# temporary modules # temporary modules
../2configs/temp/share-samba.nix ../2configs/temp/share-samba.nix
../2configs/temp/elkstack.nix ../2configs/laptop-backup.nix
# ../2configs/temp/elkstack.nix
# ../2configs/temp/sabnzbd.nix # ../2configs/temp/sabnzbd.nix
../2configs/tinc/siem.nix ../2configs/tinc/siem.nix
../2configs/torrent.nix #../2configs/torrent.nix
]; ];
makefu.full-populate = true; makefu.full-populate = true;
makefu.deluge.web.enable = true;
krebs.nginx = { krebs.nginx = {
default404 = false; default404 = false;
servers.default.listen = [ "80 default_server" ]; servers.default.listen = [ "80 default_server" ];

View file

@ -22,7 +22,7 @@ with config.krebs.lib;
build = { build = {
user = config.krebs.users.makefu; user = config.krebs.users.makefu;
source = let inherit (config.krebs.build) host user; in { source = let inherit (config.krebs.build) host user; in {
nixpkgs = if config.makefu.full-populate or (getEnv "dummy_secrets" == "true") then nixpkgs = if config.makefu.full-populate || (getEnv "dummy_secrets" == "true") then
{ # stable @ 2016-07-20 { # stable @ 2016-07-20
git = { url = https://github.com/nixos/nixpkgs; ref = "125ffff"; }; git = { url = https://github.com/nixos/nixpkgs; ref = "125ffff"; };
} }

View file

@ -7,10 +7,12 @@ let
in { in {
services.iodined = { services.iodined = {
server = {
enable = true; enable = true;
domain = domain; domain = domain;
ip = "172.16.10.1/24"; ip = "172.16.10.1/24";
extraConfig = "-P ${pw} -l ${config.krebs.build.host.nets.internet.ip4.addr}"; extraConfig = "-P ${pw} -l ${config.krebs.build.host.nets.internet.ip4.addr}";
}; };
};
} }

View file

@ -0,0 +1,12 @@
{config, lib, pkgs, ... }:
{
systemd.user.services.duply-secrets = {
description = "run daily secrets backup";
startAt = "daily";
serviceConfig = {
Type = "oneshot";
ExecStart = "{pkgs.duply}/bin/duply omo-secrets backup";
};
};
}

View file

@ -21,7 +21,6 @@ in {
sendfile on; sendfile on;
sendfile_max_chunk 512k; sendfile_max_chunk 512k;
directio 512; directio 512;
aio threads;
mp4; mp4;
autoindex on; autoindex on;
root /media; root /media;

View file

@ -0,0 +1,16 @@
{ pkgs, config, ... }:
with config.krebs.lib;
let
web-port = 8080;
in {
services.sabnzbd.enable = true;
services.sabnzbd.group = "download";
systemd.services.sabnzbd.environment.SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
users.users.sabnzbd.group = mkForce "download";
networking.firewall.extraCommands = ''
iptables -A INPUT -i retiolum -p tcp --dport ${toString web-port} -j ACCEPT
'';
}

View file

@ -2,9 +2,11 @@
users.users.smbguest = { users.users.smbguest = {
name = "smbguest"; name = "smbguest";
uid = config.ids.uids.smbguest; uid = config.ids.uids.smbguest;
group = "share";
description = "smb guest user"; description = "smb guest user";
home = "/var/empty"; home = "/var/empty";
}; };
users.groups.share.members = [ "makefu" ];
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
139 445 # samba 139 445 # samba

View file

@ -1,6 +1,7 @@
{pkgs, ...}: {pkgs, ...}:
let let
daemon-port = 6969;
cfgfile = pkgs.writeText "udpt-config" '' cfgfile = pkgs.writeText "udpt-config" ''
[db] [db]
driver=sqlite3 driver=sqlite3
@ -11,7 +12,9 @@ let
port=6969 port=6969
threads=5 threads=5
allow_remotes=yes allow_remotes=yes
allow_iana_ips=no
# allow retiolum:
allow_iana_ips=yes
announce_interval=1800 announce_interval=1800
cleanup_interval=120 cleanup_interval=120
@ -19,7 +22,7 @@ let
enable=yes enable=yes
[logging] [logging]
filename=- filename=/tmp/udpt.log
level=warning level=warning
''; '';
in { in {
@ -27,5 +30,8 @@ in {
enable = true; enable = true;
inherit cfgfile; inherit cfgfile;
}; };
networking.firewall.extraCommands = ''
iptables -A INPUT -i retiolum -p udp --dport ${toString daemon-port} -j ACCEPT
'';
} }

View file

@ -1,22 +1,6 @@
{ config, lib, ... }: { config, lib, ... }:
{ {
nixpkgs.config.packageOverrides = pkgs: {
urlwatch = with pkgs.pythonPackages; buildPythonPackage rec {
name = "urlwatch-1.18";
propagatedBuildInputs = [ futures ];
src = pkgs.fetchurl {
url = "http://thp.io/2008/urlwatch/${name}.tar.gz";
sha256 = "090qfgx249ks7103sap6w47f8302ix2k46wxhfssxwsqcqdl25vb";
};
postFixup = ''
wrapProgram "$out/bin/urlwatch" --prefix "PYTHONPATH" : "$PYTHONPATH"
'';
};
};
krebs.urlwatch = { krebs.urlwatch = {
enable = true; enable = true;
mailto = config.krebs.users.makefu.mail; mailto = config.krebs.users.makefu.mail;

View file

@ -40,8 +40,9 @@ let
restartIfChanged = true; restartIfChanged = true;
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
ExecStart = "${cfg.package}/bin/udpt -c ${shell.escape cfg.cfgfile}"; ExecStart = "${cfg.package}/bin/udpt -i -c ${shell.escape cfg.cfgfile}";
PrivateTmp = true; PrivateTmp = true;
WorkingDirectory = "/tmp";
User = "${cfg.user}"; User = "${cfg.user}";
}; };
}; };

View file

@ -2,9 +2,16 @@
let let
inherit (pkgs) callPackage; inherit (pkgs) callPackage;
nixpkgs-1509 = import (pkgs.fetchFromGitHub {
owner = "NixOS"; repo = "nixpkgs-channels";
rev = "91371c2bb6e20fc0df7a812332d99c38b21a2bda";
sha256 = "1as1i0j9d2n3iap9b471y4x01561r2s3vmjc5281qinirlr4al73";
}) {};
in in
{ {
nixpkgs.config.packageOverrides = rec { nixpkgs.config.packageOverrides = rec {
cups = nixpkgs-1509.cups;
alsa-hdspconf = callPackage ./alsa-tools { alsaToolTarget="hdspconf";}; alsa-hdspconf = callPackage ./alsa-tools { alsaToolTarget="hdspconf";};
alsa-hdspmixer = callPackage ./alsa-tools { alsaToolTarget="hdspmixer";}; alsa-hdspmixer = callPackage ./alsa-tools { alsaToolTarget="hdspmixer";};
alsa-hdsploader = callPackage ./alsa-tools { alsaToolTarget="hdsploader";}; alsa-hdsploader = callPackage ./alsa-tools { alsaToolTarget="hdsploader";};
@ -18,6 +25,13 @@ in
mycube-flask = callPackage ./mycube-flask {}; mycube-flask = callPackage ./mycube-flask {};
nodemcu-uploader = callPackage ./nodemcu-uploader {}; nodemcu-uploader = callPackage ./nodemcu-uploader {};
ps3netsrv = callPackage ./ps3netsrv {}; ps3netsrv = callPackage ./ps3netsrv {};
pwqgen-ger = callPackage ../../krebs/5pkgs/passwdqc-utils {
wordset-file = pkgs.fetchurl {
url = https://gist.githubusercontent.com/makefu/b56f5554c9ef03fe6e09878962e6fd8d/raw/1f147efec51325bc9f80c823bad8381d5b7252f6/wordset_4k.c ;
sha256 = "18ddzyh11bywrhzdkzvrl7nvgp5gdb4k1s0zxbz2bkhd14vi72bb";
};
};
qcma = pkgs.qt5.callPackage ./qcma {};
tw-upload-plugin = callPackage ./tw-upload-plugin {}; tw-upload-plugin = callPackage ./tw-upload-plugin {};
skytraq-logger = callPackage ./skytraq-logger {}; skytraq-logger = callPackage ./skytraq-logger {};
taskserver = callPackage ./taskserver {}; taskserver = callPackage ./taskserver {};

View file

@ -0,0 +1,64 @@
{ lib, stdenv, fetchFromGitHub, fetchgit, libusb, libtool, autoconf, pkgconfig, git,
gettext, automake, libxml2 , qmakeHook, makeQtWrapper,
qtbase, qttools, qtmultimedia, libnotify, ffmpeg, gdk_pixbuf }:
let
libvitamtp = stdenv.mkDerivation rec {
name = "libvitamtp-${version}";
version = "2.5.9";
src = fetchFromGitHub {
owner = "codestation";
repo = "vitamtp";
rev = "v"+version;
sha256 = "09c9f7gqpyicfpnhrfb4r67s2hci6hh31bzmqlpds4fywv5mzaf8";
};
buildInputs = [ libusb libxml2 libtool autoconf automake gettext pkgconfig ];
preConfigure = "sh ./autogen.sh";
meta = {
description = "Content Manager Assistant for the PS Vita";
homepage = https://github.com/codestation/qcma;
license = stdenv.lib.licenses.gpl2;
platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ makefu ];
};
};
in stdenv.mkDerivation rec {
name = "qcma-${version}";
version = "0.3.13";
src = fetchgit {
url = "git://github.com/codestation/qcma.git";
rev = "refs/tags/v"+version;
leaveDotGit = true;
sha256 = "164abjwlw2nw2i30wlwpsavz1zjkp6a14yprvinma5hflkw4yj6i";
};
preConfigure = ''
lrelease common/resources/translations/*.ts
'';
# TODO: manually adding qtbase and qtmultimedia to the library path is shit,
# this should be done somewhere before when building the project, idk.
installPhase = ''
make INSTALL_ROOT="$(out)" install
for i in qcma qcma_cli; do
wrapQtProgram $out/bin/$i --prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [
qtbase qtmultimedia ]}
done
'';
enableParallelBuilding = true;
buildInputs = [ gdk_pixbuf ffmpeg libnotify libvitamtp git qtmultimedia qtbase ];
nativeBuildInputs = [ qmakeHook qttools pkgconfig makeQtWrapper ];
meta = {
description = "Content Manager Assistant for the PS Vita";
homepage = https://github.com/codestation/qcma;
license = stdenv.lib.licenses.gpl2;
platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ makefu ];
};
}