system/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 143 144 | { config, pkgs, lib, makeDesktopItem, ... }:
let
emacsPackage = import ../packages/emacs.nix {
pkgs = pkgs.unstable;
emacs = pkgs.unstable.emacs.override {
withGTK3 = false;
};
};
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 = makeDesktopItem {
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
{ documentation.info.enable = true;
nixpkgs.config.firefox.enableOfficialBranding = true;
nixpkgs.config.packageOverrides = pkgs: {
myEmacs = emacsPackage;
};
environment.systemPackages = with pkgs; [
aria2
firefox
pcmanfm
epdfview
geeqie
cmus
fish # for emacs-fish-completion
myEmacs
editorScript
unstable.xst # st, but with support for XResources
lxappearance
lxrandr
lxtask
python3Packages.keyring
isync
msmtp
html2text
weechat
unstable.pass-otp
mpv
mosh
aspell
aspellDicts.en
cifs-utils
hexchat
signal-desktop
wire-desktop
trash-cli
] ++ (if !stdenv.isDarwin
then [
unstable.mu
]
else []);
nixpkgs.config.allowUnfree = true;
services.compton = {
enable = true;
};
services.devmon.enable = true;
environment.sessionVariables.TERMINAL = "st";
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.ssh.startAgent = true;
programs.dconf.enable = true;
services.gnome3 = {
gnome-keyring.enable = true;
seahorse.enable = true;
at-spi2-core.enable = true;
};
imports = [
./services/xserver.nix
];
}
|