This repository has no description
5.0 kB
200 lines
1{
2 self,
3 config,
4 lib,
5 pkgs,
6 ...
7}:
8let
9 stockholmPkgs = self.inputs.stockholm.packages.${pkgs.stdenv.hostPlatform.system};
10in
11{
12 imports = [
13 ../../alacritty.nix
14 ../../xdg-open.nix
15 ../../yubikey.nix
16 ../../pipewire.nix
17 ../../themes.nix
18 ../../fonts.nix
19 {
20 users.users.mainUser.packages = [
21 pkgs.sshuttle
22 self.packages.${pkgs.system}.mpv
23 ];
24 security.sudo.extraConfig = ''
25 lass ALL= (root) NOPASSWD:SETENV: ${pkgs.sshuttle}/bin/.sshuttle-wrapped
26 '';
27 }
28 {
29 #font magic
30 options.lass.fonts = {
31 regular = lib.mkOption {
32 type = lib.types.str;
33 default = "xft:Iosevka Term SS15:style=regular";
34 };
35 bold = lib.mkOption {
36 type = lib.types.str;
37 default = "xft:Iosevka Term SS15:style=bold";
38 };
39 italic = lib.mkOption {
40 type = lib.types.str;
41 default = "xft:Iosevka Term SS15:style=italic";
42 };
43 };
44 config.services.xserver.displayManager.sessionCommands =
45 let
46 xres = pkgs.writeText "xreources" ''
47 *.font: ${config.lass.fonts.regular}
48 *.boldFont: ${config.lass.fonts.bold}
49 *.italicFont: ${config.lass.fonts.italic}
50 '';
51 in
52 ''
53 ${pkgs.xorg.xrdb}/bin/xrdb -merge ${xres}
54 '';
55 }
56 ];
57
58 users.users.mainUser.extraGroups = [
59 "audio"
60 "video"
61 ];
62
63 time.timeZone = "Europe/Berlin";
64
65 programs.ssh.agentTimeout = "10m";
66 programs.ssh.startAgent = false;
67 services.openssh.forwardX11 = true;
68
69 environment.systemPackages = with pkgs; [
70 acpi
71 acpilight
72 ripgrep
73 dmenu
74 stockholmPkgs.fzfmenu
75 dconf
76 libarchive
77 ncdu
78 nix-index
79 nixpkgs-review
80 nmap
81 pavucontrol
82 sxiv
83 nsxiv
84 wirelesstools
85 x11vnc
86 xclip
87 xorg.xmodmap
88 xorg.xhost
89 xdotool
90 xsel
91 zathura
92 flameshot
93 (pkgs.writers.writeDashBin "screenshot" ''
94 set -efu
95
96 ${pkgs.flameshot}/bin/flameshot gui &&
97 ${pkgs.klem}/bin/klem
98 '')
99 (pkgs.writers.writeDashBin "IM" ''
100 ${pkgs.mosh}/bin/mosh green.r -- tmux new-session -A -s IM -- weechat
101 '')
102 (pkgs.writers.writeDashBin "deploy_hm" ''
103 target=$1
104 shift
105
106 hm_profile=$(${pkgs.home-manager}/bin/home-manager -f ~/sync/stockholm/lass/2configs/home-manager.nix build "$@")
107 nix-copy-closure --to "$target" "$hm_profile"
108 ssh "$target" -- "$hm_profile"/activate
109 '')
110 zbar
111 ];
112
113 services.udev.extraRules = ''
114 SUBSYSTEM=="backlight", ACTION=="add", \
115 RUN+="${pkgs.coreutils}/bin/chgrp video /sys/class/backlight/%k/brightness", \
116 RUN+="${pkgs.coreutils}/bin/chmod g+w /sys/class/backlight/%k/brightness"
117 '';
118
119 services.xserver = {
120 enable = true;
121 layout = "us";
122 display = lib.mkForce 0;
123 xkbVariant = "altgr-intl";
124 xkbOptions = "caps:escape";
125 libinput.enable = true;
126 exportConfiguration = true;
127 displayManager = {
128 lightdm.enable = true;
129 defaultSession = "none+xmonad";
130 sessionCommands = ''
131 ${pkgs.xorg.xhost}/bin/xhost +LOCAL:
132 '';
133 };
134 };
135
136 nixpkgs.config.packageOverrides = _super: {
137 dmenu = pkgs.writers.writeDashBin "dmenu" ''
138 ${stockholmPkgs.fzfmenu}/bin/fzfmenu "$@"
139 '';
140 };
141
142 lass.klem = {
143 kpaste.script = pkgs.writers.writeDash "kpaste-wrapper" ''
144 ${stockholmPkgs.kpaste}/bin/kpaste \
145 | ${pkgs.coreutils}/bin/tail -1 \
146 | ${pkgs.coreutils}/bin/tr -d '\r\n'
147 '';
148 go = {
149 target = "STRING";
150 script = "${stockholmPkgs.goify}/bin/goify";
151 };
152 "go.lassul.us" = {
153 target = "STRING";
154 script = pkgs.writers.writeDash "go.lassul.us" ''
155 export GO_HOST='go.lassul.us'
156 ${stockholmPkgs.goify}/bin/goify
157 '';
158 };
159 qrcode = {
160 target = "image";
161 script = pkgs.writers.writeDash "zbar" ''
162 ${pkgs.zbar}/bin/zbarimg -q --raw -
163 '';
164 };
165 ocr = {
166 target = "image";
167 script = pkgs.writers.writeDash "gocr" ''
168 ${pkgs.netpbm}/bin/pngtopnm - \
169 | ${pkgs.gocr}/bin/gocr -
170 '';
171 };
172 };
173
174 services.clipmenu.enable = true;
175
176 # synchronize all the clipboards
177 systemd.user.services.autocutsel = {
178 enable = true;
179 wantedBy = [ "graphical-session.target" ];
180 after = [ "graphical-session.target" ];
181 serviceConfig = {
182 Type = "forking";
183 ExecStart = pkgs.writers.writeDash "autocutsel" ''
184 ${pkgs.autocutsel}/bin/autocutsel -fork -selection PRIMARY
185 ${pkgs.autocutsel}/bin/autocutsel -fork -selection CLIPBOARD
186 '';
187 };
188 };
189 systemd.services.xsettingsd = {
190 wantedBy = [ "multi-user.target" ];
191 after = [ "display-manager.service" ];
192 environment.DISPLAY = ":0";
193 serviceConfig = {
194 ExecStart = "${pkgs.xsettingsd}/bin/xsettingsd -c /var/theme/config/xsettings.conf";
195 User = "lass";
196 Restart = "always";
197 RestartSec = "15s";
198 };
199 };
200}