summaryrefslogtreecommitdiffstats
path: root/lass
diff options
context:
space:
mode:
Diffstat (limited to 'lass')
-rw-r--r--lass/1systems/cloudkrebs.nix45
-rw-r--r--lass/1systems/mors.nix211
-rw-r--r--lass/1systems/uriel.nix181
-rw-r--r--lass/2configs/base.nix143
-rw-r--r--lass/2configs/binary-caches.nix13
-rw-r--r--lass/2configs/bird.nix13
-rw-r--r--lass/2configs/bitcoin.nix17
-rw-r--r--lass/2configs/browsers.nix67
-rw-r--r--lass/2configs/chromium-patched.nix48
-rw-r--r--lass/2configs/desktop-base.nix63
-rw-r--r--lass/2configs/elster.nix20
-rw-r--r--lass/2configs/fastpoke-pages.nix97
-rw-r--r--lass/2configs/games.nix25
-rw-r--r--lass/2configs/gitolite-base.nix173
-rw-r--r--lass/2configs/identity.nix48
-rw-r--r--lass/2configs/ircd.nix92
-rw-r--r--lass/2configs/mors/repos.nix87
-rw-r--r--lass/2configs/mors/retiolum.nix21
-rw-r--r--lass/2configs/new-repos.nix77
-rw-r--r--lass/2configs/pass.nix10
-rw-r--r--lass/2configs/programs.nix24
-rw-r--r--lass/2configs/retiolum.nix28
-rw-r--r--lass/2configs/sshkeys.nix11
-rw-r--r--lass/2configs/steam.nix30
-rw-r--r--lass/2configs/texlive.nix7
-rw-r--r--lass/2configs/urxvt.nix40
-rw-r--r--lass/2configs/vim.nix118
-rw-r--r--lass/2configs/virtualbox.nix22
-rw-r--r--lass/2configs/wine.nix23
-rw-r--r--lass/3modules/default.nix8
-rw-r--r--lass/3modules/iptables.nix187
-rw-r--r--lass/3modules/sshkeys.nix26
-rw-r--r--lass/3modules/urxvtd.nix55
-rw-r--r--lass/3modules/xresources.nix57
34 files changed, 2087 insertions, 0 deletions
diff --git a/lass/1systems/cloudkrebs.nix b/lass/1systems/cloudkrebs.nix
new file mode 100644
index 000000000..30a7fb51c
--- /dev/null
+++ b/lass/1systems/cloudkrebs.nix
@@ -0,0 +1,45 @@
+{ config, pkgs, ... }:
+
+{
+ imports = [
+ ../../2configs/tv/CAC-Developer-2.nix
+ ../../2configs/tv/CAC-CentOS-7-64bit.nix
+ ../../2configs/lass/base.nix
+ ../../2configs/lass/retiolum.nix
+ ../../2configs/lass/fastpoke-pages.nix
+ ../../2configs/lass/new-repos.nix
+ {
+ networking.interfaces.enp2s1.ip4 = [
+ {
+ address = "104.167.113.104";
+ prefixLength = 24;
+ }
+ ];
+ networking.defaultGateway = "104.167.113.1";
+ networking.nameservers = [
+ "8.8.8.8"
+ ];
+
+ }
+ ];
+
+ krebs.build = {
+ target = "root@cloudkrebs";
+ host = config.krebs.hosts.cloudkrebs;
+ deps = {
+ nixpkgs = {
+ url = https://github.com/Lassulus/nixpkgs;
+ rev = "1879a011925c561f0a7fd4043da0768bbff41d0b";
+ };
+ secrets = {
+ url = "/home/lass/secrets/${config.krebs.build.host.name}";
+ };
+ stockholm = {
+ url = toString ../..;
+ };
+ };
+ };
+
+ networking.hostName = "cloudkrebs";
+
+}
diff --git a/lass/1systems/mors.nix b/lass/1systems/mors.nix
new file mode 100644
index 000000000..3519bff66
--- /dev/null
+++ b/lass/1systems/mors.nix
@@ -0,0 +1,211 @@
+{ config, pkgs, ... }:
+
+{
+ imports = [
+ ../../2configs/lass/desktop-base.nix
+ ../../2configs/lass/programs.nix
+ ../../2configs/lass/bitcoin.nix
+ ../../2configs/lass/browsers.nix
+ ../../2configs/lass/games.nix
+ ../../2configs/lass/pass.nix
+ ../../2configs/lass/virtualbox.nix
+ ../../2configs/lass/elster.nix
+ ../../2configs/lass/urxvt.nix
+ ../../2configs/lass/steam.nix
+ ../../2configs/lass/wine.nix
+ ../../2configs/lass/texlive.nix
+ ../../2configs/lass/binary-caches.nix
+ ../../2configs/lass/ircd.nix
+ ../../2configs/lass/chromium-patched.nix
+ ../../2configs/lass/new-repos.nix
+ #../../2configs/tv/synaptics.nix
+ ../../2configs/lass/retiolum.nix
+ ];
+
+ krebs.build = {
+ target = "root@mors";
+ host = config.krebs.hosts.mors;
+ deps = {
+ nixpkgs = {
+ url = https://github.com/Lassulus/nixpkgs;
+ rev = "1879a011925c561f0a7fd4043da0768bbff41d0b";
+ };
+ secrets = {
+ url = "/home/lass/secrets/${config.krebs.build.host.name}";
+ };
+ stockholm = {
+ url = toString ../..;
+ };
+ };
+ };
+
+ networking.hostName = "mors";
+ networking.wireless.enable = true;
+
+ networking.extraHosts = ''
+ '';
+
+ nix.maxJobs = 4;
+
+ hardware.enableAllFirmware = true;
+ nixpkgs.config.allowUnfree = true;
+
+ boot = {
+ loader.grub.enable = true;
+ loader.grub.version = 2;
+ loader.grub.device = "/dev/sda";
+
+ initrd.luks.devices = [ { name = "luksroot"; device = "/dev/sda2"; } ];
+ initrd.luks.cryptoModules = [ "aes" "sha512" "sha1" "xts" ];
+ initrd.availableKernelModules = [ "xhci_hcd" "ehci_pci" "ahci" "usb_storage" ];
+ #kernelModules = [ "kvm-intel" "msr" ];
+ kernelModules = [ "msr" ];
+ };
+ fileSystems = {
+ "/" = {
+ device = "/dev/big/nix";
+ fsType = "ext4";
+ };
+
+ "/boot" = {
+ device = "/dev/sda1";
+ };
+
+ "/mnt/loot" = {
+ device = "/dev/big/loot";
+ fsType = "ext4";
+ };
+
+ "/home" = {
+ device = "/dev/big/home";
+ fsType = "ext4";
+ };
+
+ "/home/lass" = {
+ device = "/dev/big/home-lass";
+ fsType = "ext4";
+ };
+
+ "/mnt/backups" = {
+ device = "/dev/big/backups";
+ fsType = "ext4";
+ };
+
+ "/home/games/.local/share/Steam" = {
+ device = "/dev/big/steam";
+ fsType = "ext4";
+ };
+
+ "/home/virtual/virtual" = {
+ device = "/dev/big/virtual";
+ fsType = "ext4";
+ };
+
+ "/mnt/public" = {
+ device = "/dev/big/public";
+ fsType = "ext4";
+ };
+ };
+
+ services.udev.extraRules = ''
+ SUBSYSTEM=="net", ATTR{address}=="a0:88:b4:29:26:bc", NAME="wl0"
+ SUBSYSTEM=="net", ATTR{address}=="f0:de:f1:0c:a7:63", NAME="et0"
+ '';
+
+ #TODO activationScripts seem broken, fix them!
+ #activationScripts
+ #split up and move into base
+ system.activationScripts.powertopTunables = ''
+ #Enable Audio codec power management
+ echo '1' > '/sys/module/snd_hda_intel/parameters/power_save'
+ #VM writeback timeout
+ echo '1500' > '/proc/sys/vm/dirty_writeback_centisecs'
+ #Autosuspend for USB device Broadcom Bluetooth Device [Broadcom Corp]
+ echo 'auto' > '/sys/bus/usb/devices/1-1.4/power/control'
+ #Autosuspend for USB device Biometric Coprocessor
+ echo 'auto' > '/sys/bus/usb/devices/1-1.3/power/control'
+
+ #Runtime PMs
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:02.0/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:16.0/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:00.0/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:03:00.0/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.3/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.2/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:1f.0/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:1d.0/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.3/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:0d:00.0/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.0/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:1b.0/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:1a.0/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:19.0/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:16.3/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.1/power/control'
+ echo 'auto' > '/sys/bus/pci/devices/0000:00:1c.4/power/control'
+ '';
+
+ hardware.trackpoint = {
+ enable = true;
+ sensitivity = 220;
+ speed = 0;
+ 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 ];
+ deviceSection = ''
+ Option "AccelMethod" "sna"
+ BusID "PCI:0:2:0"
+ '';
+ };
+
+ environment.systemPackages = with pkgs; [
+ ];
+
+ #TODO: fix this shit
+ ##fprint stuff
+ ##sudo fprintd-enroll $USER to save fingerprints
+ #services.fprintd.enable = true;
+ #security.pam.services.sudo.fprintAuth = true;
+
+ users.extraGroups = {
+ loot = {
+ members = [
+ config.users.extraUsers.mainUser.name
+ "firefox"
+ "chromium"
+ "google"
+ "virtual"
+ ];
+ };
+ };
+
+ networking.firewall = {
+ allowPing = true;
+ allowedTCPPorts = [
+ 8000
+ ];
+ allowedUDPPorts = [
+ 67
+ ];
+ };
+
+ services.mongodb = {
+ enable = true;
+ };
+
+ lass.iptables = {
+ tables = {
+ filter.INPUT.rules = [
+ { predicate = "-p tcp --dport 8000"; target = "ACCEPT"; precedence = 9001; }
+ ];
+ };
+ };
+}
diff --git a/lass/1systems/uriel.nix b/lass/1systems/uriel.nix
new file mode 100644
index 000000000..8984004e1
--- /dev/null
+++ b/lass/1systems/uriel.nix
@@ -0,0 +1,181 @@
+{ config, pkgs, ... }:
+
+with builtins;
+{
+ imports = [
+ ../../2configs/lass/desktop-base.nix
+ ../../2configs/lass/browsers.nix
+ ../../2configs/lass/games.nix
+ ../../2configs/lass/pass.nix
+ ../../2configs/lass/urxvt.nix
+ ../../2configs/lass/bird.nix
+ ../../2configs/lass/new-repos.nix
+ ../../2configs/lass/chromium-patched.nix
+ ../../2configs/lass/retiolum.nix
+ {
+ users.extraUsers = {
+ root = {
+ openssh.authorizedKeys.keys = map readFile [
+ ../../Zpubkeys/uriel.ssh.pub
+ ];
+ };
+ };
+ }
+ ];
+
+ krebs.build = {
+ target = "root@uriel";
+ host = config.krebs.hosts.uriel;
+ deps = {
+ nixpkgs = {
+ url = https://github.com/Lassulus/nixpkgs;
+ rev = "961fcbabd7643171ea74bd550fee1ce5c13c2e90";
+ };
+ secrets = {
+ url = "/home/lass/secrets/${config.krebs.build.host.name}";
+ };
+ stockholm = {
+ url = toString ../..;
+ };
+ };
+ };
+
+ networking.hostName = "uriel";
+
+ networking.wireless.enable = true;
+ nix.maxJobs = 2;
+
+ hardware.enableAllFirmware = true;
+ nixpkgs.config.allowUnfree = true;
+
+ boot = {
+ #kernelParams = [
+ # "acpi.brightness_switch_enabled=0"
+ #];
+ #loader.grub.enable = true;
+ #loader.grub.version = 2;
+ #loader.grub.device = "/dev/sda";
+
+ loader.gummiboot.enable = true;
+ loader.gummiboot.timeout = 5;
+
+ initrd.luks.devices = [ { name = "luksroot"; device = "/dev/sda2"; } ];
+ initrd.luks.cryptoModules = [ "aes" "sha512" "sha1" "xts" ];
+ initrd.availableKernelModules = [ "xhci_hcd" "ehci_pci" "ahci" "usb_storage" ];
+ #kernelModules = [ "kvm-intel" "msr" ];
+ kernelModules = [ "msr" ];
+ extraModprobeConfig = ''
+ '';
+ };
+ fileSystems = {
+ "/" = {
+ device = "/dev/pool/root";
+ fsType = "ext4";
+ };
+
+ "/boot" = {
+ device = "/dev/sda1";
+ };
+ };
+
+ services.udev.extraRules = ''
+ SUBSYSTEM=="net", ATTR{address}=="64:27:37:7d:d8:ae", NAME="wl0"
+ SUBSYSTEM=="net", ATTR{address}=="f0:de:f1:b8:c8:2e", NAME="et0"
+ '';
+
+ #services.xserver = {
+ #};
+
+ services.xserver.synaptics = {
+ enable = true;
+ twoFingerScroll = true;
+ accelFactor = "0.035";
+ additionalOptions = ''
+ Option "FingerHigh" "60"
+ Option "FingerLow" "60"
+ '';
+ };
+
+ environment.systemPackages = with pkgs; [
+ ];
+
+ #for google hangout
+
+ users.extraUsers.google.extraGroups = [ "audio" "video" ];
+
+
+ #users.extraGroups = {
+ # loot = {
+ # members = [
+ # "lass"
+ # "firefox"
+ # "chromium"
+ # "google"
+ # ];
+ # };
+ #};
+ #
+ # iptables
+ #
+ #networking.firewall.enable = false;
+ #system.activationScripts.iptables =
+ # let
+ # log = false;
+ # when = c: f: if c then f else "";
+ # in
+ # ''
+ # ip4tables() { ${pkgs.iptables}/sbin/iptables "$@"; }
+ # ip6tables() { ${pkgs.iptables}/sbin/ip6tables "$@"; }
+ # ipXtables() { ip4tables "$@"; ip6tables "$@"; }
+
+ # #
+ # # nat
+ # #
+
+ # # reset tables
+ # ipXtables -t nat -F
+ # ipXtables -t nat -X
+
+ # #
+ # #ipXtables -t nat -A PREROUTING -j REDIRECT ! -i retiolum -p tcp --dport ssh --to-ports 0
+ # ipXtables -t nat -A PREROUTING -j REDIRECT -p tcp --dport 11423 --to-ports ssh
+
+ # #
+ # # filter
+ # #
+
+ # # reset tables
+ # ipXtables -P INPUT DROP
+ # ipXtables -P FORWARD DROP
+ # ipXtables -F
+ # ipXtables -X
+
+ # # create custom chains
+ # ipXtables -N Retiolum
+
+ # # INPUT
+ # ipXtables -A INPUT -j ACCEPT -m conntrack --ctstate RELATED,ESTABLISHED
+ # ipXtables -A INPUT -j ACCEPT -i lo
+ # ipXtables -A INPUT -j ACCEPT -p tcp --dport ssh -m conntrack --ctstate NEW
+ # ipXtables -A INPUT -j ACCEPT -p tcp --dport http -m conntrack --ctstate NEW
+ # ipXtables -A INPUT -j ACCEPT -p tcp --dport tinc -m conntrack --ctstate NEW
+ # ipXtables -A INPUT -j Retiolum -i retiolum
+ # ${when log "ipXtables -A INPUT -j LOG --log-level info --log-prefix 'INPUT DROP '"}
+
+ # # FORWARD
+ # ${when log "ipXtables -A FORWARD -j LOG --log-level info --log-prefix 'FORWARD DROP '"}
+
+ # # Retiolum
+ # ip4tables -A Retiolum -j ACCEPT -p icmp --icmp-type echo-request
+ # ip6tables -A Retiolum -j ACCEPT -p ipv6-icmp -m icmp6 --icmpv6-type echo-request
+
+
+ # ${when log "ipXtables -A Retiolum -j LOG --log-level info --log-prefix 'REJECT '"}
+ # ipXtables -A Retiolum -j REJECT -p tcp --reject-with tcp-reset
+ # ip4tables -A Retiolum -j REJECT -p udp --reject-with icmp-port-unreachable
+ # ip4tables -A Retiolum -j REJECT --reject-with icmp-proto-unreachable
+ # ip6tables -A Retiolum -j REJECT -p udp --reject-with icmp6-port-unreachable
+ # ip6tables -A Retiolum -j REJECT
+
+ # '';
+}
diff --git a/lass/2configs/base.nix b/lass/2configs/base.nix
new file mode 100644
index 000000000..8d4a9c896
--- /dev/null
+++ b/lass/2configs/base.nix
@@ -0,0 +1,143 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+{
+ imports = [
+ ../../3modules/lass/iptables.nix
+ ../../2configs/lass/vim.nix
+ {
+ users.extraUsers =
+ mapAttrs (_: h: { hashedPassword = h; })
+ (import /root/src/secrets/hashedPasswords.nix);
+ }
+ {
+ users.extraUsers = {
+ root = {
+ openssh.authorizedKeys.keys = map readFile [
+ ../../Zpubkeys/lass.ssh.pub
+ ];
+ };
+ mainUser = {
+ name = "lass";
+ uid = 1337;
+ home = "/home/lass";
+ group = "users";
+ createHome = true;
+ useDefaultShell = true;
+ extraGroups = [
+ "audio"
+ "wheel"
+ ];
+ openssh.authorizedKeys.keys = map readFile [
+ ../../Zpubkeys/lass.ssh.pub
+ ];
+ };
+ };
+ }
+ ];
+
+ krebs = {
+ enable = true;
+ search-domain = "retiolum";
+ };
+
+ nix.useChroot = true;
+
+ users.mutableUsers = false;
+
+ boot.tmpOnTmpfs = true;
+ # see tmpfiles.d(5)
+ systemd.tmpfiles.rules = [
+ "d /tmp 1777 root root - -"
+ ];
+
+ # multiple-definition-problem when defining environment.variables.EDITOR
+ environment.extraInit = ''
+ EDITOR=vim
+ PAGER=most
+ '';
+
+ environment.systemPackages = with pkgs; [
+ nmap
+
+ git
+ most
+ rxvt_unicode.terminfo
+
+ #network
+ iptables
+ ];
+
+ programs.bash = {
+ enableCompletion = true;
+ interactiveShellInit = ''
+ HISTCONTROL='erasedups:ignorespace'
+ HISTSIZE=65536
+ HISTFILESIZE=$HISTSIZE
+
+ shopt -s checkhash
+ shopt -s histappend histreedit histverify
+ shopt -s no_empty_cmd_completion
+ 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 = ''
+ if test $UID = 0; then
+ PS1='\[\033[1;31m\]\w\[\033[0m\] '
+ elif test $UID = 1337; then
+ PS1='\[\033[1;32m\]\w\[\033[0m\] '
+ else
+ PS1='\[\033[1;33m\]\u@\w\[\033[0m\] '
+ fi
+ if test -n "$SSH_CLIENT"; then
+ PS1='\[\033[35m\]\h'" $PS1"
+ fi
+ '';
+ };
+
+ security.setuidPrograms = [
+ "sendmail"
+ ];
+
+ #services.gitolite = {
+ # enable = true;
+ # dataDir = "/home/gitolite";
+ # adminPubkey = config.sshKeys.lass.pub;
+ #};
+
+ services.openssh = {
+ enable = true;
+ hostKeys = [
+ # XXX bits here make no science
+ { bits = 8192; type = "ed25519"; path = "/etc/ssh/ssh_host_ed25519_key"; }
+ ];
+ };
+
+ services.journald.extraConfig = ''
+ SystemMaxUse=1G
+ RuntimeMaxUse=128M
+ '';
+
+ lass.iptables = {
+ enable = true;
+ tables = {
+ filter.INPUT.policy = "DROP";
+ filter.FORWARD.policy = "DROP";
+ filter.INPUT.rules = [
+ { predicate = "-m conntrack --ctstate RELATED,ESTABLISHED"; target = "ACCEPT"; precedence = 10001; }
+ { predicate = "-p icmp"; target = "ACCEPT"; precedence = 10000; }
+ { predicate = "-i lo"; target = "ACCEPT"; precedence = 9999; }
+ { predicate = "-p tcp --dport 22"; target = "ACCEPT"; precedence = 9998; }
+ ];
+ };
+ };
+
+}
diff --git a/lass/2configs/binary-caches.nix b/lass/2configs/binary-caches.nix
new file mode 100644
index 000000000..c2727520d
--- /dev/null
+++ b/lass/2configs/binary-caches.nix
@@ -0,0 +1,13 @@
+{ config, ... }:
+
+{
+ nix.sshServe.enable = true;
+ nix.sshServe.keys = [
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBF9SBNKE3Pw/ALwTfzpzs+j6Rpaf0kUy6FiPMmgNNNt root@mors"
+ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFCZSq5oLrokkh3F+MOdK5/nzVIEDvqyvfzLMNWmzsYD root@uriel"
+ ];
+ nix.binaryCaches = [
+ #"scp://nix-ssh@mors"
+ #"scp://nix-ssh@uriel"
+ ];
+}
diff --git a/lass/2configs/bird.nix b/lass/2configs/bird.nix
new file mode 100644
index 000000000..3fc265cd7
--- /dev/null
+++ b/lass/2configs/bird.nix
@@ -0,0 +1,13 @@
+{ config, ... }:
+
+{
+ config.services.bird = {
+ enable = true;
+ config = ''
+ router id 192.168.122.1;
+ protocol device {
+ scan time 10;
+ }
+ '';
+ };
+}
diff --git a/lass/2configs/bitcoin.nix b/lass/2configs/bitcoin.nix
new file mode 100644
index 000000000..d3bccbf5c
--- /dev/null
+++ b/lass/2configs/bitcoin.nix
@@ -0,0 +1,17 @@
+{ config, pkgs, ... }:
+
+{
+ environment.systemPackages = with pkgs; [
+ electrum
+ ];
+
+ users.extraUsers = {
+ bitcoin = {
+ name = "bitcoin";
+ description = "user for bitcoin stuff";
+ home = "/home/bitcoin";
+ useDefaultShell = true;
+ createHome = true;
+ };
+ };
+}
diff --git a/lass/2configs/browsers.nix b/lass/2configs/browsers.nix
new file mode 100644
index 000000000..8aecea925
--- /dev/null
+++ b/lass/2configs/browsers.nix
@@ -0,0 +1,67 @@
+{ config, pkgs, ... }:
+
+let
+ mainUser = config.users.extraUsers.mainUser;
+
+in {
+
+ nixpkgs.config.packageOverrides = pkgs : {
+ chromium = pkgs.chromium.override {
+ pulseSupport = true;
+ };
+ };
+
+ environment.systemPackages = with pkgs; [
+ firefox
+ ];
+
+ users.extraUsers = {
+ firefox = {
+ name = "firefox";
+ description = "user for running firefox";
+ home = "/home/firefox";
+ useDefaultShell = true;
+ extraGroups = [ "audio" ];
+ createHome = true;
+ };
+ chromium = {
+ name = "chromium";
+ description = "user for running chromium";
+ home = "/home/chromium";
+ useDefaultShell = true;
+ extraGroups = [ "audio" ];
+ createHome = true;
+ };
+ facebook = {
+ name = "facebook";
+ description = "user for running facebook in chromium";
+ home = "/home/facebook";
+ useDefaultShell = true;
+ extraGroups = [ "audio" ];
+ createHome = true;
+ };
+ google = {
+ name = "google";
+ description = "user for running google+/gmail in chromium";
+ home = "/home/google";
+ useDefaultShell = true;
+ createHome = true;
+ };
+ flash = {
+ name = "flash";
+ description = "user for running flash stuff";
+ home = "/home/flash";
+ useDefaultShell = true;
+ extraGroups = [ "audio" ];
+ createHome = true;
+ };
+ };
+
+ security.sudo.extraConfig = ''
+ ${mainUser.name} ALL=(firefox) NOPASSWD: ALL
+ ${mainUser.name} ALL=(chromium) NOPASSWD: ALL
+ ${mainUser.name} ALL=(facebook) NOPASSWD: ALL
+ ${mainUser.name} ALL=(google) NOPASSWD: ALL
+ ${mainUser.name} ALL=(flash) NOPASSWD: ALL
+ '';
+}
diff --git a/lass/2configs/chromium-patched.nix b/lass/2configs/chromium-patched.nix
new file mode 100644
index 000000000..715181778
--- /dev/null
+++ b/lass/2configs/chromium-patched.nix
@@ -0,0 +1,48 @@
+{ config, pkgs, ... }:
+
+#settings to test:
+#
+ #"ForceEphemeralProfiles": true,
+let
+ masterPolicy = pkgs.writeText "master.json" ''
+ {
+ "PasswordManagerEnabled": false,
+ "DefaultGeolocationSetting": 2,
+ "RestoreOnStartup": 1,
+ "AutoFillEnabled": false,
+ "BackgroundModeEnabled": false,
+ "DefaultBrowserSettingEnabled": false,
+ "SafeBrowsingEnabled": false,
+ "ExtensionInstallForcelist": [
+ "cjpalhdlnbpafiamejdnhcphjbkeiagm;https://clients2.google.com/service/update2/crx",
+ "ihlenndgcmojhcghmfjfneahoeklbjjh;https://clients2.google.com/service/update2/crx"
+ ]
+ }
+ '';
+
+ master_preferences = pkgs.writeText "master_preferences" ''
+ {
+ "browser": {
+ "custom_chrome_frame": true
+ },
+
+ "extensions": {
+ "theme": {
+ "id": "",
+ "use_system": true
+ }
+ }
+ }
+ '';
+in {
+ environment.etc."chromium/policies/managed/master.json".source = pkgs.lib.mkForce masterPolicy;
+
+ environment.systemPackages = [
+ #pkgs.chromium
+ (pkgs.lib.overrideDerivation pkgs.chromium (attrs: {
+ buildCommand = attrs.buildCommand + ''
+ touch $out/TEST123
+ '';
+ }))
+ ];
+}
diff --git a/lass/2configs/desktop-base.nix b/lass/2configs/desktop-base.nix
new file mode 100644
index 000000000..9b98e4a8b
--- /dev/null
+++ b/lass/2configs/desktop-base.nix
@@ -0,0 +1,63 @@
+{ config, pkgs, ... }:
+
+let
+ mainUser = config.users.extraUsers.mainUser;
+in {
+ imports = [
+ ./base.nix
+ ];
+
+ time.timeZone = "Europe/Berlin";
+
+ virtualisation.libvirtd.enable = true;
+
+ hardware.pulseaudio = {
+ enable = true;
+ systemWide = true;
+ };
+
+ programs.ssh.startAgent = false;
+
+ security.setuidPrograms = [ "slock" ];
+
+ services.printing = {
+ enable = true;
+ drivers = [ pkgs.foomatic_filters ];
+ };
+
+ environment.systemPackages = with pkgs; [
+
+ powertop
+
+ #window manager stuff
+ haskellPackages.xmobar
+ haskellPackages.yeganesh
+ dmenu2
+ xlibs.fontschumachermisc
+ ];
+
+ fonts.fonts = [
+ pkgs.xlibs.fontschumachermisc
+ ];
+
+ services.xserver = {
+ enable = true;
+
+ windowManager.xmonad.extraPackages = hspkgs: with hspkgs; [
+ X11-xshape
+ ];
+ windowManager.xmonad.enable = true;
+ windowManager.xmonad.enableContribAndExtras = true;
+ windowManager.default = "xmonad";
+ desktopManager.default = "none";
+ desktopManager.xterm.enable = false;
+ displayManager.slim.enable = true;
+ displayManager.auto.enable = true;
+ displayManager.auto.user = mainUser.name;
+
+ layout = "us";
+ xkbModel = "evdev";
+ xkbVariant = "altgr-intl";
+ };
+
+}
diff --git a/lass/2configs/elster.nix b/lass/2configs/elster.nix
new file mode 100644
index 000000000..1edd01896
--- /dev/null
+++ b/lass/2configs/elster.nix
@@ -0,0 +1,20 @@
+{ config, pkgs, ... }:
+
+let
+ mainUser = config.users.extraUsers.mainUser;
+
+in {
+ users.extraUsers = {
+ elster = {
+ name = "elster";
+ description = "user for running elster-online";
+ home = "/home/elster";
+ useDefaultShell = true;
+ extraGroups = [];
+ createHome = true;
+ };
+ };
+ security.sudo.extraConfig = ''
+ ${mainUser.name} ALL=(elster) NOPASSWD: ALL
+ '';
+}
diff --git a/lass/2configs/fastpoke-pages.nix b/lass/2configs/fastpoke-pages.nix
new file mode 100644
index 000000000..74e92ccc3
--- /dev/null
+++ b/