modules/user-interface.nix (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | { config, pkgs, lib, ... }:
let
emacsPackage = import ../packages/emacs.nix {
pkgs = pkgs.unstable;
};
editorScript = pkgs.writeScriptBin "edit" ''
#!${pkgs.runtimeShell}
if [ -z "$1" ]; then
exec ${emacsPackage}/bin/emacsclient --create-frame --alternate-editor ${emacsPackage}/bin/emacs
else
exec ${emacsPackage}/bin/emacsclient --alternate-editor ${emacsPackage}/bin/emacs "$@"
fi
'';
desktopApplicationFile = pkgs.writeTextFile {
name = "emacsclient.desktop";
destination = "/share/applications/emacsclient.desktop";
text = ''
[Desktop Entry]
Name=Emacsclient
GenericName=Text Editor
Comment=Edit text
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=${editorScript}/bin/edit %F
Icon=emacs
Type=Application
Terminal=false
Categories=Development;TextEditor;
StartupWMClass=Emacs
Keywords=Text;Editor;
'';
};
in
{ programs.browserpass.enable = true;
documentation.info.enable = true;
nixpkgs.config.firefox.enableOfficialBranding = true;
environment.systemPackages = with pkgs; [
aria2
firefox
pcmanfm
epdfview
geeqie
fish # for emacs-fish-completion
emacsPackage
editorScript
termite
lxappearance
python3Packages.keyring
isync
unstable.mu
msmtp
html2text
weechat
unstable.pass-otp
mpv
mosh
aspell
aspellDicts.en
cifs-utils
hexchat
signal-desktop
trash-cli
];
nixpkgs.config.allowUnfree = true;
services.compton = {
enable = true;
};
services.devmon.enable = true;
environment.sessionVariables.TERMINAL = "termite";
# termite sets a custom TERM whose definition isn't installed by
# default. I SSH into too many servers to set this up on every
# single one of them, and some get recreated anyway
environment.sessionVariables.TERM = "xterm-color";
services.nscd.enable = true;
systemd.services.nscd.wantedBy = lib.mkForce [];
systemd.timers.nscd = {
description = "Delayed startup of nscd";
wantedBy = [ "timers.target" ];
timerConfig = {
OnActiveSec = "1 min";
};
};
systemd.user.services.trash-clean = {
path = with pkgs; [ trash-cli ];
description = "Remove old files from FreeDesktop.org trash";
serviceConfig = {
Type = "oneshot";
};
script = "trash-empty 30";
};
systemd.user.timers.trash-clean = {
wantedBy = [ "default.target" ];
timerConfig = {
OnCalendar = "weekly";
Persistent = true;
};
};
environment.variables = {
# This is required so that GTK applications launched from Emacs
# get properly themed:
GTK_DATA_PREFIX = "${config.system.path}";
EDITOR = lib.mkOverride 900 "${editorScript}/bin/edit";
};
services.redshift = {
enable = true;
temperature = {
day = 6500;
night = 3600;
};
};
programs.dconf.enable = true;
services.gnome3 = {
gnome-keyring.enable = true;
seahorse.enable = true;
at-spi2-core.enable = true;
};
imports = [
./services/xserver.nix
];
}
|