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