stockholm/tv/1systems/wu.nix

396 lines
7.8 KiB
Nix
Raw Normal View History

2015-07-11 14:55:22 +00:00
{ config, lib, pkgs, ... }:
with lib;
{
krebs.build.host = config.krebs.hosts.wu;
2015-07-27 02:33:37 +00:00
krebs.build.user = config.krebs.users.tv;
krebs.build.target = "root@wu";
2015-09-26 22:22:50 +00:00
krebs.build.source = {
git.nixpkgs = {
url = https://github.com/NixOS/nixpkgs;
rev = "e916273209560b302ab231606babf5ce1c481f08";
2015-07-27 02:33:37 +00:00
};
2015-09-26 22:22:50 +00:00
dir.secrets = {
host = config.krebs.hosts.wu;
path = "/home/tv/secrets/wu";
2015-07-27 02:33:37 +00:00
};
2015-09-26 22:22:50 +00:00
dir.stockholm = {
host = config.krebs.hosts.wu;
path = "/home/tv/stockholm";
2015-07-27 02:33:37 +00:00
};
};
2015-07-11 14:55:22 +00:00
imports = [
2015-07-28 18:40:25 +00:00
../2configs/w110er.nix
../2configs/base.nix
2015-08-29 07:02:00 +00:00
#../2configs/consul-client.nix
2015-07-28 18:40:25 +00:00
../2configs/git.nix
../2configs/mail-client.nix
2015-10-24 20:31:10 +00:00
../2configs/xserver
2015-08-28 19:48:29 +00:00
../2configs/test.nix
2015-07-16 04:34:33 +00:00
{
environment.systemPackages = with pkgs; [
2015-07-24 15:34:08 +00:00
# stockholm
2015-08-28 22:19:52 +00:00
genid
2015-07-16 04:34:33 +00:00
gnumake
2015-08-28 22:19:52 +00:00
hashPassword
lentil
2015-07-16 20:49:49 +00:00
parallel
(pkgs.writeScriptBin "im" ''
#! ${pkgs.bash}/bin/bash
export PATH=${makeSearchPath "bin" (with pkgs; [
tmux
gnugrep
weechat
])}
if tmux list-sessions -F\#S | grep -q '^im''$'; then
exec tmux attach -t im
else
exec tmux new -s im weechat
fi
'')
2015-07-16 04:34:33 +00:00
# root
cryptsetup
ntp # ntpate
# tv
2015-07-16 21:19:40 +00:00
bc
2015-07-16 04:34:33 +00:00
bind # dig
2015-08-28 22:19:52 +00:00
cac
dic
2015-10-24 20:55:50 +00:00
ff
2015-07-16 04:34:33 +00:00
file
2015-09-25 20:56:28 +00:00
get
2015-07-16 04:34:33 +00:00
gitAndTools.qgit
gnupg21
haskellPackages.hledger
htop
jq
manpages
mkpasswd
mpv
netcat
nix-repl
nmap
2015-08-28 22:19:52 +00:00
nq
2015-07-16 04:34:33 +00:00
p7zip
pavucontrol
posix_man_pages
2015-08-29 06:30:16 +00:00
pssh
2015-10-15 00:00:32 +00:00
push
2015-07-16 04:34:33 +00:00
qrencode
sxiv
texLive
tmux
zathura
#ack
#apache-httpd
#ascii
#emacs
#es
#esniper
#gcc
#gptfdisk
#graphviz
#haskellPackages.cabal2nix
#haskellPackages.ghc
#haskellPackages.shake
#hdparm
#i7z
#iftop
#imagemagick
#inotifyTools
#iodine
#iotop
#lshw
#lsof
#minicom
#mtools
#ncmpc
#neovim
#nethogs
#nix-prefetch-scripts #cvs bug
#openssl
#openswan
#parted
#perl
#powertop
#ppp
#proot
#pythonPackages.arandr
#pythonPackages.youtube-dl
#racket
#rxvt_unicode-with-plugins
#scrot
#sec
#silver-searcher
#sloccount
#smartmontools
#socat
#sshpass
#strongswan
#sysdig
#sysstat
#tcpdump
#tlsdate
#unetbootin
#utillinuxCurses
#wvdial
#xdotool
#xkill
#xl2tpd
#xsel
];
}
2015-07-11 14:55:22 +00:00
{
tv.iptables = {
enable = true;
input-internet-accept-new-tcp = [
"ssh"
"http"
"tinc"
"smtp"
];
};
}
2015-08-13 09:46:09 +00:00
{
krebs.exim-retiolum.enable = true;
2015-08-13 09:46:09 +00:00
}
2015-07-11 14:55:22 +00:00
{
2015-07-24 09:50:23 +00:00
krebs.nginx = {
2015-07-11 14:55:22 +00:00
enable = true;
servers.default.locations = [
2015-07-11 14:55:22 +00:00
(nameValuePair "~ ^/~(.+?)(/.*)?\$" ''
alias /home/$1/public_html$2;
'')
];
};
}
{
2015-07-24 10:34:25 +00:00
krebs.retiolum = {
2015-07-11 14:55:22 +00:00
enable = true;
connectTo = [
"gum"
"pigstarter"
];
};
}
{
users.extraGroups = {
2015-07-26 22:49:06 +00:00
tv.gid = 1337;
slaves.gid = 3799582008; # genid slaves
2015-07-11 14:55:22 +00:00
};
users.extraUsers =
2015-07-26 22:49:06 +00:00
mapAttrs (name: user@{ extraGroups ? [], ... }: user // {
2015-07-11 14:55:22 +00:00
inherit name;
home = "/home/${name}";
createHome = true;
useDefaultShell = true;
2015-07-26 22:49:06 +00:00
group = "tv";
extraGroups = ["slaves"] ++ extraGroups;
2015-07-11 14:55:22 +00:00
}) {
ff = {
uid = 13378001;
extraGroups = [
"audio"
"video"
];
};
cr = {
uid = 13378002;
extraGroups = [
"audio"
"video"
];
};
fa = {
uid = 2300001;
};
rl = {
uid = 2300002;
};
tief = {
uid = 2300702;
};
btc-bitcoind = {
uid = 2301001;
};
btc-electrum = {
uid = 2301002;
};
ltc-litecoind = {
uid = 2301101;
};
eth = {
uid = 2302001;
};
emse-hsdb = {
uid = 4200101;
};
wine = {
uid = 13370400;
extraGroups = [
"audio"
"video"
];
};
df = {
uid = 13370401;
extraGroups = [
"audio"
"video"
];
};
xr = {
uid = 13370061;
extraGroups = [
"audio"
"video"
];
};
"23" = {
uid = 13370023;
};
electrum = {
uid = 13370102;
};
skype = {
uid = 6660001;
extraGroups = [
"audio"
];
};
onion = {
uid = 6660010;
};
zalora = {
uid = 1000301;
extraGroups = [
"audio"
# TODO remove vboxusers when hardening is active
"vboxusers"
"video"
];
};
};
security.sudo.extraConfig =
let
2015-07-26 22:49:06 +00:00
isSlave = u: elem "slaves" u.extraGroups;
masterOf = u: u.group;
slaves = filterAttrs (_: isSlave) config.users.extraUsers;
toSudoers = u: "${masterOf u} ALL=(${u.name}) NOPASSWD: ALL";
2015-07-11 14:55:22 +00:00
in
2015-07-26 22:49:06 +00:00
concatMapStringsSep "\n" toSudoers (attrValues slaves);
2015-07-11 14:55:22 +00:00
}
];
boot.initrd.luks = {
cryptoModules = [ "aes" "sha512" "xts" ];
devices = [
{ name = "home"; device = "/dev/vg840/enchome"; preLVM = false; }
];
};
fileSystems = {
"/" = {
device = "/dev/mapper/vg840-wuroot";
fsType = "btrfs";
options = "defaults,noatime,ssd,compress=lzo";
};
"/home" = {
device = "/dev/mapper/home";
2015-09-26 22:38:37 +00:00
fsType = "btrfs";
2015-07-11 14:55:22 +00:00
options = "defaults,noatime,ssd,compress=lzo";
};
"/boot" = {
device = "/dev/sda1";
};
"/tmp" = {
device = "tmpfs";
fsType = "tmpfs";
options = "nosuid,nodev,noatime";
};
};
nixpkgs.config.chromium.enablePepperFlash = true;
nixpkgs.config.allowUnfree = true;
hardware.bumblebee.enable = true;
hardware.bumblebee.group = "video";
hardware.enableAllFirmware = true;
hardware.opengl.driSupport32Bit = true;
hardware.pulseaudio.enable = true;
environment.systemPackages = with pkgs; [
xlibs.fontschumachermisc
slock
ethtool
#firefoxWrapper # with plugins
#chromiumDevWrapper
tinc
iptables
#jack2
];
security.setuidPrograms = [
"sendmail" # for cron
"slock"
];
services.printing.enable = true;
services.journald.extraConfig = ''
SystemMaxUse=1G
RuntimeMaxUse=128M
'';
# see tmpfiles.d(5)
systemd.tmpfiles.rules = [
"d /tmp 1777 root root - -" # does this work with mounted /tmp?
];
virtualisation.libvirtd.enable = true;
services.udev.extraRules = ''
SUBSYSTEM=="net", ATTR{address}=="00:90:f5:da:aa:c3", NAME="en0"
SUBSYSTEM=="net", ATTR{address}=="a0:88:b4:1b:ae:6c", NAME="wl0"
# for jack
KERNEL=="rtc0", GROUP="audio"
KERNEL=="hpet", GROUP="audio"
'';
services.bitlbee.enable = true;
services.tor.client.enable = true;
services.tor.enable = true;
services.virtualboxHost.enable = true;
# TODO w110er if xserver is enabled
services.xserver.vaapiDrivers = [ pkgs.vaapiIntel ];
}