about summary refs log tree commit diff
path: root/modules/user/aszlig/profiles
diff options
context:
space:
mode:
Diffstat (limited to 'modules/user/aszlig/profiles')
-rw-r--r--modules/user/aszlig/profiles/base.nix101
-rw-r--r--modules/user/aszlig/profiles/workstation/default.nix178
-rw-r--r--modules/user/aszlig/profiles/workstation/packages.nix92
3 files changed, 371 insertions, 0 deletions
diff --git a/modules/user/aszlig/profiles/base.nix b/modules/user/aszlig/profiles/base.nix
new file mode 100644
index 00000000..8f31467e
--- /dev/null
+++ b/modules/user/aszlig/profiles/base.nix
@@ -0,0 +1,101 @@
+{ config, pkgs, lib, ... }:
+
+let
+  cfg = config.vuizvui.user.aszlig.profiles.base;
+
+in {
+  options.vuizvui.user.aszlig.profiles.base = {
+    enable = lib.mkEnableOption "Base profile for aszlig";
+  };
+
+  config = lib.mkIf cfg.enable {
+    nix = {
+      useChroot = true;
+      readOnlyStore = true;
+      buildCores = 0;
+      extraOptions = ''
+        auto-optimise-store = true
+        log-servers = https://headcounter.org/hydra/log
+      '';
+    };
+
+    boot.loader.grub = {
+      enable = true;
+      version = 2;
+    };
+
+    hardware.cpu.intel.updateMicrocode = true;
+
+    users.defaultUserShell = "/var/run/current-system/sw/bin/zsh";
+
+    networking.wireless.enable = false;
+    networking.firewall.enable = false;
+    networking.useNetworkd = true;
+
+    i18n.consoleKeyMap = "dvorak";
+    i18n.consoleFont = "lat9w-16";
+
+    programs.ssh.startAgent = false;
+    programs.ssh.extraConfig = ''
+      ServerAliveInterval 60
+    '';
+
+    vuizvui.user.aszlig.programs.vim.enable = true;
+    vuizvui.user.aszlig.programs.zsh.enable = true;
+    vuizvui.enableGlobalNixpkgsConfig = true;
+
+    services.nixosManual.showManual = false;
+
+    services.journald.extraConfig = ''
+      MaxRetentionSec=3month
+    '';
+
+    environment.systemPackages = with pkgs; [
+      binutils
+      cacert
+      file
+      htop
+      iotop
+      psmisc
+      unrar
+      unzip
+      vlock
+      wget
+      xz
+    ];
+
+    nixpkgs.config = {
+      pulseaudio = true;
+      chromium.enablePepperFlash = true;
+      firefox.jre = true;
+
+      # Needed for CPU microcode
+      allowUnfree = true;
+
+      allowBroken = true;
+
+      packageOverrides = pkgs: {
+        beets = pkgs.beets.override {
+          enableAlternatives = true;
+        };
+        miro = pkgs.miro.override {
+          enableBonjour = true;
+        };
+        netrw = pkgs.netrw.override {
+          checksumType = "mhash";
+        };
+        nix = pkgs.nixUnstable;
+        uqm = pkgs.uqm.override {
+          use3DOVideos = true;
+          useRemixPacks = true;
+        };
+        w3m = pkgs.w3m.override {
+          graphicsSupport = true;
+        };
+      };
+    };
+
+    system.fsPackages = with pkgs; [ sshfsFuse ];
+    time.timeZone = "Europe/Berlin";
+  };
+}
diff --git a/modules/user/aszlig/profiles/workstation/default.nix b/modules/user/aszlig/profiles/workstation/default.nix
new file mode 100644
index 00000000..2e0d8a40
--- /dev/null
+++ b/modules/user/aszlig/profiles/workstation/default.nix
@@ -0,0 +1,178 @@
+{ pkgs, config, lib, ... }:
+
+let
+  cfg = config.vuizvui.user.aszlig.profiles.workstation;
+  randrHeads = config.services.xserver.xrandrHeads;
+
+in {
+  options.vuizvui.user.aszlig.profiles.workstation = {
+    enable = lib.mkEnableOption "Workstation profile for aszlig";
+  };
+
+  config = lib.mkIf cfg.enable {
+    vuizvui.user.aszlig.profiles.base.enable = true;
+
+    boot.kernelParams = [ "zswap.enabled=1" "panic=1800" ];
+    boot.cleanTmpDir = true;
+
+    environment.systemPackages = with lib; let
+      mkRandrConf = acc: name: acc ++ singleton {
+        inherit name;
+        value = "--output '${name}' --preferred"
+              + optionalString (acc != []) " --right-of '${(head acc).name}'";
+      };
+      randrConf = map (getAttr "value") (foldl mkRandrConf [] randrHeads);
+    in singleton (pkgs.writeScriptBin "xreset" ''
+      #!${pkgs.stdenv.shell}
+      ${pkgs.xorg.xrandr}/bin/xrandr ${concatStringsSep " " randrConf}
+    '') ++ import ./packages.nix pkgs;
+
+    hardware = {
+      pulseaudio.enable = true;
+      opengl = {
+        driSupport32Bit = true;
+        s3tcSupport = true;
+      };
+    };
+
+    fonts = {
+      enableCoreFonts = true;
+      enableFontDir = true;
+      enableGhostscriptFonts = true;
+      fonts = [
+        pkgs.dosemu_fonts
+        pkgs.liberation_ttf
+      ];
+    };
+
+    vuizvui.user.aszlig.services.i3.enable = true;
+    vuizvui.user.aszlig.services.slim.enable = true;
+    vuizvui.user.aszlig.services.vlock.enable = true;
+
+    vuizvui.user.aszlig.programs.gajim.enable = true;
+    vuizvui.user.aszlig.programs.mpv.enable = true;
+    vuizvui.user.aszlig.programs.taskwarrior.enable = true;
+    vuizvui.user.aszlig.programs.xpdf.enable = true;
+
+    vuizvui.user.aszlig.programs.git.enable = true;
+    vuizvui.user.aszlig.programs.git.config = {
+      color.ui = "auto";
+      merge.tool = "vimdiff3";
+      user.email = "aszlig@redmoonstudios.org";
+      user.name = "aszlig";
+      user.signkey = "8C2DC961";
+      gpg.program = "${pkgs.gnupg}/bin/gpg2";
+      push.default = "current";
+      tar."tar.xz".command = "${pkgs.xz}/bin/xz -c";
+      rebase.autosquash = true;
+      rerere.enabled = true;
+      rerere.autoupdate = true;
+      commit.gpgsign = true;
+
+      alias.backport = let
+        release = "14.04";
+        message = "Merge release ${release} into backports.";
+      in "!git fetch upstream release-${release} &&"
+       + " git merge -m \"${message}\" --log FETCH_HEAD";
+    };
+
+    vuizvui.hardware.gameController."03000000ff1100004133000010010000" = {
+      name = "PS2 Controller";
+      mapping = {
+        a = "b2";
+        b = "b1";
+        x = "b3";
+        y = "b0";
+        back = "b8";
+        start = "b9";
+        leftshoulder = "b6";
+        rightshoulder = "b7";
+        leftstick = "b10";
+        rightstick = "b11";
+        leftx = "a0";
+        lefty = "a1";
+        rightx = "a3";
+        righty = "a2";
+        lefttrigger = "b4";
+        righttrigger = "b5";
+        dpup = "h0.1";
+        dpleft = "h0.8";
+        dpdown = "h0.4";
+        dpright = "h0.2";
+      };
+    };
+
+    services = {
+      openssh = {
+        enable = true;
+        permitRootLogin = "without-password";
+      };
+
+      xfs.enable = false;
+
+      gpm = {
+        enable = true;
+        protocol = "exps2";
+      };
+
+      printing.enable = true;
+      printing.drivers = [ pkgs.gutenprint pkgs.hplip ];
+
+      udev.extraRules = ''
+        # aXbo S.P.A.C.
+        SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", \
+          ATTRS{serial}=="0001", OWNER="aszlig", SYMLINK+="axbo"
+        # Enttec DMX device
+        SUBSYSTEM=="usb*|tty", ACTION=="add|change", ATTRS{idVendor}=="0403", \
+          ATTRS{idProduct}=="6001", OWNER="aszlig"
+      '';
+
+      xserver = {
+        enable = true;
+        layout = "dvorak";
+
+        startGnuPGAgent = true;
+
+        displayManager.sessionCommands = ''
+          ${pkgs.redshift}/bin/redshift -l 48.428404:10.866007 &
+          ${pkgs.xorg.xrdb}/bin/xrdb "${pkgs.writeText "xrdb.config" ''
+            Rxvt*font:                 vga
+            Rxvt*background:           black
+            Rxvt*foreground:           grey
+            Rxvt*scrollBar:            false
+            Rxvt*saveLines:            2000
+
+            Rxvt*keysym.Home:          \033[1~
+            Rxvt*keysym.End:           \033[4~
+
+            Rxvt*urgentOnBell:         true
+
+            XTerm*font:                vga
+            XTerm*saveLines:           10000
+            XTerm*bellIsUrgent:        true
+            XTerm*background:          black
+            XTerm*foreground:          grey
+
+            XTerm*backarrowKeyIsErase: true
+            XTerm*ptyInitialErase:     true
+          ''}"
+        '';
+
+        desktopManager.default = "none";
+        desktopManager.xterm.enable = false;
+      };
+    };
+
+    virtualisation.virtualbox.host.enable = true;
+
+    users.extraUsers.aszlig = {
+      uid = 1000;
+      description = "aszlig";
+      group = "users";
+      extraGroups = [ "wheel" "video" ];
+      home = "/home/aszlig";
+      useDefaultShell = true;
+      createHome = true;
+    };
+  };
+}
diff --git a/modules/user/aszlig/profiles/workstation/packages.nix b/modules/user/aszlig/profiles/workstation/packages.nix
new file mode 100644
index 00000000..8ba1d309
--- /dev/null
+++ b/modules/user/aszlig/profiles/workstation/packages.nix
@@ -0,0 +1,92 @@
+pkgs: with pkgs; [
+  vuizvui.aacolorize
+  abook
+  acpi
+  apg
+  ascii
+  aspellDicts.de
+  aspellDicts.en
+  vuizvui.axbo
+  bc
+  beets
+  chromiumBeta
+  dash
+  dos2unix
+  erlang
+  fbida
+  ffmpeg
+  figlet
+  firefox
+  flac
+  gdb
+  ghostscript
+  gimp
+  glxinfo
+  gnumake
+  gnupg1compat
+  gpodder
+  graphviz
+  haskellPackages.cabal2nix
+  haskellPackages.cabal-install
+  haskellPackages.hlint
+  haskellPackages.yesod-bin
+  haxe
+  hexedit
+  i3
+  i3lock
+  imagemagick
+  jwhois
+  keychain
+  lastwatch
+  lftp
+  ltrace
+  manpages
+  mmv
+  mosh
+  mp3info
+  mpg321
+  mtr
+  mumble
+  mutt
+  ncdu
+  neko
+  netrw
+  nix-prefetch-scripts
+  nix-repl
+  vuizvui.nixops
+  nixpkgs-lint
+  nmap
+  openssh
+  openssl
+  p7zip
+  pavucontrol
+  picard
+  posix_man_pages
+  pulseaudioLight
+  vuizvui.pvolctrl
+  python
+  python3
+  pythonPackages.hetzner
+  pythonPackages.pep8
+  pythonPackages.polib
+  rlwrap
+  rtorrent
+  samplicator
+  screen
+  scrot
+  socat
+  sox
+  sqlite
+  strace
+  surfraw
+  telnet
+  vuizvui.tomahawk
+  unzip
+  uqm
+  valgrind
+  vbindiff
+  vorbisTools
+  w3m
+  wireshark
+  youtubeDL
+]