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