blob: 88dedfab4a44ef5b3fd1974f429f5bd9d3b01af0 (
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
|
{ config, pkgs, lib, ... }:
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 = 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
{ 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
];
}
|