diff options
Diffstat (limited to 'jeschli')
| -rw-r--r-- | jeschli/1systems/brauerei/config.nix | 30 | ||||
| -rw-r--r-- | jeschli/2configs/emacs.nix | 2 | ||||
| -rw-r--r-- | jeschli/2configs/xdg.nix | 14 | ||||
| -rw-r--r-- | jeschli/2configs/xserver/Xmodmap.nix | 27 | ||||
| -rw-r--r-- | jeschli/2configs/xserver/Xresources.nix | 52 | ||||
| -rw-r--r-- | jeschli/2configs/xserver/default.nix | 141 | ||||
| -rw-r--r-- | jeschli/2configs/xserver/xserver.conf.nix | 40 | ||||
| -rw-r--r-- | jeschli/default.nix | 6 | 
8 files changed, 299 insertions, 13 deletions
| diff --git a/jeschli/1systems/brauerei/config.nix b/jeschli/1systems/brauerei/config.nix index 1203720..49f439a 100644 --- a/jeschli/1systems/brauerei/config.nix +++ b/jeschli/1systems/brauerei/config.nix @@ -6,6 +6,8 @@      ./hardware-configuration.nix      <stockholm/jeschli/2configs/urxvt.nix>      <stockholm/jeschli/2configs/emacs.nix> +    <stockholm/jeschli/2configs/xdg.nix> +    <stockholm/jeschli/2configs/xserver>    ];    krebs.build.host = config.krebs.hosts.brauerei; @@ -57,7 +59,6 @@      terminator      tmux      wget -  #  rxvt_unicode    # editors      emacs    # internet @@ -65,6 +66,7 @@      chromium      google-chrome    # programming languages +    exercism      go      gcc      ghc @@ -73,6 +75,9 @@    # go tools      golint      gotools +  # rust +    cargo +    rustc    # dev tools      gnumake      jetbrains.pycharm-professional @@ -105,8 +110,8 @@    # services.printing.enable = true;    # Enable the X11 windowing system. -  services.xserver.enable = true; -  services.xserver.layout = "us"; +  # services.xserver.enable = true; +  # services.xserver.layout = "us";    # services.xserver.xkbOptions = "eurosign:e";    # Enable touchpad support. @@ -115,18 +120,18 @@    # Enable the KDE Desktop Environment.    # services.xserver.displayManager.sddm.enable = true;    # services.xserver.desktopManager.plasma5.enable = true; -  services.xserver.displayManager.sddm.enable = true; -  services.xserver.windowManager.xmonad.enable = true; -  services.xserver.windowManager.xmonad.enableContribAndExtras = true; -# +  #  services.xserver.displayManager.sddm.enable = true; +  #  services.xserver.windowManager.xmonad.enable = true; +  #  services.xserver.windowManager.xmonad.enableContribAndExtras = true; +  #    # Define a user account. Don't forget to set a password with ‘passwd’. -  users.extraUsers.jeschli = { +  users.extraUsers.jeschli = { # TODO: define as krebs.users      isNormalUser = true;      uid = 1000;    };    users.extraUsers.jamie = {      isNormalUser = true; -    uid = 1001; +    uid = 1001; # TODO genid    };    users.users.root.openssh.authorizedKeys.keys = [ @@ -139,4 +144,11 @@    # should.    system.stateVersion = "17.09"; # Did you read the comment? +  hardware.trackpoint = { +    enable = true; +    sensitivity = 220; +    speed = 0; +    emulateWheel = true; +  }; +  } diff --git a/jeschli/2configs/emacs.nix b/jeschli/2configs/emacs.nix index 2286baa..4c52432 100644 --- a/jeschli/2configs/emacs.nix +++ b/jeschli/2configs/emacs.nix @@ -53,9 +53,9 @@ let    '';    dotEmacs = pkgs.writeText "dot-emacs" ''      ${packageRepos} -    ${windowCosmetics}      ${orgMode}      ${recentFiles} +    ${windowCosmetics}    '';    emacsWithCustomPackages = (pkgs.emacsPackagesNgGen pkgs.emacs).emacsWithPackages (epkgs: [      epkgs.melpaStablePackages.magit diff --git a/jeschli/2configs/xdg.nix b/jeschli/2configs/xdg.nix new file mode 100644 index 0000000..18bac9b --- /dev/null +++ b/jeschli/2configs/xdg.nix @@ -0,0 +1,14 @@ +{ config, lib, pkgs, ... }: + +with import <stockholm/lib>; + +{ +  environment.variables.XDG_RUNTIME_DIR = "/run/xdg/$LOGNAME"; + +  systemd.tmpfiles.rules = let +    forUsers = flip map users; +    isUser = { name, group, ... }: +      name == "root" || hasSuffix "users" group; +    users = filter isUser (mapAttrsToList (_: id) config.users.users); +  in forUsers (u: "d /run/xdg/${u.name} 0700 ${u.name} ${u.group} -"); +} diff --git a/jeschli/2configs/xserver/Xmodmap.nix b/jeschli/2configs/xserver/Xmodmap.nix new file mode 100644 index 0000000..d2b1b26 --- /dev/null +++ b/jeschli/2configs/xserver/Xmodmap.nix @@ -0,0 +1,27 @@ +{ config, pkgs, ... }: + +with import <stockholm/lib>; + +pkgs.writeText "Xmodmap" '' +  !keycode 66 = Caps_Lock +  !remove Lock = Caps_Lock +  clear Lock + +  ! caps lock +  keycode  66 = Mode_switch + +  keycode  13 = 4 dollar EuroSign cent +  keycode  30 = u U udiaeresis Udiaeresis +  keycode  32 = o O odiaeresis Odiaeresis +  keycode  38 = a A adiaeresis Adiaeresis +  keycode  39 = s S ssharp + +  keycode  33 = p P Greek_pi Greek_PI +  keycode  46 = l L Greek_lambda Greek_LAMBDA + +  keycode  54 = c C cacute Cacute + +  !                       BULLET OPERATOR +  keycode 17 = 8 asterisk U2219 +  keycode 27 = r R r U211D +'' diff --git a/jeschli/2configs/xserver/Xresources.nix b/jeschli/2configs/xserver/Xresources.nix new file mode 100644 index 0000000..e433a85 --- /dev/null +++ b/jeschli/2configs/xserver/Xresources.nix @@ -0,0 +1,52 @@ +{ config, lib, pkgs, ... }: + +with import <stockholm/lib>; + +pkgs.writeText "Xresources" /* xdefaults */ '' +  URxvt*cutchars: "\\`\"'&()*,;<=>?@[]^{|}‘’" +  URxvt*eightBitInput: false +  URxvt*font: -*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1 +  URxvt*boldFont: -*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1 +  URxvt*scrollBar: false +  URxvt*background: #050505 +  URxvt*foreground: #d0d7d0 +  URxvt*cursorColor: #f042b0 +  URxvt*cursorColor2: #f0b000 +  URxvt*cursorBlink: off +  URxvt*jumpScroll: true +  URxvt*allowSendEvents: false +  URxvt*charClass: 33:48,37:48,45-47:48,64:48,38:48,61:48,63:48 +  URxvt*cutNewline: False +  URxvt*cutToBeginningOfLine: False + +  URxvt*color0: #232342 +  URxvt*color3: #c07000 +  URxvt*color4: #4040c0 +  URxvt*color7: #c0c0c0 +  URxvt*color8: #707070 +  URxvt*color9: #ff6060 +  URxvt*color10: #70ff70 +  URxvt*color11: #ffff70 +  URxvt*color12: #7070ff +  URxvt*color13: #ff50ff +  URxvt*color14: #70ffff +  URxvt*color15: #ffffff + +  URxvt*iso14755: False + +  URxvt*urgentOnBell: True +  URxvt*visualBell: True + +  ! ref https://github.com/muennich/urxvt-perls +  URxvt*perl-ext: default,url-select +  URxvt*keysym.M-u: perl:url-select:select_next +  URxvt*url-select.underline: true +  URxvt*colorUL: #4682B4 +  URxvt.perl-lib: ${pkgs.urxvt_perls}/lib/urxvt/perl +  URxvt*saveLines: 10000 + +  root-urxvt*background: #230000 +  root-urxvt*foreground: #e0c0c0 +  root-urxvt*BorderColor: #400000 +  root-urxvt*color0: #800000 +'' diff --git a/jeschli/2configs/xserver/default.nix b/jeschli/2configs/xserver/default.nix new file mode 100644 index 0000000..df06000 --- /dev/null +++ b/jeschli/2configs/xserver/default.nix @@ -0,0 +1,141 @@ +{ config, pkgs, ... }@args: +with import <stockholm/lib>; +let +  cfg = { +    cacheDir = cfg.dataDir; +    configDir = "/var/empty"; +    dataDir = "/run/xdg/${cfg.user.name}/xmonad"; +    user = config.krebs.users.jeschli; +  }; +in { + +  environment.systemPackages = [ +    pkgs.font-size +    pkgs.gitAndTools.qgit +    pkgs.mpv +    pkgs.sxiv +    pkgs.xdotool +    pkgs.xsel +    pkgs.zathura +  ]; + +  fonts.fonts = [ +    pkgs.xlibs.fontschumachermisc +  ]; + +  # TODO dedicated group, i.e. with a single user [per-user-setuid] +  # TODO krebs.setuid.slock.path vs /run/wrappers/bin +  krebs.setuid.slock = { +    filename = "${pkgs.slock}/bin/slock"; +    group = "wheel"; +    envp = { +      DISPLAY = ":${toString config.services.xserver.display}"; +      USER = cfg.user.name; +    }; +  }; + +  services.xserver = { +   +    # Don't install feh into systemPackages +    # refs <nixpkgs/nixos/modules/services/x11/desktop-managers> +    desktopManager.session = mkForce []; +   +    enable = true; +    display = 11; +    tty = 11; +   +    synaptics = { +      enable = true; +      twoFingerScroll = true; +      accelFactor = "0.035"; +    }; +  }; + +  systemd.services.display-manager.enable = false; + +  systemd.services.xmonad = { +    wantedBy = [ "multi-user.target" ]; +    requires = [ "xserver.service" ]; +    environment = { +      DISPLAY = ":${toString config.services.xserver.display}"; + +      XMONAD_CACHE_DIR = cfg.cacheDir; +      XMONAD_CONFIG_DIR = cfg.configDir; +      XMONAD_DATA_DIR = cfg.dataDir; + +      XMONAD_STARTUP_HOOK = pkgs.writeDash "xmonad-startup-hook" '' +        ${pkgs.xorg.xhost}/bin/xhost +LOCAL: & +        ${pkgs.xorg.xmodmap}/bin/xmodmap ${import ./Xmodmap.nix args} & +        ${pkgs.xorg.xrdb}/bin/xrdb ${import ./Xresources.nix args} & +        ${pkgs.xorg.xsetroot}/bin/xsetroot -solid '#1c1c1c' & +        wait +      ''; + +      # XXX JSON is close enough :) +      XMONAD_WORKSPACES0_FILE = pkgs.writeText "xmonad.workspaces0" (toJSON [ +        "dashboard" # we start here +        "stockholm" +        "pycharm" +        "chromium" +        "iRC" +        "git" +        "hipbird" +      ]); +    }; +    serviceConfig = { +      SyslogIdentifier = "xmonad"; +      ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p ${toString [ +        "\${XMONAD_CACHE_DIR}" +        "\${XMONAD_CONFIG_DIR}" +        "\${XMONAD_DATA_DIR}" +      ]}"; +      ExecStart = "${pkgs.xmonad-jeschli}/bin/xmonad"; +      ExecStop = "${pkgs.xmonad-jeschli}/bin/xmonad --shutdown"; +      User = cfg.user.name; +      WorkingDirectory = cfg.user.home; +    }; +  }; + +  systemd.services.xserver = { +    after = [ +      "systemd-udev-settle.service" +      "local-fs.target" +      "acpid.service" +    ]; +    reloadIfChanged = true; +    environment = { +      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. +      LD_LIBRARY_PATH = concatStringsSep ":" ( +        [ "${pkgs.xorg.libX11}/lib" "${pkgs.xorg.libXext}/lib" ] +        ++ 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" +      ]; +    }; +  }; + +  systemd.services.urxvtd = { +    wantedBy = [ "multi-user.target" ]; +    reloadIfChanged = true; +    serviceConfig = { +      SyslogIdentifier = "urxvtd"; +      ExecReload = "${pkgs.coreutils}/bin/echo NOP"; +      ExecStart = "${pkgs.rxvt_unicode}/bin/urxvtd"; +      Restart = "always"; +      RestartSec = "2s"; +      StartLimitBurst = 0; +      User = cfg.user.name; +    }; +  }; +} diff --git a/jeschli/2configs/xserver/xserver.conf.nix b/jeschli/2configs/xserver/xserver.conf.nix new file mode 100644 index 0000000..6f34e01 --- /dev/null +++ b/jeschli/2configs/xserver/xserver.conf.nix @@ -0,0 +1,40 @@ +{ config, lib, pkgs, ... }: + +with import <stockholm/lib>; + +let +  cfg = config.services.xserver; +in + +pkgs.stdenv.mkDerivation { +  name = "xserver.conf"; + +  xfs = optionalString (cfg.useXFS != false) +    ''FontPath "${toString cfg.useXFS}"''; + +  inherit (cfg) config; + +  buildCommand = +    '' +      echo 'Section "Files"' >> $out +      echo $xfs >> $out + +      for i in ${toString config.fonts.fonts}; do +        if test "''${i:0:''${#NIX_STORE}}" == "$NIX_STORE"; then +          for j in $(find $i -name fonts.dir); do +            echo "  FontPath \"$(dirname $j)\"" >> $out +          done +        fi +      done + +      for i in $(find ${toString cfg.modules} -type d); do +        if test $(echo $i/*.so* | wc -w) -ne 0; then +          echo "  ModulePath \"$i\"" >> $out +        fi +      done + +      echo 'EndSection' >> $out + +      echo "$config" >> $out +    ''; +} diff --git a/jeschli/default.nix b/jeschli/default.nix index 7886fef..b579327 100644 --- a/jeschli/default.nix +++ b/jeschli/default.nix @@ -1,9 +1,9 @@ -_: +{ pkgs, ... }:  {    imports = [      ../krebs      ./2configs -#    ./3modules -#    ./5pkgs    ]; + +  nixpkgs.config.packageOverrides = import ./5pkgs pkgs;  } | 
