summary refs log tree commit diff stats
path: root/modules/user-interface.nix
blob: fd86db265128df085efa260280ea4f950760e290 (plain)
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
{ 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;
    };
  };

  imports = [
    ./services/xserver.nix
  ];
}