8d918e48eb
Launch EXWM directly in Emacs, instead of first launching an Emacs server and connecting a client. In cases where Emacs does not start correctly due to initialisation errors the error message would never become visible without this change.
79 lines
2.2 KiB
Nix
79 lines
2.2 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";
|
|
};
|
|
|
|
# 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";
|
|
};
|
|
};
|
|
}
|