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