53d3cd62a8
NixOS 18.09 switches from slim to something else (lightdm?) as the default display manager, however DBUS is broken in that manager if the session is ever restarted. This reverts back to slim, which may not look as fancy by default but it actually works.
82 lines
2.3 KiB
Nix
82 lines
2.3 KiB
Nix
# Configuration for the desktop environment
|
|
|
|
{ config, lib, pkgs, ... }:
|
|
|
|
let emacs = import ./emacs.nix { inherit pkgs; };
|
|
screenLock = pkgs.writeShellScriptBin "screen-lock" ''
|
|
find ${pkgs.wallpapers} -name "*.png" | shuf -n1 | xargs i3lock -f -t -i
|
|
'';
|
|
in {
|
|
# Configure basic X-server stuff:
|
|
services.xserver = {
|
|
enable = true;
|
|
layout = "us,no";
|
|
xkbOptions = "caps:super, grp:shifts_toggle, parens:swap_brackets";
|
|
exportConfiguration = true;
|
|
|
|
# Give EXWM permission to control the session.
|
|
displayManager.sessionCommands = "${pkgs.xorg.xhost}/bin/xhost +SI:localuser:$USER";
|
|
|
|
# Use the pre 18.09 default display manager (slim)
|
|
displayManager.slim.enable = true;
|
|
};
|
|
|
|
# Add a shell script with random screen lock wallpaper selection
|
|
environment.systemPackages = [ screenLock ];
|
|
|
|
# Apparently when you have house guests they complain about your screen tearing!
|
|
services.compton.enable = true;
|
|
services.compton.backend = "xrender";
|
|
|
|
# Configure desktop environment:
|
|
services.xserver.windowManager.session = lib.singleton {
|
|
name = "exwm";
|
|
start = ''
|
|
${emacs}/bin/emacs --eval '(progn (server-start) (exwm-enable))'
|
|
'';
|
|
};
|
|
|
|
# Configure Redshift for Oslo
|
|
services.redshift = {
|
|
enable = true;
|
|
latitude = "59.911491";
|
|
longitude = "10.757933";
|
|
};
|
|
|
|
# Configure fonts
|
|
fonts = {
|
|
fonts = with pkgs; [
|
|
corefonts
|
|
font-awesome-ttf
|
|
input-fonts
|
|
noto-fonts-cjk
|
|
noto-fonts-emoji
|
|
powerline-fonts
|
|
helvetica-neue-lt-std
|
|
];
|
|
};
|
|
|
|
# Configure random setting of wallpapers
|
|
systemd.user.services.feh-wp = {
|
|
description = "Randomly set wallpaper via feh";
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
WorkingDirectory = "${pkgs.wallpapers}/share/wallpapers";
|
|
|
|
# Manually shuffle because feh's --randomize option can't be restricted to
|
|
# just certain file types.
|
|
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.fd}/bin/fd -atf | shuf | head -n1 | ${pkgs.findutils}/bin/xargs ${pkgs.feh}/bin/feh --bg-fill'";
|
|
};
|
|
};
|
|
|
|
systemd.user.timers.feh-wp = {
|
|
description = "Set a random wallpaper every hour";
|
|
wantedBy = [ "graphical-session.target" ];
|
|
partOf = [ "graphical-session.target" ];
|
|
|
|
timerConfig = {
|
|
OnActiveSec = "1second";
|
|
OnUnitActiveSec = "1hour";
|
|
};
|
|
};
|
|
}
|