my nixos dotfiles :3 (git.koi.rip mirror) git.koi.rip/koi/dotfiles
linux dotfiles neovim nixos catppuccin

refact!: switch to niri (#6)

* refact!: switch to niri

* better animations & organization

* lil wallpaper fix still not working tho

* switch to `niri-flake`

* bring back hyprland for now

* stuff

* 4 workspaces

* xdg stuffs

* better window rules

* mhm

* stuffs

* updat

* colemak

* car

* wakatime

* o

* a

authored by koi.rip and committed by

GitHub a9184816 939d7dc7

+530 -54
+1
.gitattributes
··· 1 + *.age binary
+1
.gitignore
··· 1 + **/*.bak
+1 -1
external/zsh/profile.zsh
··· 1 1 if [ -z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then 2 - exec Hyprland 2 + exec niri-session 3 3 fi 4 4 5 5 if [ -z "$KITTY_WINDOW_ID" ]; then
+1 -1
external/zsh/prompt.zsh
··· 38 38 39 39 local baseprompt="${reset}${dim}%n${reset}${accent}@${reset}${dim}%m${reset}:${accent}%l${reset} ${dim}->${reset} ${cwd} ${dim}(${reset}%?${dim})${reset}${newline}" 40 40 41 - if [[ "$last_command" == 'cat' || "$last_command" == 'head' || "$last_command" == 'tail' || "$last_command" == 'tac' || "$last_command" == 'nc' || "$last_command" == 'ncat' || "$last_command" == 'netcat' || "$last_command" == 'kitget' ]]; then 41 + if [[ "$last_command" == 'car' || "$last_command" == 'cat' || "$last_command" == 'head' || "$last_command" == 'tail' || "$last_command" == 'tac' || "$last_command" == 'nc' || "$last_command" == 'ncat' || "$last_command" == 'netcat' || "$last_command" == 'kitget' ]]; then 42 42 baseprompt+='😻' 43 43 elif [[ "$last_command" == 'sudo' ]]; then 44 44 baseprompt+='🙀'
+108 -14
flake.lock
··· 14 14 ] 15 15 }, 16 16 "locked": { 17 - "lastModified": 1760836749, 17 + "lastModified": 1762618334, 18 18 "narHash": "sha256-wyT7Pl6tMFbFrs8Lk/TlEs81N6L+VSybPfiIgzU8lbQ=", 19 19 "owner": "ryantm", 20 20 "repo": "agenix", 21 - "rev": "2f0f812f69f3eb4140157fe15e12739adf82e32a", 21 + "rev": "fcdea223397448d35d9b31f798479227e80183f6", 22 22 "type": "github" 23 23 }, 24 24 "original": { ··· 34 34 ] 35 35 }, 36 36 "locked": { 37 - "lastModified": 1761512417, 38 - "narHash": "sha256-dyX4Q16kLkYF07XJTIsT5FFCoxPGpnSlSwOJBdl+h4c=", 37 + "lastModified": 1762900424, 38 + "narHash": "sha256-RwmJNXP+sdZrSyDh0p5zVGgxyMN8WUpvJaA/wu/qZOw=", 39 39 "owner": "adamperkowski", 40 40 "repo": "anvim", 41 - "rev": "67f281743fa296aea3386d1a6e598464f2986bb6", 41 + "rev": "96546094ef0bb5bab92414a041668a4a4f96ca98", 42 42 "type": "github" 43 43 }, 44 44 "original": { ··· 131 131 "type": "github" 132 132 } 133 133 }, 134 + "niri": { 135 + "inputs": { 136 + "niri-stable": "niri-stable", 137 + "niri-unstable": "niri-unstable", 138 + "nixpkgs": [ 139 + "nixpkgs-unstable" 140 + ], 141 + "nixpkgs-stable": [ 142 + "nixpkgs" 143 + ], 144 + "xwayland-satellite-stable": "xwayland-satellite-stable", 145 + "xwayland-satellite-unstable": "xwayland-satellite-unstable" 146 + }, 147 + "locked": { 148 + "lastModified": 1762886612, 149 + "narHash": "sha256-gaPe/qkI4C9KyT8IZMvS9rXCWn2klxCC+MjXFU+jvqk=", 150 + "owner": "sodiboo", 151 + "repo": "niri-flake", 152 + "rev": "4efef728e910bb8f009fa2db143baeacaa3466ec", 153 + "type": "github" 154 + }, 155 + "original": { 156 + "owner": "sodiboo", 157 + "repo": "niri-flake", 158 + "type": "github" 159 + } 160 + }, 161 + "niri-stable": { 162 + "flake": false, 163 + "locked": { 164 + "lastModified": 1756556321, 165 + "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", 166 + "owner": "YaLTeR", 167 + "repo": "niri", 168 + "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", 169 + "type": "github" 170 + }, 171 + "original": { 172 + "owner": "YaLTeR", 173 + "ref": "v25.08", 174 + "repo": "niri", 175 + "type": "github" 176 + } 177 + }, 178 + "niri-unstable": { 179 + "flake": false, 180 + "locked": { 181 + "lastModified": 1762881062, 182 + "narHash": "sha256-j0Gxopn4jGYQae/90V2v4u4+Ec+gFLq3UbSaGfczpOM=", 183 + "owner": "YaLTeR", 184 + "repo": "niri", 185 + "rev": "5b77107161c504376b962107913bf74b575703e7", 186 + "type": "github" 187 + }, 188 + "original": { 189 + "owner": "YaLTeR", 190 + "repo": "niri", 191 + "type": "github" 192 + } 193 + }, 134 194 "nixpkgs": { 135 195 "locked": { 136 196 "lastModified": 1736320768, ··· 149 209 }, 150 210 "nixpkgs-unstable": { 151 211 "locked": { 152 - "lastModified": 1761373498, 153 - "narHash": "sha256-Q/uhWNvd7V7k1H1ZPMy/vkx3F8C13ZcdrKjO7Jv7v0c=", 212 + "lastModified": 1762596750, 213 + "narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=", 154 214 "owner": "NixOS", 155 215 "repo": "nixpkgs", 156 - "rev": "6a08e6bb4e46ff7fcbb53d409b253f6bad8a28ce", 216 + "rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e", 157 217 "type": "github" 158 218 }, 159 219 "original": { ··· 164 224 }, 165 225 "nixpkgs_2": { 166 226 "locked": { 167 - "lastModified": 1761468971, 168 - "narHash": "sha256-vY2OLVg5ZTobdroQKQQSipSIkHlxOTrIF1fsMzPh8w8=", 227 + "lastModified": 1762756533, 228 + "narHash": "sha256-HiRDeUOD1VLklHeOmaKDzf+8Hb7vSWPVFcWwaTrpm+U=", 169 229 "owner": "NixOS", 170 230 "repo": "nixpkgs", 171 - "rev": "78e34d1667d32d8a0ffc3eba4591ff256e80576e", 231 + "rev": "c2448301fb856e351aab33e64c33a3fc8bcf637d", 172 232 "type": "github" 173 233 }, 174 234 "original": { ··· 183 243 "anvim": "anvim", 184 244 "home-manager": "home-manager", 185 245 "iamb": "iamb", 246 + "niri": "niri", 186 247 "nixpkgs": "nixpkgs_2", 187 248 "nixpkgs-unstable": "nixpkgs-unstable", 188 249 "spicetify-nix": "spicetify-nix", ··· 217 278 ] 218 279 }, 219 280 "locked": { 220 - "lastModified": 1761452941, 221 - "narHash": "sha256-yy+9lSj40cWS4awLqjQ5H5/7/SOf9ZarOgTzH8GHkRk=", 281 + "lastModified": 1762718300, 282 + "narHash": "sha256-oOQimZTaV1jCw0OBmmK2g7Rdj3E8YGVpkJYD32BWKRQ=", 222 283 "owner": "Gerg-L", 223 284 "repo": "spicetify-nix", 224 - "rev": "20a56cfc4dc794ade2e8d4346cc4a5adcd1bb512", 285 + "rev": "c7175bd485ed5052df5075fcdde395b631316e94", 225 286 "type": "github" 226 287 }, 227 288 "original": { ··· 257 318 "original": { 258 319 "owner": "nix-systems", 259 320 "repo": "default", 321 + "type": "github" 322 + } 323 + }, 324 + "xwayland-satellite-stable": { 325 + "flake": false, 326 + "locked": { 327 + "lastModified": 1755491097, 328 + "narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=", 329 + "owner": "Supreeeme", 330 + "repo": "xwayland-satellite", 331 + "rev": "388d291e82ffbc73be18169d39470f340707edaa", 332 + "type": "github" 333 + }, 334 + "original": { 335 + "owner": "Supreeeme", 336 + "ref": "v0.7", 337 + "repo": "xwayland-satellite", 338 + "type": "github" 339 + } 340 + }, 341 + "xwayland-satellite-unstable": { 342 + "flake": false, 343 + "locked": { 344 + "lastModified": 1762747449, 345 + "narHash": "sha256-Z1TKiux8K09a93w4PFDFsj8HFugXNy3iCC3Z8MpR5Rk=", 346 + "owner": "Supreeeme", 347 + "repo": "xwayland-satellite", 348 + "rev": "6338574bc5c036487486acde264f38f39ea15fad", 349 + "type": "github" 350 + }, 351 + "original": { 352 + "owner": "Supreeeme", 353 + "repo": "xwayland-satellite", 260 354 "type": "github" 261 355 } 262 356 }
+8
flake.nix
··· 16 16 inputs.nixpkgs.follows = "nixpkgs"; 17 17 }; 18 18 19 + niri = { 20 + url = "github:sodiboo/niri-flake"; 21 + inputs.nixpkgs.follows = "nixpkgs-unstable"; 22 + inputs.nixpkgs-stable.follows = "nixpkgs"; 23 + }; 24 + 19 25 iamb = { 20 26 url = "github:ulyssa/iamb/v0.0.11-alpha.1"; 21 27 inputs.nixpkgs.follows = "nixpkgs"; ··· 40 46 self, 41 47 nixpkgs, 42 48 home-manager, 49 + niri, 43 50 ... 44 51 }@inputs: 45 52 let ··· 55 62 ./modules/base.nix 56 63 ./systems/${name} 57 64 home-manager.nixosModules.home-manager 65 + niri.nixosModules.niri 58 66 ./modules/home.nix 59 67 ]; 60 68 };
+4
home/adam.nix
··· 1 + { config, ... }: 2 + 1 3 { 2 4 home = { 3 5 username = "adam"; 4 6 homeDirectory = "/home/adam"; 5 7 stateVersion = "25.05"; 6 8 }; 9 + 10 + age.identityPaths = [ "${config.home.homeDirectory}/.ssh/id_ed25519" ]; 7 11 8 12 imports = [ 9 13 ./modules/scripts.nix
+1 -2
home/modules/packages.nix
··· 10 10 11 11 nerd-fonts.fira-code 12 12 wl-clipboard 13 - hyprpaper 14 - hyprcursor 15 13 grim 16 14 slurp 17 15 16 + cloudflared 18 17 unstable.kitget 19 18 ]; 20 19 }
+4 -9
home/modules/programs/chromium.nix
··· 14 14 ]; 15 15 }; 16 16 17 - age = { 18 - identityPaths = [ "${config.home.homeDirectory}/.ssh/id_ed25519" ]; 19 - secrets = { 20 - chromium = { 21 - file = ../../../secrets/chromium.sh.age; 22 - mode = "0500"; 23 - path = "${config.home.homeDirectory}/.local/bin/chromium"; 24 - }; 25 - }; 17 + age.secrets.chromium = { 18 + file = ../../../secrets/chromium.sh.age; 19 + mode = "0500"; 20 + path = "${config.home.homeDirectory}/.local/bin/chromium"; 26 21 }; 27 22 28 23 home.sessionVariables.DEFAULT_BROWSER = "chromium";
+3
home/modules/programs/default.nix
··· 6 6 ./zoxide.nix 7 7 ./neovim.nix 8 8 9 + ./niri.nix 10 + 11 + ./swww.nix 9 12 ./rofi.nix 10 13 ./kitty.nix 11 14 ./dunst.nix
+2 -1
home/modules/programs/iamb.nix
··· 6 6 package = iamb.packages.${pkgs.stdenv.system}.default; 7 7 8 8 settings = { 9 - profiles.user.user_id = "@xx0a_q:matrix.org"; 9 + profiles.user.user_id = "@adam:matrix.system72.dev"; 10 + dirs.downloads = "/tmp/downloads"; 10 11 settings = { 11 12 username_display = "displayname"; 12 13 notifications.enabled = true;
+1
home/modules/programs/kitty.nix
··· 12 12 cursor_trail = 1; 13 13 cursor_trail_decay = "0.05 0.2"; 14 14 cursor_trail_start_threshold = 2; 15 + enable_audio_bell = false; 15 16 }; 16 17 }; 17 18 }
+12 -1
home/modules/programs/neovim.nix
··· 1 - { pkgs, anvim, ... }: 1 + { 2 + pkgs, 3 + config, 4 + anvim, 5 + ... 6 + }: 2 7 3 8 { 4 9 imports = [ anvim.homeManagerModules.default ]; ··· 12 17 bash-language-server 13 18 nixd 14 19 ]; 20 + 21 + age.secrets.wakatime = { 22 + file = ../../../secrets/wakatime.cfg.age; 23 + mode = "0500"; 24 + path = "${config.home.homeDirectory}/.wakatime.cfg"; 25 + }; 15 26 }
+268
home/modules/programs/niri.nix
··· 1 + { config, ... }: 2 + 3 + { 4 + services.gnome-keyring.enable = false; 5 + 6 + home.sessionVariables = { 7 + XDG_BACKEND = "wayland"; 8 + NIXOS_OZONE_WL = "1"; 9 + LIBVA_DRIVER_NAME = "nvidia"; 10 + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; 11 + }; 12 + 13 + programs.niri.settings = { 14 + spawn-at-startup = [ 15 + { argv = [ "swww img ~/.wallpaper.jpg" ]; } 16 + { argv = [ "waybar" ]; } 17 + { argv = [ "vesktop" ]; } 18 + { sh = "sleep 10s; spotify"; } # delayed to let vesktop start first 19 + ]; 20 + 21 + screenshot-path = "~/screenshots/%Y-%m-%d_%H-%M-%S.png"; 22 + prefer-no-csd = true; 23 + 24 + cursor = { 25 + theme = "catppuccin-mocha-dark-cursors"; 26 + size = 24; 27 + }; 28 + 29 + input = { 30 + keyboard = { 31 + # xkb.layout = "pl"; 32 + repeat-delay = 180; 33 + repeat-rate = 60; 34 + numlock = true; 35 + }; 36 + 37 + mouse.accel-profile = "flat"; 38 + 39 + # TODO: laptop touchpad 40 + 41 + focus-follows-mouse = { 42 + enable = true; 43 + max-scroll-amount = "0%"; 44 + }; 45 + }; 46 + 47 + outputs = { 48 + HDMI-A-1 = { 49 + scale = 1; 50 + mode = { 51 + width = 1920; 52 + height = 1080; 53 + refresh = 60.0; 54 + }; 55 + 56 + # TODO: uncomment on next niri release 57 + # hot-corners.enable = false; 58 + }; 59 + 60 + eDP-1 = { 61 + scale = 1; 62 + mode = { 63 + width = 1920; 64 + height = 1080; 65 + refresh = 60.0; 66 + }; 67 + 68 + # TODO: uncomment on next niri release 69 + # hot-corners.enable = false; 70 + }; 71 + }; 72 + 73 + layout = { 74 + gaps = 8; 75 + center-focused-column = "never"; 76 + background-color = "transparent"; 77 + 78 + default-column-width.proportion = 0.5; 79 + 80 + focus-ring.enable = false; 81 + border = { 82 + enable = true; 83 + width = 2; 84 + active.color = "#b4befe"; 85 + inactive.color = "#313244"; 86 + urgent.color = "#cba6f7"; 87 + }; 88 + }; 89 + 90 + animations = { 91 + window-open.kind.easing = { 92 + duration-ms = 400; 93 + curve = "cubic-bezier"; 94 + curve-args = [ 95 + 0.23 96 + 1 97 + 0.32 98 + 1 99 + ]; 100 + }; 101 + 102 + window-close.kind.easing = { 103 + duration-ms = 400; 104 + curve = "cubic-bezier"; 105 + curve-args = [ 106 + 0.23 107 + 1 108 + 0.32 109 + 1 110 + ]; 111 + }; 112 + }; 113 + 114 + workspaces = { 115 + "1" = { }; 116 + "2" = { }; 117 + "3" = { }; 118 + "social" = { }; 119 + }; 120 + 121 + window-rules = [ 122 + { 123 + clip-to-geometry = true; 124 + } 125 + { 126 + matches = [ { app-id = "^Rofi"; } ]; 127 + open-floating = true; 128 + open-focused = true; 129 + } 130 + { 131 + matches = [ { app-id = "^vesktop"; } ]; 132 + open-on-workspace = "social"; 133 + default-column-width.proportion = 0.56; 134 + } 135 + { 136 + matches = [ { app-id = "^spotify"; } ]; 137 + open-on-workspace = "social"; 138 + default-column-width.proportion = 0.44; 139 + } 140 + { 141 + matches = [ { app-id = "^steam"; } ]; 142 + open-on-workspace = "3"; 143 + default-column-width.proportion = 0.6; 144 + } 145 + { 146 + matches = [ { title = "^(Picture in picture|Picture-in-Picture|Discord Popout)"; } ]; 147 + default-column-width.fixed = 800; 148 + default-window-height.fixed = 450; 149 + open-floating = true; 150 + default-floating-position = { 151 + x = 0; 152 + y = 0; 153 + relative-to = "bottom-right"; 154 + }; 155 + } 156 + { 157 + matches = [ { title = "^notificationtoast.*"; } ]; 158 + open-floating = true; 159 + default-floating-position = { 160 + x = 0; 161 + y = 0; 162 + relative-to = "bottom-right"; 163 + }; 164 + } 165 + ]; 166 + 167 + layer-rules = [ 168 + { 169 + matches = [ { namespace = "^swww-daemon"; } ]; 170 + place-within-backdrop = true; 171 + } 172 + ]; 173 + 174 + binds = with config.lib.niri.actions; { 175 + "Mod+Shift+Slash".action = show-hotkey-overlay; 176 + 177 + "Mod+Return".action = spawn "kitty"; 178 + "Mod+Shift+Return".action.spawn = [ 179 + "rofi" 180 + "-show" 181 + "drun" 182 + ]; 183 + 184 + "Mod+Tab".action = toggle-overview; 185 + "Mod+Shift+C".action = close-window; 186 + 187 + "Mod+Home".action = focus-column-first; 188 + "Mod+End".action = focus-column-last; 189 + "Mod+Shift+Home".action = move-column-to-first; 190 + "Mod+Shift+End".action = move-column-to-last; 191 + 192 + # TODO: make a loop for these 193 + "Mod+H".action = focus-column-left; 194 + "Mod+J".action = focus-window-down; 195 + "Mod+K".action = focus-window-up; 196 + "Mod+L".action = focus-column-right; 197 + "Mod+Left".action = focus-column-left; 198 + "Mod+Down".action = focus-window-down; 199 + "Mod+Up".action = focus-window-up; 200 + "Mod+Right".action = focus-column-right; 201 + 202 + "Mod+Shift+H".action = move-column-left; 203 + "Mod+Shift+J".action = move-window-down; 204 + "Mod+Shift+K".action = move-window-up; 205 + "Mod+Shift+L".action = move-column-right; 206 + "Mod+Shift+Left".action = move-column-left; 207 + "Mod+Shift+Down".action = move-window-down; 208 + "Mod+Shift+Up".action = move-window-up; 209 + "Mod+Shift+Right".action = move-column-right; 210 + 211 + "Mod+Ctrl+H".action = focus-monitor-left; 212 + "Mod+Ctrl+J".action = focus-monitor-down; 213 + "Mod+Ctrl+K".action = focus-monitor-up; 214 + "Mod+Ctrl+L".action = focus-monitor-right; 215 + "Mod+Ctrl+Left".action = focus-monitor-left; 216 + "Mod+Ctrl+Right".action = focus-monitor-right; 217 + "Mod+Ctrl+Up".action = focus-monitor-up; 218 + "Mod+Ctrl+Down".action = focus-monitor-down; 219 + 220 + "Mod+I".action = focus-workspace-up; 221 + "Mod+U".action = focus-workspace-down; 222 + "Mod+Page_Up".action = focus-workspace-up; 223 + "Mod+Page_Down".action = focus-workspace-down; 224 + 225 + "Mod+Shift+I".action = move-column-to-workspace-up; 226 + "Mod+Shift+U".action = move-column-to-workspace-down; 227 + "Mod+Shift+Page_Up".action = move-column-to-workspace-up; 228 + "Mod+Shift+Page_Down".action = move-column-to-workspace-down; 229 + 230 + # TODO: make a loop for these 231 + "Mod+1".action = focus-workspace 1; 232 + "Mod+2".action = focus-workspace 2; 233 + "Mod+3".action = focus-workspace 3; 234 + "Mod+4".action = focus-workspace "social"; 235 + "Mod+0".action = focus-workspace "social"; 236 + 237 + # the flake doesnt implement this (yet?) 238 + # "Mod+Shift+1".action = move-column-to-workspace 1; 239 + # "Mod+Shift+2".action = move-column-to-workspace 2; 240 + # "Mod+Shift+3".action = move-column-to-workspace 3; 241 + # "Mod+Shift+4".action = move-column-to-workspace "social"; 242 + # "Mod+Shift+0".action = move-column-to-workspace "social"; 243 + 244 + "Mod+BracketLeft".action = consume-or-expel-window-left; 245 + "Mod+BracketRight".action = consume-or-expel-window-right; 246 + 247 + "Mod+F".action = maximize-column; 248 + "Mod+Shift+F".action = fullscreen-window; 249 + "Mod+Ctrl+F".action = expand-column-to-available-width; 250 + "Mod+R".action = switch-preset-column-width; 251 + 252 + "Mod+Minus".action = set-column-width "-10%"; 253 + "Mod+Equal".action = set-column-width "+10%"; 254 + "Mod+Shift+Minus".action = set-window-height "-10%"; 255 + "Mod+Shift+Equal".action = set-window-height "+10%"; 256 + 257 + "Mod+Space".action = toggle-window-floating; 258 + "Mod+Shift+Space".action = switch-focus-between-floating-and-tiling; 259 + 260 + # "Print".action = screenshot; 261 + # "Shift+Print".action = screenshot-window; 262 + # this doesnt work for some reason? 263 + # "Ctrl+Print".action = screenshot-screen; 264 + 265 + "Mod+Shift+Q".action = quit; 266 + }; 267 + }; 268 + }
+3
home/modules/programs/swww.nix
··· 1 + { 2 + services.swww.enable = true; 3 + }
+31 -1
home/modules/programs/waybar.nix
··· 14 14 position = "top"; 15 15 width = 1920; 16 16 17 - modules-left = [ "hyprland/workspaces" ]; 17 + modules-left = [ 18 + "hyprland/workspaces" 19 + "niri/workspaces" 20 + ]; 18 21 modules-center = [ "custom/music" ]; 19 22 modules-right = [ 20 23 "tray" ··· 30 33 "default" = ""; 31 34 "9" = "󰓇"; 32 35 "10" = ""; 36 + }; 37 + }; 38 + 39 + "niri/workspaces" = { 40 + disable-scroll = true; 41 + sort-by-name = true; 42 + persistent-only = true; 43 + persistent-workspaces = { 44 + "1" = [ ]; 45 + "2" = [ ]; 46 + "3" = [ ]; 47 + "4" = [ ]; 48 + }; 49 + format = "{icon}"; 50 + format-icons = { 51 + "default" = "  "; 52 + "social" = "  "; 53 + "5" = ""; 33 54 }; 34 55 }; 35 56 ··· 103 124 padding: 5px; 104 125 margin: 0; 105 126 color: @lavender; 127 + } 128 + 129 + #workspaces button#niri-workspace-5 { 130 + font-size: 0px; 131 + border: none; 132 + padding: 0px; 133 + margin: 0px; 134 + min-width: 0px; 135 + min-height: 0px; 106 136 } 107 137 108 138 #workspaces button.active {
+2
home/modules/programs/zsh.nix
··· 27 27 nv = "nvim"; 28 28 shred = "shred -uvz"; 29 29 30 + car = "cat"; 31 + 30 32 nixrs = "sudo nixos-rebuild switch --flake ~/dotfiles\\#$(hostname)"; 31 33 32 34 diff = "diff --color=auto";
+27 -5
home/modules/xdg.nix
··· 1 + { pkgs, ... }: 2 + 1 3 let 2 4 configs = ../../external/config; 3 5 in 4 6 { 5 - xdg.mimeApps.enable = true; 7 + xdg = { 8 + mimeApps.enable = true; 6 9 7 - xdg.configFile = builtins.mapAttrs (name: _: { 8 - source = configs + "/${name}"; 9 - recursive = true; 10 - }) (builtins.readDir configs); 10 + configFile = builtins.mapAttrs (name: _: { 11 + source = configs + "/${name}"; 12 + recursive = true; 13 + }) (builtins.readDir configs); 14 + 15 + portal = { 16 + enable = true; 17 + extraPortals = with pkgs; [ 18 + xdg-desktop-portal-gtk 19 + xdg-desktop-portal-gnome 20 + ]; 21 + 22 + config.common = { 23 + default = [ 24 + "gtk" 25 + "gnome" 26 + ]; 27 + 28 + "org.freedesktop.impl.portal.Access" = [ "gtk" ]; 29 + "org.freedesktop.impl.portal.Notification" = [ "gtk" ]; 30 + }; 31 + }; 32 + }; 11 33 }
+29 -16
modules/base.nix
··· 1 1 { pkgs, inputs, ... }: 2 2 3 3 { 4 - boot.loader = { 5 - systemd-boot.enable = true; 6 - efi.canTouchEfiVariables = true; 4 + boot = { 5 + loader = { 6 + systemd-boot.enable = true; 7 + efi.canTouchEfiVariables = true; 8 + }; 9 + kernelParams = [ 10 + "vt.default_red=30,243,166,249,137,245,148,186,88,243,166,249,137,245,148,166" 11 + "vt.default_grn=30,139,227,226,180,194,226,194,91,139,227,226,180,194,226,173" 12 + "vt.default_blu=46,168,161,175,250,231,213,222,112,168,161,175,250,231,213,200" 13 + ]; 7 14 }; 8 15 9 16 networking = { ··· 13 20 14 21 console = { 15 22 font = "Lat2-Terminus16"; 16 - useXkbConfig = false; 23 + useXkbConfig = true; 17 24 }; 18 25 19 26 users.users.adam = { ··· 37 44 system = prev.stdenv.hostPlatform.system; 38 45 config = prev.config; 39 46 }; 47 + niri = inputs.niri.overlays.niri; 40 48 }) 41 49 ]; 42 50 }; 43 51 44 52 environment = { 45 53 localBinInPath = true; 46 - systemPackages = with pkgs; [ htop ]; 54 + systemPackages = with pkgs; [ 55 + xwayland-satellite 56 + htop 57 + ]; 58 + }; 59 + 60 + programs.niri.enable = true; 61 + 62 + programs.hyprland = { 63 + enable = true; 64 + xwayland.enable = true; 47 65 }; 48 66 49 67 programs.nano.enable = false; 68 + 69 + programs.gnupg.agent = { 70 + enable = true; 71 + enableSSHSupport = true; 72 + pinentryPackage = pkgs.pinentry-curses; 73 + }; 50 74 51 75 services.pipewire = { 52 76 enable = true; ··· 67 91 PermitRootLogin = "no"; 68 92 PubkeyAuthentication = true; 69 93 }; 70 - }; 71 - 72 - programs.gnupg.agent = { 73 - enable = true; 74 - enableSSHSupport = true; 75 - pinentryPackage = pkgs.pinentry-curses; 76 - }; 77 - 78 - programs.hyprland = { 79 - enable = true; 80 - xwayland.enable = true; 81 94 }; 82 95 83 96 nix.settings.experimental-features = [
secrets/chromium.sh.age

This is a binary file and will not be displayed.

+1
secrets/secrets.nix
··· 3 3 in 4 4 { 5 5 "chromium.sh.age".publicKeys = [ adam ]; 6 + "wakatime.cfg.age".publicKeys = [ adam ]; 6 7 }
+5
secrets/wakatime.cfg.age
··· 1 + age-encryption.org/v1 2 + -> ssh-ed25519 IU0gwQ tiPC/5hn2voHevystFJAlzr4Wd5k5pQzBLUQgkGA0DQ 3 + uz/ertXNfuDu9+TA+7RS7YyfeyJu2sPXOHvMLHuKxSg 4 + --- g2buoSZZ7FczgKkr6EnyBUQaqo0gdtXiH5OCZ56JxYM 5 + ׿(� )��n9*���:V� ����o$��E,�ߟ�:��2R�v�\g�,���u1���J������)᜻U���-��#� ����k5��^�%�F�'u���@�U���Y(��R/B�yj��^����ƽ4y���V�l5���تC�͆r�ʛG�Z�~ �m�}1vsZ�a���+����/��rK��A*��[��,�{�8�F��
+6 -2
systems/desktop/default.nix
··· 9 9 10 10 time.timeZone = "Europe/Warsaw"; 11 11 i18n.defaultLocale = "en_US.UTF-8"; 12 - console.keyMap = "pl"; 13 12 14 13 hardware.graphics.enable = true; 15 - services.xserver.videoDrivers = [ "nvidia" ]; 14 + 15 + services.xserver = { 16 + xkb.layout = "us"; 17 + xkbVariant = "colemak"; 18 + videoDrivers = [ "nvidia" ]; 19 + }; 16 20 17 21 hardware.nvidia = { 18 22 modesetting.enable = true;
+11 -1
systems/laptop/default.nix
··· 1 + { pkgs, ... }: 2 + 1 3 { 2 4 imports = [ 3 5 ./hardware-configuration.nix ··· 7 9 8 10 time.timeZone = "Europe/Warsaw"; 9 11 i18n.defaultLocale = "en_US.UTF-8"; 10 - console.keyMap = "pl"; 12 + 13 + services.xserver = { 14 + xkb.layout = "us"; 15 + xkbVariant = "colemak"; 16 + }; 17 + 18 + environment.systemPackages = with pkgs; [ 19 + brightnessctl 20 + ]; 11 21 }