summary refs log tree commit diff stats
path: root/system/modules/user-interface.nix
diff options
context:
space:
mode:
Diffstat (limited to 'system/modules/user-interface.nix')
-rw-r--r--system/modules/user-interface.nix144
1 files changed, 144 insertions, 0 deletions
diff --git a/system/modules/user-interface.nix b/system/modules/user-interface.nix
new file mode 100644
index 00000000..7c98d291
--- /dev/null
+++ b/system/modules/user-interface.nix
@@ -0,0 +1,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
+  ];
+}