summaryrefslogtreecommitdiffstats
path: root/lass
diff options
context:
space:
mode:
Diffstat (limited to 'lass')
-rw-r--r--lass/1systems/helios/config.nix11
-rw-r--r--lass/1systems/prism/config.nix2
-rw-r--r--lass/2configs/baseX.nix40
-rw-r--r--lass/2configs/browsers.nix43
-rw-r--r--lass/2configs/copyq.nix4
-rw-r--r--lass/2configs/dcso-dev.nix48
-rw-r--r--lass/2configs/hw/gpd-pocket.nix20
-rw-r--r--lass/2configs/mail.nix1
-rw-r--r--lass/2configs/repo-sync.nix25
-rw-r--r--lass/2configs/urxvt.nix42
-rw-r--r--lass/2configs/wine.nix22
-rw-r--r--lass/2configs/xresources.nix63
-rw-r--r--lass/3modules/default.nix1
-rw-r--r--lass/3modules/screenlock.nix2
-rw-r--r--lass/3modules/xresources.nix15
-rw-r--r--lass/3modules/xserver/default.nix101
-rw-r--r--lass/3modules/xserver/xserver.conf.nix40
-rw-r--r--lass/5pkgs/default.nix5
-rw-r--r--lass/5pkgs/xmonad-lass.nix41
-rw-r--r--lass/source.nix2
20 files changed, 345 insertions, 183 deletions
diff --git a/lass/1systems/helios/config.nix b/lass/1systems/helios/config.nix
index eb45d92ec..b14ef2a3e 100644
--- a/lass/1systems/helios/config.nix
+++ b/lass/1systems/helios/config.nix
@@ -13,6 +13,9 @@ with import <stockholm/lib>;
# TODO fix krebs.git.rules.[definition 2-entry 2].lass not defined
#<stockholm/lass/2configs/git.nix>
<stockholm/lass/2configs/dcso-vpn.nix>
+ <stockholm/lass/2configs/virtualbox.nix>
+ <stockholm/lass/2configs/dcso-dev.nix>
+ <stockholm/lass/2configs/steam.nix>
{ # automatic hardware detection
boot.initrd.availableKernelModules = [ "xhci_pci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
boot.kernelModules = [ "kvm-intel" ];
@@ -60,6 +63,13 @@ with import <stockholm/lib>;
maxTime = 9001;
};
}
+ {
+ #urban terror port
+ krebs.iptables.tables.filter.INPUT.rules = [
+ { predicate = "-p tcp --dport 27960"; target = "ACCEPT"; }
+ { predicate = "-p udp --dport 27960"; target = "ACCEPT"; }
+ ];
+ }
];
krebs.build.host = config.krebs.hosts.helios;
@@ -91,7 +101,6 @@ with import <stockholm/lib>;
environment.systemPackages = with pkgs; [
ag
vim
- rxvt_unicode
git
rsync
hashPassword
diff --git a/lass/1systems/prism/config.nix b/lass/1systems/prism/config.nix
index b7f0ea554..b18abf509 100644
--- a/lass/1systems/prism/config.nix
+++ b/lass/1systems/prism/config.nix
@@ -285,6 +285,8 @@ in {
{ predicate = "-p udp --dport 25565"; target = "ACCEPT"; }
];
}
+ <stockholm/krebs/2configs/reaktor-krebs.nix>
+ <stockholm/lass/2configs/dcso-dev.nix>
];
krebs.build.host = config.krebs.hosts.prism;
diff --git a/lass/2configs/baseX.nix b/lass/2configs/baseX.nix
index 1638264d9..32a9f66cf 100644
--- a/lass/2configs/baseX.nix
+++ b/lass/2configs/baseX.nix
@@ -7,9 +7,9 @@ in {
./mpv.nix
./power-action.nix
./copyq.nix
- ./xresources.nix
./livestream.nix
./dns-stuff.nix
+ ./urxvt.nix
{
hardware.pulseaudio = {
enable = true;
@@ -41,6 +41,11 @@ in {
default = "-*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-1";
};
};
+ config.services.xresources.resources.X = ''
+ *.font: ${config.lass.fonts.regular}
+ *.boldFont: ${config.lass.fonts.bold}
+ *.italicFont: ${config.lass.fonts.italic}
+ '';
}
];
@@ -64,9 +69,11 @@ in {
dic
dmenu
gi
+ git-preview
gitAndTools.qgit
- lm_sensors
haskellPackages.hledger
+ lm_sensors
+ mpv-poll
much
ncdu
nix-repl
@@ -74,7 +81,7 @@ in {
pavucontrol
powertop
push
- rxvt_unicode
+ rxvt_unicode_with-plugins
screengrab
slock
sxiv
@@ -97,26 +104,8 @@ in {
xlibs.fontschumachermisc
];
+ lass.xserver.enable = true;
services.xserver = {
- enable = true;
-
- desktopManager.xterm.enable = false;
- desktopManager.default = "none";
- displayManager.lightdm.enable = true;
- displayManager.lightdm.autoLogin = {
- enable = true;
- user = "lass";
- };
- windowManager.default = "xmonad";
- windowManager.session = [{
- name = "xmonad";
- start = ''
- ${pkgs.xorg.xhost}/bin/xhost +LOCAL:
- ${pkgs.xmonad-lass}/bin/xmonad &
- waitPID=$!
- '';
- }];
-
layout = "us";
xkbModel = "evdev";
xkbVariant = "altgr-intl";
@@ -127,12 +116,7 @@ in {
HandleLidSwitch=ignore
'';
- services.xserver.synaptics = {
- enable = true;
- twoFingerScroll = true;
- accelFactor = "0.035";
- };
-
services.urxvtd.enable = true;
+ services.xresources.enable = true;
lass.screenlock.enable = true;
}
diff --git a/lass/2configs/browsers.nix b/lass/2configs/browsers.nix
index 6c381863c..a858d3fec 100644
--- a/lass/2configs/browsers.nix
+++ b/lass/2configs/browsers.nix
@@ -5,19 +5,23 @@ let
mainUser = config.users.extraUsers.mainUser;
- browser-select = pkgs.writeScriptBin "browser-select" ''
- BROWSER=$(echo -e "${concatStringsSep "\\n" (attrNames config.lass.browser.paths)}" | ${pkgs.dmenu}/bin/dmenu)
+ browser-select = let
+ sortedPaths = sort (a: b: a.value.precedence > b.value.precedence)
+ (mapAttrsToList (name: value: { inherit name value; })
+ config.lass.browser.paths);
+ in pkgs.writeScriptBin "browser-select" ''
+ BROWSER=$(echo -e "${concatStringsSep "\\n" (map (getAttr "name") sortedPaths)}" | ${pkgs.dmenu}/bin/dmenu)
case $BROWSER in
${concatMapStringsSep "\n" (n: ''
- ${n})
- export BIN=${config.lass.browser.paths.${n}}/bin/${n}
+ ${n.name})
+ export BIN=${n.value.path}/bin/${n.name}
;;
- '') (attrNames config.lass.browser.paths)}
+ '') (sortedPaths)}
esac
$BIN "$@"
'';
- createChromiumUser = name: extraGroups:
+ createChromiumUser = name: extraGroups: precedence:
let
bin = pkgs.writeScriptBin name ''
/var/run/wrappers/bin/sudo -u ${name} -i ${pkgs.chromium}/bin/chromium $@
@@ -31,7 +35,7 @@ let
useDefaultShell = true;
createHome = true;
};
- lass.browser.paths.${name} = bin;
+ lass.browser.paths.${name}.path = bin;
security.sudo.extraConfig = ''
${mainUser.name} ALL=(${name}) NOPASSWD: ALL
'';
@@ -40,7 +44,7 @@ let
];
};
- createFirefoxUser = name: extraGroups:
+ createFirefoxUser = name: extraGroups: precedence:
let
bin = pkgs.writeScriptBin name ''
/var/run/wrappers/bin/sudo -u ${name} -i ${pkgs.firefox}/bin/firefox $@
@@ -54,7 +58,10 @@ let
useDefaultShell = true;
createHome = true;
};
- lass.browser.paths.${name} = bin;
+ lass.browser.paths.${name} = {
+ path = bin;
+ inherit precedence;
+ };
security.sudo.extraConfig = ''
${mainUser.name} ALL=(${name}) NOPASSWD: ALL
'';
@@ -79,14 +86,24 @@ in {
type = types.path;
};
options.lass.browser.paths = mkOption {
- type = with types; attrsOf path;
+ type = types.attrsOf (types.submodule ({
+ options = {
+ path = mkOption {
+ type = types.path;
+ };
+ precedence = mkOption {
+ type = types.int;
+ default = 0;
+ };
+ };
+ }));
};
}
- ( createFirefoxUser "ff" [ "audio" ] )
- ( createChromiumUser "cr" [ "video" "audio" ] )
+ ( createFirefoxUser "ff" [ "audio" ] 10 )
+ ( createChromiumUser "cr" [ "video" "audio" ] 9 )
+ ( createChromiumUser "gm" [ "video" "audio" ] 8 )
( createChromiumUser "wk" [ "video" "audio" ] )
( createChromiumUser "fb" [ "video" "audio" ] )
- ( createChromiumUser "gm" [ "video" "audio" ] )
( createChromiumUser "com" [ "video" "audio" ] )
];
}
diff --git a/lass/2configs/copyq.nix b/lass/2configs/copyq.nix
index fa01a99c9..cd10313fc 100644
--- a/lass/2configs/copyq.nix
+++ b/lass/2configs/copyq.nix
@@ -21,9 +21,9 @@ let
in {
systemd.services.copyq = {
wantedBy = [ "multi-user.target" ];
- requires = [ "display-manager.service" ];
+ requires = [ "xserver.service" ];
environment = {
- DISPLAY = ":0";
+ DISPLAY = ":${toString config.services.xserver.display}";
};
path = with pkgs; [
qt5.full
diff --git a/lass/2configs/dcso-dev.nix b/lass/2configs/dcso-dev.nix
new file mode 100644
index 000000000..b7fcc7aab
--- /dev/null
+++ b/lass/2configs/dcso-dev.nix
@@ -0,0 +1,48 @@
+{ config, lib, pkgs, ... }:
+
+let
+ mainUser = config.users.extraUsers.mainUser;
+ inherit (import <stockholm/lib>) genid;
+
+in {
+ users.extraUsers = {
+ dev = {
+ name = "dev";
+ uid = genid "dev";
+ description = "user for collaborative development";
+ home = "/home/dev";
+ useDefaultShell = true;
+ createHome = true;
+ openssh.authorizedKeys.keys = [
+ config.krebs.users.lass.pubkey
+ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDhQdDQFMxXOjbC+Avx3mlcFHqQpFUk/q9sO6ATA65jCV3YzN11vhZDDv54hABVS2h8TPXs7Lu3PCvK9qouASd2h4Ie9cExUmn50G/iwgFIODsCugVYBzVt1iwaAdwz1Hb9DKYXbVXanzVJjimmrrlQNvsyZg85lcnfyedpPX5ad+4FdSP68LHqEHC18LTitldR6V4P1omaKHlOtVpDgR/72tDgbtNZDBn3EU+TPk9OLTzjc6PinPw4iIvjEfiu14APwXpFDIqT7P7SjOEFpa0v/1z7dhxIy/Z9XbqyEdUfhv3PjZR5K2C+VzR7g6jVEVR2xFId51MpLv/Un4/lalbphBEw3I90Rr8tatOJiFhyrXbaKTcLqp1sIu05OxdPkm3hzfmLIhoKxhaIlXH7WQ9sAqxL1NAQ7O+J6yT4DMnwKzvpkkJjBaGtV84Pp1cccfNRH8XXID3FkWkrUpdgXWBpyLnRq4ilUJTajkU0GSdXkq8kLL3mWg9LPRTg3dmDj61ZB/qhjM61ppwHJvDRN9WI5HruXIU6nOQjh5yE2C/JZfLcsZD4Y1UDBy5/JSZrCVT2sQjFopkkYEkRCbX7oITHOH4iyRdxZkKWLUPboFrcmBpXO+owCEhO4JZrtfFWMC6qM++nrmiZWOrdIOIvdYHWluhKR2shlkisEKQP5pUqkw== markus.hihn@dcso.de"
+ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC1T5+2epslFARSnETdr4wdolA6ocJaD4H9tmz6BZFQKXlwIq+OMp+sSEdwYwW3Lu9+mNbBHPxVVJDWg/We9DXB0ezXPM5Bs1+FcehmkoGwkmgKaFCDt0sL+CfSnog/3wEkN21O/rQxVFqMmiJ7WUDGci6IKCFZ5ZjOsmmfHg5p3LYxU9xv33fNr2v+XauhrGbFtQ7eDz4kSywxN/aw73LN4d8em0V0UV8VPI3Qkw7MamDFwefA+K1TfK8pBzMeruU6N7HLuNkpkAp7kS+K4Zzd72aQtR37a5qMiFUbOxQ9B7iFypuPx0iu6ZwY1s/sM8t3kLmcDJ9O4FOTzlbpneet3as6iJ+Ckr/TlfKor2Tl5pWcXh2FXHoG8VUu5bYmIViJBrKihAlAQfQN0mJ9fdFTnCXVTtbYTy11s4eEVHgUlb7oSpgBnx5bnBONgApbsOX9zyoo8wz8KkZBcf1SQpkV5br8uUAHCcZtHuY6I3kKlv+8lJmgUipiYzMdTi7+dHa49gVEcEKL4ZnJ0msQkl4XT7JjKETLvumC4/TIqVuRu48wuYalkCR9OzxCsTXQ/msBJBztPdYLrEOXVb2HfzuCT+43UuMQ5rP/EoPy0TWQO9BaqfEXqvbOvWjVxj/GMvglQ2ChZTwHxwwTKB8qRVvJLnbZQwizQiSrkzjb6hRJfQ== u0_a165@localhost"
+ ];
+ packages = with pkgs; [
+ emacs25-nox
+
+ (pkgs.symlinkJoin {
+ name = "tmux";
+ paths = [
+ (pkgs.writeDashBin "tmux" ''
+ exec ${pkgs.tmux}/bin/tmux -f ${pkgs.writeText "tmux.conf" ''
+ set-option -g default-terminal screen-256color
+
+ #use session instead of windows
+ bind-key c new-session
+ bind-key p switch-client -p
+ bind-key n switch-client -n
+ bind-key C-s switch-client -l
+ ''} "$@"
+ '')
+ pkgs.tmux
+ ];
+ })
+ ];
+ };
+ };
+
+ security.sudo.extraConfig = ''
+ ${mainUser.name} ALL=(dev) NOPASSWD: ALL
+ '';
+}
diff --git a/lass/2configs/hw/gpd-pocket.nix b/lass/2configs/hw/gpd-pocket.nix
new file mode 100644
index 000000000..e3d212741
--- /dev/null
+++ b/lass/2configs/hw/gpd-pocket.nix
@@ -0,0 +1,20 @@
+{ pkgs, ... }:
+
+let
+ dummy_firmware = pkgs.writeTextFile {
+ name = "brcmfmac4356-pcie.txt";
+ text = builtins.readFile ./brcmfmac4356-pcie.txt;
+ destination = "/lib/firmware/brcm/brcmfmac4356-pcie.txt";
+ };
+in {
+ hardware.firmware = [ dummy_firmware ];
+
+ boot.kernelPackages = pkgs.linuxPackages_4_14;
+ boot.kernelParams = [
+ "fbcon=rotate:1"
+ ];
+ services.tlp.enable = true;
+ services.xserver.displayManager.sessionCommands = ''
+ (sleep 2 && ${pkgs.xorg.xrandr}/bin/xrandr --output DSI1 --rotate right)
+ '';
+}
diff --git a/lass/2configs/mail.nix b/lass/2configs/mail.nix
index 91127f737..962efaf3f 100644
--- a/lass/2configs/mail.nix
+++ b/lass/2configs/mail.nix
@@ -76,6 +76,7 @@ let
"INBOX" "notmuch://?query=tag:inbox \
and NOT to:nix-devel\
and NOT to:shackspace\
+ and NOT to:security\
and NOT to:c-base" \
"shack" "notmuch://?query=to:shackspace"\
"c-base" "notmuch://?query=to:c-base"\
diff --git a/lass/2configs/repo-sync.nix b/lass/2configs/repo-sync.nix
index f3ef23e67..98dbdc227 100644
--- a/lass/2configs/repo-sync.nix
+++ b/lass/2configs/repo-sync.nix
@@ -22,15 +22,22 @@ let
});
};
in {
- rules = with git; singleton {
- user = with config.krebs.users; [
- config.krebs.users."${config.networking.hostName}-repo-sync"
- lass
- lass-shodan
- ];
- repo = [ repo ];
- perm = push ''refs/*'' [ non-fast-forward create delete merge ];
- };
+ rules = with git; [
+ {
+ user = with config.krebs.users; [
+ config.krebs.users."${config.networking.hostName}-repo-sync"
+ lass
+ lass-shodan
+ ];
+ repo = [ repo ];
+ perm = push ''refs/*'' [ non-fast-forward create delete merge ];
+ }
+ {
+ user = attrValues config.krebs.users;
+ repo = [ repo ];
+ perm = fetch;
+ }
+ ];
repos."${name}" = repo;
};
diff --git a/lass/2configs/urxvt.nix b/lass/2configs/urxvt.nix
index 1358dde7a..ee50b3381 100644
--- a/lass/2configs/urxvt.nix
+++ b/lass/2configs/urxvt.nix
@@ -1,40 +1,32 @@
{ config, pkgs, ... }:
-
-let
- inherit (config.users.extraUsers) mainUser;
-
-in
+with import <stockholm/lib>;
{
- imports = [
- ../3modules/urxvtd.nix
- ../3modules/xresources.nix
- ];
-
- services.urxvtd = {
- enable = true;
- users = [ mainUser.name ];
- urxvtPackage = pkgs.rxvt_unicode_with-plugins;
- };
- services.xresources.enable = true;
+ services.urxvtd.enable = true;
+
services.xresources.resources.urxvt = ''
- URxvt*scrollBar: false
- URxvt*urgentOnBell: true
- URxvt*font: -*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-*
- URxvt*boldFont: -*-clean-*-*-*-*-*-*-*-*-*-*-iso10646-*
+ URxvt*SaveLines: 4096
+ URxvt*scrollBar: false
+ URxvt*urgentOnBell: true
URxvt.perl-ext-common: default,clipboard,url-select,keyboard-select
- URxvt.url-select.launcher: browser-select
+
+ ${optionalString (hasAttr "browser" config.lass)
+ "URxvt.url-select.launcher: ${config.lass.browser.select}/bin/browser-select"
+ }
+
URxvt.url-select.underline: true
URxvt.keysym.M-u: perl:url-select:select_next
URxvt.keysym.M-Escape: perl:keyboard-select:activate
URxvt.keysym.M-s: perl:keyboard-select:search
- URxvt.intensityStyles: false
+ URxvt.intensityStyles: false
- URxvt*background: #000000
- URxvt*foreground: #ffffff
+ URxvt*background: #000000
+ URxvt*foreground: #ffffff
!change unreadable blue
- URxvt*color4: #268bd2
+ URxvt*color4: #268bd2
+
+ URxvt*color0: #232342
'';
}
diff --git a/lass/2configs/wine.nix b/lass/2configs/wine.nix
index 0d2b731ca..d60b1feea 100644
--- a/lass/2configs/wine.nix
+++ b/lass/2configs/wine.nix
@@ -4,10 +4,6 @@ let
mainUser = config.users.extraUsers.mainUser;
in {
- krebs.per-user.wine.packages = with pkgs; [
- wine
- #(wineFull.override { wineBuild = "wine64"; })
- ];
users.users= {
wine = {
name = "wine";
@@ -19,9 +15,27 @@ in {
"video"
];
createHome = true;
+ packages = [
+ pkgs.wine
+ ];
+ };
+ wine64 = {
+ name = "wine64";
+ description = "user for running wine in 64bit";
+ home = "/home/wine64";
+ useDefaultShell = true;
+ extraGroups = [
+ "audio"
+ "video"
+ ];
+ createHome = true;
+ packages = [
+ (pkgs.wine.override { wineBuild = "wineWow"; })
+ ];
};
};
security.sudo.extraConfig = ''
${mainUser.name} ALL=(wine) NOPASSWD: ALL
+ ${mainUser.name} ALL=(wine64) NOPASSWD: ALL
'';
}
diff --git a/lass/2configs/xresources.nix b/lass/2configs/xresources.nix
deleted file mode 100644
index a3c54f3a1..000000000
--- a/lass/2configs/xresources.nix
+++ /dev/null
@@ -1,63 +0,0 @@
-{ config, pkgs, ... }:
-
-with import <stockholm/lib>;
-
-let
-
- xresources = pkgs.writeText "Xresources" ''
- URxvt*scrollBar: false
- URxvt*urgentOnBell: true
- URxvt*SaveLines: 4096
-
- URxvt.font: ${config.lass.fonts.regular}
- URxvt.boldFont: ${config.lass.fonts.bold}
- URxvt.italicFont: ${config.lass.fonts.italic}
-
- ! ref https://github.com/muennich/urxvt-perls
- URxvt.perl-lib: ${pkgs.urxvt_perls}/lib/urxvt/perl
- URxvt.perl-ext-common: default,clipboard,url-select,keyboard-select
- ${optionalString (hasAttr "browser" config.lass)
- "URxvt.url-select.launcher: ${config.lass.browser.select}/bin/browser-select"
- }
- URxvt.url-select.underline: true
- URxvt.keysym.M-u: perl:url-select:select_next
- URxvt.keysym.M-Escape: perl:keyboard-select:activate
- URxvt.keysym.M-s: perl:keyboard-select:search
-
- URxvt.intensityStyles: false
-
- URxvt*background: #000000
- URxvt*foreground: #d0d7d0
-
- URxvt*cursorColor: #f042b0
- URxvt*cursorColor2: #f0b000
- URxvt*cursorBlink: off
-
- URxvt*.pointerBlank: true
- URxvt*.pointerBlankDelay: 987654321
- URxvt*.pointerColor: #f042b0
- URxvt*.pointerColor2: #050505
-
- URxvt*color0: #232342
- '';
-
-in {
- systemd.services.xresources = {
- description = "xresources";
- wantedBy = [ "multi-user.target" ];
- after = [ "display-manager.service" ];
-
- environment = {
- DISPLAY = ":0";
- };
-
- restartIfChanged = true;
-
- serviceConfig = {
- Type = "simple";
- ExecStart = "${pkgs.xorg.xrdb}/bin/xrdb -merge ${xresources}";
- Restart = "on-failure";
- User = "lass";
- };
- };
-}
diff --git a/lass/3modules/default.nix b/lass/3modules/default.nix
index e14e39bc2..81b52c306 100644
--- a/lass/3modules/default.nix
+++ b/lass/3modules/default.nix
@@ -11,6 +11,7 @@ _:
./screenlock.nix
./umts.nix
./usershadow.nix
+ ./xserver
./xresources.nix
];
}
diff --git a/lass/3modules/screenlock.nix b/lass/3modules/screenlock.nix
index 06ca1f27d..e16ce9868 100644
--- a/lass/3modules/screenlock.nix
+++ b/lass/3modules/screenlock.nix
@@ -23,7 +23,7 @@ let
before = [ "sleep.target" ];
wantedBy = [ "sleep.target" ];
environment = {
- DISPLAY = ":0";
+ DISPLAY = ":${toString config.services.xserver.display}";
};
serviceConfig = {
SyslogIdentifier = "screenlock";
diff --git a/lass/3modules/xresources.nix b/lass/3modules/xresources.nix
index 074963022..017dbff2b 100644
--- a/lass/3modules/xresources.nix
+++ b/lass/3modules/xresources.nix
@@ -4,16 +4,13 @@
#prefix with Attribute Name
#ex: urxvt
-#
-#
with builtins;
with lib;
let
- inherit (import ../../tv/4lib { inherit pkgs lib; }) shell-escape;
- inherit (pkgs) writeScript;
+ inherit (pkgs) writeScript writeText;
in
@@ -46,12 +43,16 @@ in
config =
let
cfg = config.services.xresources;
- xres = concatStringsSep "\n" (attrValues cfg.resources);
+ xres = writeText "xresources" (concatStringsSep "\n" (attrValues cfg.resources));
in mkIf cfg.enable {
services.xserver.displayManager.sessionCommands = ''
- echo ${shell-escape xres} | xrdb -merge
+ ${pkgs.xorg.xrdb}/bin/xrdb -merge ${xres}
'';
+ environment.systemPackages = [
+ (pkgs.writeDashBin "updateXresources" ''
+ ${pkgs.xorg.xrdb}/bin/xrdb -merge ${xres}
+ '')
+ ];
};
-
}
diff --git a/lass/3modules/xserver/default.nix b/lass/3modules/xserver/default.nix
new file mode 100644
index 000000000..462c6deef
--- /dev/null
+++ b/lass/3modules/xserver/default.nix
@@ -0,0 +1,101 @@
+{ config, pkgs, ... }@args:
+with import <stockholm/lib>;
+let
+
+ out = {
+ options.lass.xserver = api;
+ config = mkIf cfg.enable imp;
+ };
+
+ user = config.krebs.build.user;
+
+ cfg = config.lass.xserver;
+ xcfg = config.services.xserver;
+ api = {
+ enable = mkEnableOption "lass xserver";
+ };
+ imp = {
+
+ 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;
+ };
+
+ systemd.services.display-manager.enable = false;
+
+ systemd.services.xmonad = {
+ wantedBy = [ "multi-user.target" ];
+ requires = [ "xserver.service" ];
+ environment = {
+ DISPLAY = ":${toString xcfg.display}";
+
+ XMONAD_STARTUP_HOOK = pkgs.writeDash "xmonad-startup-hook" ''
+ ${pkgs.xorg.xhost}/bin/xhost +LOCAL: &
+ ${xcfg.displayManager.sessionCommands}
+ wait
+ '';
+
+ XMONAD_DATA_DIR = "/tmp";
+ };
+ serviceConfig = {
+ SyslogIdentifier = "xmonad";
+ ExecStart = "${pkgs.xmonad-lass}/bin/xmonad";
+ ExecStop = "${pkgs.xmonad-lass}/bin/xmonad --shutdown";
+ User = user.name;
+ WorkingDirectory = 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" xcfg.drivers));
+ };
+ serviceConfig = {
+ SyslogIdentifier = "xserver";
+ ExecReload = "${pkgs.coreutils}/bin/echo NOP";
+ ExecStart = toString [
+ "${pkgs.xorg.xorgserver}/bin/X"
+ ":${toString xcfg.display}"
+ "vt${toString xcfg.tty}"
+ "-config ${import ./xserver.conf.nix args}"
+ "-logfile /dev/null -logverbose 0 -verbose 3"
+ "-nolisten tcp"
+ "-xkbdir ${pkgs.xkeyboard_config}/etc/X11/xkb"
+ (optional (xcfg.dpi != null) "-dpi ${toString xcfg.dpi}")
+ ];
+ };
+ };
+ services.xresources.resources.dpi = ''
+ ${optionalString (xcfg.dpi != null) "Xft.dpi: ${toString xcfg.dpi}"}
+ '';
+ systemd.services.urxvtd = {
+ wantedBy = [ "multi-user.target" ];
+ reloadIfChanged = true;
+ serviceConfig = {
+ SyslogIdentifier = "urxvtd";
+ ExecReload = "${pkgs.coreutils}/bin/echo NOP";
+ ExecStart = "${pkgs.rxvt_unicode_with-plugins}/bin/urxvtd";
+ Restart = "always";
+ RestartSec = "2s";
+ StartLimitBurst = 0;
+ User = user.name;
+ };
+ };
+ };
+
+in out
diff --git a/lass/3modules/xserver/xserver.conf.nix b/lass/3modules/xserver/xserver.conf.nix
new file mode 100644
index 000000000..6f34e0150
--- /dev/null
+++ b/lass/3modules/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/lass/5pkgs/default.nix b/lass/5pkgs/default.nix
index e0775f076..5b668c88f 100644
--- a/lass/5pkgs/default.nix
+++ b/lass/5pkgs/default.nix
@@ -21,6 +21,9 @@
xmonad-lass = import ./xmonad-lass.nix { inherit config pkgs; };
yt-next = pkgs.callPackage ./yt-next/default.nix {};
- screengrab = pkgs.writeDashBin "screengrab" "${pkgs.ffmpeg}/bin/ffmpeg -f x11grab -r 25 -s 1024x768 -i :0.0 -c:v huffyuv $1";
+ screengrab = pkgs.writeDashBin "screengrab" ''
+ resolution="$(${pkgs.xorg.xrandr}/bin/xrandr | ${pkgs.gnugrep}/bin/grep '*' | ${pkgs.gawk}/bin/awk '{print $1}')"
+ ${pkgs.ffmpeg}/bin/ffmpeg -f x11grab -r 25 -i :0.0 -s $resolution -c:v huffyuv $1
+ '';
};
}
diff --git a/lass/5pkgs/xmonad-lass.nix b/lass/5pkgs/xmonad-lass.nix
index 478686245..65bec117d 100644
--- a/lass/5pkgs/xmonad-lass.nix
+++ b/lass/5pkgs/xmonad-lass.nix
@@ -3,6 +3,7 @@ pkgs.writeHaskell "xmonad-lass" {
executables.xmonad = {
extra-depends = [
"containers"
+ "extra"
"unix"
"X11"
"xmonad"
@@ -20,17 +21,15 @@ module Main where
import XMonad
import qualified XMonad.StackSet as W
-import Control.Exception
+import Control.Monad.Extra (whenJustM)
import Data.List (isInfixOf)
-import System.Environment (getArgs, withArgs)
-import System.IO (hPutStrLn, stderr)
+import System.Environment (getArgs, lookupEnv)
import System.Posix.Process (executeFile)
import XMonad.Actions.CopyWindow (copy, kill1)
import XMonad.Actions.CycleWS (toggleWS)
import XMonad.Actions.DynamicWorkspaces ( addWorkspacePrompt, renameWorkspace, removeEmptyWorkspace)
import XMonad.Actions.DynamicWorkspaces (withWorkspace)
import XMonad.Actions.GridSelect (GSConfig(..), gridselectWorkspace, navNSearch)
-import XMonad.Actions.UpdatePointer (updatePointer)
import XMonad.Hooks.FloatNext (floatNext)
import XMonad.Hooks.FloatNext (floatNextHook)
import XMonad.Hooks.ManageDocks (avoidStruts, ToggleStruts(ToggleStruts))
@@ -48,28 +47,30 @@ import XMonad.Layout.SimpleFloat (simpleFloat)
import XMonad.Stockholm.Shutdown
myTerm :: FilePath
-myTerm = "${pkgs.rxvt_unicode}/bin/urxvtc"
+myTerm = "${pkgs.rxvt_unicode_with-plugins}/bin/urxvtc"
myFont :: String
myFont = "${config.lass.fonts.regular}"
main :: IO ()
main = getArgs >>= \case
- ["--shutdown"] -> sendShutdownEvent
- _ -> mainNoArgs
+ ["--shutdown"] -> sendShutdownEvent
+ _ -> main'
-mainNoArgs :: IO ()
-mainNoArgs = do
- xmonad'
+main' :: IO ()
+main' = do
+ xmonad
$ withUrgencyHook (SpawnUrgencyHook "echo emit Urgency ")
$ def
{ terminal = myTerm
, modMask = mod4Mask
, layoutHook = smartBorders $ myLayoutHook
- , logHook = updatePointer (0.25, 0.25) (0.25, 0.25)
, manageHook = placeHook (smart (1,0)) <+> floatNextHook
+ , startupHook =
+ whenJustM (liftIO (lookupEnv "XMONAD_STARTUP_HOOK"))
+ (\path -> forkFile path [] Nothing)
, normalBorderColor = "#1c1c1c"
- , focusedBorderColor = "#f000b0"
+ , focusedBorderColor = "#ff0000"
, handleEventHook = handleShutdownEvent
, workspaces = [ "dashboard", "sys", "wp" ]
} `additionalKeysP` myKeyMap
@@ -78,22 +79,6 @@ myLayoutHook = defLayout
where
defLayout = minimize $ ((avoidStruts $ Tall 1 (3/100) (1/2) ||| Full ||| Mirror (Tall 1 (3/100) (1/2))) ||| FixedColumn 2 80 80 1) ||| simpleFloat
-
-xmonad' :: (LayoutClass l Window, Read (l Window)) => XConfig l -> IO ()
-xmonad' conf = do
- let path = "/tmp/xmonad.state"
- try (readFile path) >>= \case
- Right content -> do
- hPutStrLn stderr ("resuming from " ++ path)
- withArgs ("--resume" : lines content) (xmonad conf)
- Left e -> do
- hPutStrLn stderr (displaySomeException e)
- xmonad conf
-
-displaySomeException :: SomeException -> String
-displaySomeException = displayException
-
-
myKeyMap :: [([Char], X ())]
myKe