{ 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 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"; 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 ]; }