Personal Nix setup
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Clean up, simplify, and switch to KDE

+72 -1140
+1 -346
flake.lock
··· 115 115 "type": "github" 116 116 } 117 117 }, 118 - "flake-compat_2": { 119 - "locked": { 120 - "lastModified": 1688025799, 121 - "narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=", 122 - "owner": "nix-community", 123 - "repo": "flake-compat", 124 - "rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c", 125 - "type": "github" 126 - }, 127 - "original": { 128 - "owner": "nix-community", 129 - "repo": "flake-compat", 130 - "type": "github" 131 - } 132 - }, 133 118 "flake-parts": { 134 119 "inputs": { 135 120 "nixpkgs-lib": [ ··· 151 136 "type": "github" 152 137 } 153 138 }, 154 - "flake-parts_2": { 155 - "inputs": { 156 - "nixpkgs-lib": [ 157 - "nixpkgs-wayland", 158 - "nix-eval-jobs", 159 - "nixpkgs" 160 - ] 161 - }, 162 - "locked": { 163 - "lastModified": 1698882062, 164 - "narHash": "sha256-HkhafUayIqxXyHH1X8d9RDl1M2CkFgZLjKD3MzabiEo=", 165 - "owner": "hercules-ci", 166 - "repo": "flake-parts", 167 - "rev": "8c9fa2545007b49a5db5f650ae91f227672c3877", 168 - "type": "github" 169 - }, 170 - "original": { 171 - "owner": "hercules-ci", 172 - "repo": "flake-parts", 173 - "type": "github" 174 - } 175 - }, 176 139 "flake-utils": { 177 140 "inputs": { 178 141 "systems": "systems" ··· 193 156 }, 194 157 "flake-utils_2": { 195 158 "inputs": { 196 - "systems": "systems_3" 197 - }, 198 - "locked": { 199 - "lastModified": 1694529238, 200 - "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", 201 - "owner": "numtide", 202 - "repo": "flake-utils", 203 - "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", 204 - "type": "github" 205 - }, 206 - "original": { 207 - "owner": "numtide", 208 - "repo": "flake-utils", 209 - "type": "github" 210 - } 211 - }, 212 - "flake-utils_3": { 213 - "inputs": { 214 - "systems": "systems_4" 159 + "systems": "systems_2" 215 160 }, 216 161 "locked": { 217 162 "lastModified": 1694529238, ··· 324 269 "type": "github" 325 270 } 326 271 }, 327 - "hyprland": { 328 - "inputs": { 329 - "hyprland-protocols": "hyprland-protocols", 330 - "nixpkgs": [ 331 - "nixpkgs" 332 - ], 333 - "systems": "systems_2", 334 - "wlroots": "wlroots", 335 - "xdph": "xdph" 336 - }, 337 - "locked": { 338 - "lastModified": 1699726486, 339 - "narHash": "sha256-8PP26+ybmScq5WpFd2JPqUDzG2VggYOvD6/rzY9/CJ4=", 340 - "owner": "hyprwm", 341 - "repo": "Hyprland", 342 - "rev": "9afdd61adeaf413afbe853dbc5fdf6853c8bde21", 343 - "type": "github" 344 - }, 345 - "original": { 346 - "owner": "hyprwm", 347 - "ref": "v0.32.3", 348 - "repo": "Hyprland", 349 - "type": "github" 350 - } 351 - }, 352 - "hyprland-protocols": { 353 - "inputs": { 354 - "nixpkgs": [ 355 - "hyprland", 356 - "nixpkgs" 357 - ], 358 - "systems": [ 359 - "hyprland", 360 - "systems" 361 - ] 362 - }, 363 - "locked": { 364 - "lastModified": 1691753796, 365 - "narHash": "sha256-zOEwiWoXk3j3+EoF3ySUJmberFewWlagvewDRuWYAso=", 366 - "owner": "hyprwm", 367 - "repo": "hyprland-protocols", 368 - "rev": "0c2ce70625cb30aef199cb388f99e19a61a6ce03", 369 - "type": "github" 370 - }, 371 - "original": { 372 - "owner": "hyprwm", 373 - "repo": "hyprland-protocols", 374 - "type": "github" 375 - } 376 - }, 377 - "hyprpaper": { 378 - "inputs": { 379 - "nixpkgs": [ 380 - "nixpkgs" 381 - ] 382 - }, 383 - "locked": { 384 - "lastModified": 1691060455, 385 - "narHash": "sha256-V5ulB9CkGh1ghiC4BKvRdoYKZzpaiOKzAOUmJIFkgM0=", 386 - "owner": "hyprwm", 387 - "repo": "hyprpaper", 388 - "rev": "e498c438b1e16dcf32ecb3030b20b83f7ed9ff6d", 389 - "type": "github" 390 - }, 391 - "original": { 392 - "owner": "hyprwm", 393 - "ref": "v0.4.0", 394 - "repo": "hyprpaper", 395 - "type": "github" 396 - } 397 - }, 398 272 "language-servers": { 399 273 "inputs": { 400 274 "flake-utils": [ ··· 444 318 "type": "github" 445 319 } 446 320 }, 447 - "lib-aggregate": { 448 - "inputs": { 449 - "flake-utils": "flake-utils_3", 450 - "nixpkgs-lib": "nixpkgs-lib" 451 - }, 452 - "locked": { 453 - "lastModified": 1699790908, 454 - "narHash": "sha256-8CO4KQhiEyO7rce4KVOq8arpk9802fVwxtN/oLeRFag=", 455 - "owner": "nix-community", 456 - "repo": "lib-aggregate", 457 - "rev": "6c60a229fa422698325b2788e93dfeeba3f11391", 458 - "type": "github" 459 - }, 460 - "original": { 461 - "owner": "nix-community", 462 - "repo": "lib-aggregate", 463 - "type": "github" 464 - } 465 - }, 466 321 "lir-nvim": { 467 322 "flake": false, 468 323 "locked": { ··· 495 350 "type": "github" 496 351 } 497 352 }, 498 - "nix-eval-jobs": { 499 - "inputs": { 500 - "flake-parts": "flake-parts_2", 501 - "nix-github-actions": "nix-github-actions", 502 - "nixpkgs": "nixpkgs_3", 503 - "treefmt-nix": "treefmt-nix" 504 - }, 505 - "locked": { 506 - "lastModified": 1699796151, 507 - "narHash": "sha256-k/yMWbtMHpiNHeR0ihNPV/idOUSRJuhf0RSCodxmOhc=", 508 - "owner": "nix-community", 509 - "repo": "nix-eval-jobs", 510 - "rev": "213e801956397b3edc16d0c13a3d479b1e0c65a3", 511 - "type": "github" 512 - }, 513 - "original": { 514 - "owner": "nix-community", 515 - "repo": "nix-eval-jobs", 516 - "type": "github" 517 - } 518 - }, 519 - "nix-github-actions": { 520 - "inputs": { 521 - "nixpkgs": [ 522 - "nixpkgs-wayland", 523 - "nix-eval-jobs", 524 - "nixpkgs" 525 - ] 526 - }, 527 - "locked": { 528 - "lastModified": 1698974481, 529 - "narHash": "sha256-yPncV9Ohdz1zPZxYHQf47S8S0VrnhV7nNhCawY46hDA=", 530 - "owner": "nix-community", 531 - "repo": "nix-github-actions", 532 - "rev": "4bb5e752616262457bc7ca5882192a564c0472d2", 533 - "type": "github" 534 - }, 535 - "original": { 536 - "owner": "nix-community", 537 - "repo": "nix-github-actions", 538 - "type": "github" 539 - } 540 - }, 541 353 "nixos-hardware": { 542 354 "locked": { 543 355 "lastModified": 1699701045, ··· 586 398 "type": "github" 587 399 } 588 400 }, 589 - "nixpkgs-lib": { 590 - "locked": { 591 - "lastModified": 1699750082, 592 - "narHash": "sha256-4Vx6Vr975vPGzGACyu4u6JfWo2Auwy0AeC6sTSOXdTQ=", 593 - "owner": "nix-community", 594 - "repo": "nixpkgs.lib", 595 - "rev": "55682344eae38a1975ccd2cfac0dcb4197faedf8", 596 - "type": "github" 597 - }, 598 - "original": { 599 - "owner": "nix-community", 600 - "repo": "nixpkgs.lib", 601 - "type": "github" 602 - } 603 - }, 604 401 "nixpkgs-stable": { 605 402 "locked": { 606 403 "lastModified": 1685801374, ··· 617 414 "type": "github" 618 415 } 619 416 }, 620 - "nixpkgs-wayland": { 621 - "inputs": { 622 - "flake-compat": "flake-compat_2", 623 - "lib-aggregate": "lib-aggregate", 624 - "nix-eval-jobs": "nix-eval-jobs", 625 - "nixpkgs": [ 626 - "nixpkgs" 627 - ] 628 - }, 629 - "locked": { 630 - "lastModified": 1699902754, 631 - "narHash": "sha256-c5i/MwKzFdzWi0trXq3aCtsW4LSStiN5SAfezB8uBUQ=", 632 - "owner": "nix-community", 633 - "repo": "nixpkgs-wayland", 634 - "rev": "c66ac6fd29b2245d16b7f63ecf2bfac103ca6847", 635 - "type": "github" 636 - }, 637 - "original": { 638 - "owner": "nix-community", 639 - "repo": "nixpkgs-wayland", 640 - "type": "github" 641 - } 642 - }, 643 417 "nixpkgs_2": { 644 418 "locked": { 645 419 "lastModified": 1699099776, ··· 652 426 "original": { 653 427 "owner": "nixos", 654 428 "ref": "nixos-unstable", 655 - "repo": "nixpkgs", 656 - "type": "github" 657 - } 658 - }, 659 - "nixpkgs_3": { 660 - "locked": { 661 - "lastModified": 1699794571, 662 - "narHash": "sha256-a9fa+AYCSiL1w9GBz4bIoj/rw4hZIntpaCdhXqHSLfM=", 663 - "owner": "NixOS", 664 - "repo": "nixpkgs", 665 - "rev": "44cf4801c0937b76cc6f416a0b160b5d1b3286af", 666 - "type": "github" 667 - }, 668 - "original": { 669 - "owner": "NixOS", 670 - "ref": "master", 671 429 "repo": "nixpkgs", 672 430 "type": "github" 673 431 } ··· 1084 842 "darwin": "darwin_2", 1085 843 "flake-utils": "flake-utils", 1086 844 "home-manager": "home-manager_2", 1087 - "hyprland": "hyprland", 1088 - "hyprpaper": "hyprpaper", 1089 845 "language-servers": "language-servers", 1090 846 "lanzaboote": "lanzaboote", 1091 847 "nixos-hardware": "nixos-hardware", 1092 848 "nixpkgs": "nixpkgs_2", 1093 849 "nixpkgs-darwin": "nixpkgs-darwin", 1094 - "nixpkgs-wayland": "nixpkgs-wayland", 1095 850 "nvim-plugins": "nvim-plugins" 1096 851 } 1097 852 }, ··· 1137 892 }, 1138 893 "systems_2": { 1139 894 "locked": { 1140 - "lastModified": 1689347949, 1141 - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", 1142 - "owner": "nix-systems", 1143 - "repo": "default-linux", 1144 - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", 1145 - "type": "github" 1146 - }, 1147 - "original": { 1148 - "owner": "nix-systems", 1149 - "repo": "default-linux", 1150 - "type": "github" 1151 - } 1152 - }, 1153 - "systems_3": { 1154 - "locked": { 1155 - "lastModified": 1681028828, 1156 - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 1157 - "owner": "nix-systems", 1158 - "repo": "default", 1159 - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", 1160 - "type": "github" 1161 - }, 1162 - "original": { 1163 - "owner": "nix-systems", 1164 - "repo": "default", 1165 - "type": "github" 1166 - } 1167 - }, 1168 - "systems_4": { 1169 - "locked": { 1170 895 "lastModified": 1681028828, 1171 896 "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", 1172 897 "owner": "nix-systems", ··· 1197 922 "type": "github" 1198 923 } 1199 924 }, 1200 - "treefmt-nix": { 1201 - "inputs": { 1202 - "nixpkgs": [ 1203 - "nixpkgs-wayland", 1204 - "nix-eval-jobs", 1205 - "nixpkgs" 1206 - ] 1207 - }, 1208 - "locked": { 1209 - "lastModified": 1699786194, 1210 - "narHash": "sha256-3h3EH1FXQkIeAuzaWB+nK0XK54uSD46pp+dMD3gAcB4=", 1211 - "owner": "numtide", 1212 - "repo": "treefmt-nix", 1213 - "rev": "e82f32aa7f06bbbd56d7b12186d555223dc399d1", 1214 - "type": "github" 1215 - }, 1216 - "original": { 1217 - "owner": "numtide", 1218 - "repo": "treefmt-nix", 1219 - "type": "github" 1220 - } 1221 - }, 1222 925 "trouble-nvim": { 1223 926 "flake": false, 1224 927 "locked": { ··· 1298 1001 "owner": "folke", 1299 1002 "ref": "v1.4.3", 1300 1003 "repo": "which-key.nvim", 1301 - "type": "github" 1302 - } 1303 - }, 1304 - "wlroots": { 1305 - "flake": false, 1306 - "locked": { 1307 - "host": "gitlab.freedesktop.org", 1308 - "lastModified": 1699292815, 1309 - "narHash": "sha256-HXu98PyBMKEWLqiTb8viuLDznud/SdkdJsx5A5CWx7I=", 1310 - "owner": "wlroots", 1311 - "repo": "wlroots", 1312 - "rev": "5de9e1a99d6642c2d09d589aa37ff0a8945dcee1", 1313 - "type": "gitlab" 1314 - }, 1315 - "original": { 1316 - "host": "gitlab.freedesktop.org", 1317 - "owner": "wlroots", 1318 - "repo": "wlroots", 1319 - "rev": "5de9e1a99d6642c2d09d589aa37ff0a8945dcee1", 1320 - "type": "gitlab" 1321 - } 1322 - }, 1323 - "xdph": { 1324 - "inputs": { 1325 - "hyprland-protocols": [ 1326 - "hyprland", 1327 - "hyprland-protocols" 1328 - ], 1329 - "nixpkgs": [ 1330 - "hyprland", 1331 - "nixpkgs" 1332 - ], 1333 - "systems": [ 1334 - "hyprland", 1335 - "systems" 1336 - ] 1337 - }, 1338 - "locked": { 1339 - "lastModified": 1697981233, 1340 - "narHash": "sha256-y8q4XUwx+gVK7i2eLjfR32lVo7TYvEslyzrmzYEaPZU=", 1341 - "owner": "hyprwm", 1342 - "repo": "xdg-desktop-portal-hyprland", 1343 - "rev": "22e7a65ff9633e1dedfa5317fdffc49f68de2ff2", 1344 - "type": "github" 1345 - }, 1346 - "original": { 1347 - "owner": "hyprwm", 1348 - "repo": "xdg-desktop-portal-hyprland", 1349 1004 "type": "github" 1350 1005 } 1351 1006 }
+1 -19
flake.nix
··· 28 28 inputs.nixpkgs.follows = "nixpkgs-darwin"; 29 29 }; 30 30 31 - hyprland = { 32 - url = "github:hyprwm/Hyprland/v0.32.3"; 33 - inputs.nixpkgs.follows = "nixpkgs"; 34 - }; 35 - 36 - hyprpaper = { 37 - url = "github:hyprwm/hyprpaper/v0.4.0"; 38 - inputs.nixpkgs.follows = "nixpkgs"; 39 - }; 40 - 41 - nixpkgs-wayland = { 42 - url = "github:nix-community/nixpkgs-wayland"; 43 - inputs.nixpkgs.follows = "nixpkgs"; 44 - }; 45 - 46 31 language-servers = { 47 32 url = "git+https://github.com/fxcl/language-servers.nix"; 48 33 inputs = { ··· 60 45 }; 61 46 }; 62 47 63 - outputs = { nixos-hardware, hyprland, ...} @ inputs: let 48 + outputs = { nixos-hardware, ...} @ inputs: let 64 49 inherit (import ./lib/system.nix inputs) mkSystem; 65 50 overlays = [ 66 51 inputs.nvim-plugins.overlays.default 67 - inputs.nixpkgs-wayland.overlays.default 68 - inputs.hyprland.overlays.default 69 - inputs.hyprpaper.overlays.default 70 52 (self: super: { 71 53 inherit (inputs.language-servers.packages.${self.system}) typescript-language-server vscode-langservers-extracted; 72 54 })
-9
home/apps/basic.nix
··· 1 - { pkgs, ... }: 2 - 3 - { 4 - home.packages = with pkgs; [ 5 - gnome.gnome-calendar 6 - gnome.nautilus 7 - gnome.sushi 8 - ]; 9 - }
-1
home/apps/default.nix
··· 2 2 3 3 { 4 4 imports = [ 5 - ./basic.nix 6 5 ./firefox.nix 7 6 ]; 8 7 }
-7
home/apps/firefox.nix
··· 3 3 { 4 4 programs.firefox = { 5 5 enable = true; 6 - enableGnomeExtensions = false; 7 6 profiles.default = { 8 7 settings = { 9 8 "browser.aboutConfig.showWarning" = false; ··· 24 23 "dom.ipc.processCount" = 4; 25 24 "toolkit.legacyUserProfileCustomizations.stylesheets" = true; 26 25 }; 27 - 28 - userChrome = '' 29 - .titlebar-min, .titlebar-max, .titlebar-restore, .titlebar-close { 30 - display: none !important; 31 - } 32 - ''; 33 26 }; 34 27 }; 35 28
-7
home/desktop/default.nix
··· 2 2 3 3 { 4 4 imports = [ 5 - ./hyprland.nix 6 - ./hyprpaper.nix 7 - ./notifications.nix 8 5 ./theme.nix 9 - ./kanshi.nix 10 - ./waybar.nix 11 - ./wofi.nix 12 - ./lock.nix 13 6 ]; 14 7 }
-108
home/desktop/hyprland.nix
··· 1 - { pkgs, hyprland, ... } @ inputs: 2 - 3 - let 4 - inherit (import ../../lib/colors.nix inputs) hex; 5 - in { 6 - imports = [ 7 - hyprland.homeManagerModules.default 8 - ]; 9 - 10 - wayland.windowManager.hyprland = { 11 - enable = true; 12 - xwayland.enable = true; 13 - recommendedEnvironment = true; 14 - 15 - extraConfig = '' 16 - $wofi = ${pkgs.wofi}/bin/wofi 17 - $swaync = ${pkgs.swaynotificationcenter}/bin/swaync-client 18 - $pwmanager = ${pkgs.rofi-rbw}/bin/rofi-rbw 19 - $terminal = ${pkgs.wezterm}/bin/wezterm 20 - $volume = ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 21 - $mute = ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle 22 - $light = ${pkgs.light}/bin/light 23 - $player = ${pkgs.playerctl}/bin/playerctl 24 - $pkill = ${pkgs.procps}/bin/pkill 25 - 26 - bind = SUPER, Escape, exec, $terminal 27 - bind = SUPER, Space, exec, $pkill wofi || $wofi 28 - bind = SUPER, Return, exec, $swaync -op -sw 29 - bind = SUPER, Q, killactive 30 - 31 - bind = SUPER, Tab, cyclenext, 32 - bind = SUPER, Tab, bringactivetotop, 33 - 34 - bind = SUPER, backslash, exec, $pwmanager 35 - 36 - bindel =, XF86AudioRaiseVolume, exec, $volume 5%+ 37 - bindel =, XF86AudioLowerVolume, exec, $volume 5%- 38 - bindel =, XF86AudioMute, exec, $mute 39 - bindel =, XF86MonBrightnessDown, exec, $light -U 10 40 - bindel =, XF86MonBrightnessUp, exec, $light -A 10 41 - bind =, XF86AudioPlay, exec, $player play-pause 42 - bind =, XF86AudioPrev, exec, $player previous 43 - bind =, XF86AudioNext, exec, $player next 44 - 45 - exec-once=xprop -root -f _XWAYLAND_GLOBAL_OUTPUT_SCALE 32c -set _XWAYLAND_GLOBAL_OUTPUT_SCALE 2 46 - 47 - windowrule = float, title:^(Firefox — Sharing Indicator)$ 48 - windowrule = nofocus, title:^(Firefox — Sharing Indicator)$ 49 - windowrule = move 20 100%-60, title:^(Firefox — Sharing Indicator)$ 50 - 51 - layerrule = blur, wofi 52 - layerrule = ignorezero, wofi 53 - 54 - layerrule = blur, waybar 55 - layerrule = ignorezero, waybar 56 - 57 - layerrule = blur, swaync-control-center 58 - layerrule = ignorezero, swaync-control-center 59 - 60 - layerrule = blur, swaync-notification-window 61 - layerrule = ignorezero, swaync-notification-window 62 - 63 - general { 64 - gaps_in = 6 65 - gaps_out = 10 66 - col.inactive_border = 0xff${hex.gutter} 67 - col.active_border = 0xff${hex.split} 68 - no_border_on_floating = true 69 - } 70 - 71 - decoration { 72 - rounding = 4 73 - 74 - blur { 75 - enabled = true 76 - size = 16 77 - passes = 3 78 - ignore_opacity = false 79 - } 80 - 81 - drop_shadow = true 82 - shadow_range = 30 83 - shadow_ignore_window = true 84 - shadow_offset = [0, 20] 85 - shadow_render_power = 2 86 - col.shadow = 0x14000000 87 - col.shadow_inactive = 0x201a1a1a 88 - } 89 - 90 - input { 91 - kb_options = ctrl:nocaps 92 - touchpad { 93 - clickfinger_behavior = true 94 - tap-to-click = false 95 - scroll_factor = 0.2 96 - } 97 - } 98 - 99 - misc { 100 - disable_hyprland_logo = true 101 - disable_splash_rendering = true 102 - mouse_move_enables_dpms = true 103 - key_press_enables_dpms = true 104 - vfr = true 105 - } 106 - ''; 107 - }; 108 - }
-27
home/desktop/hyprpaper.nix
··· 1 - { pkgs, ... }: 2 - 3 - { 4 - xdg.configFile."hypr/hyprpaper.conf".text = '' 5 - preload = ~/Pictures/pixelwallpaper.jpg 6 - wallpaper = eDP-1, ~/Pictures/pixelwallpaper.jpg 7 - ''; 8 - 9 - systemd.user.services.hyprpaper = { 10 - Unit = { 11 - Description = "Blazing fast Wayland wallpaper utility"; 12 - PartOf = [ "graphical-session.target" ]; 13 - After = [ "graphical-session.target" ]; 14 - }; 15 - 16 - Install = { 17 - WantedBy = [ "hyprland-session.target" ]; 18 - }; 19 - 20 - Service = { 21 - ExecStart = "${pkgs.hyprpaper}/bin/hyprpaper"; 22 - ExecReload = "${pkgs.coreutils}/bin/kill -SIGUSR2 $MAINPID"; 23 - Restart = "on-failure"; 24 - KillMode = "mixed"; 25 - }; 26 - }; 27 - }
-18
home/desktop/kanshi.nix
··· 1 - { ... }: 2 - 3 - { 4 - services.kanshi = { 5 - enable = true; 6 - systemdTarget = "graphical-session.target"; 7 - profiles = { 8 - default = { 9 - outputs = [ 10 - { 11 - criteria = "eDP-1"; 12 - scale = 1.44; 13 - } 14 - ]; 15 - }; 16 - }; 17 - }; 18 - }
-73
home/desktop/lock.nix
··· 1 - { pkgs, ... } @ inputs: 2 - 3 - let 4 - inherit (import ../../lib/colors.nix inputs) hex; 5 - inherit (pkgs) hyprland swayidle; 6 - swaylock = pkgs.swaylock-effects; 7 - in { 8 - services.swayidle = let 9 - dpms = "${hyprland}/bin/hyprctl dispatch dpms"; 10 - lock = "${swaylock}/bin/swaylock"; 11 - in { 12 - enable = true; 13 - package = swayidle; 14 - systemdTarget = "graphical-session.target"; 15 - extraArgs = [ 16 - "idlehint 60" 17 - ]; 18 - events = [ 19 - { 20 - event = "lock"; 21 - command = "${lock}"; 22 - } 23 - { 24 - event = "before-sleep"; 25 - command = "${lock}"; 26 - } 27 - { 28 - event = "after-resume"; 29 - command = "${dpms} on"; 30 - } 31 - ]; 32 - timeouts = [ 33 - { 34 - timeout = 120; 35 - command = "systemctl suspend-then-hibernate"; 36 - resumeCommand = "${dpms} on"; 37 - } 38 - ]; 39 - }; 40 - 41 - programs.swaylock = { 42 - enable = true; 43 - package = swaylock; 44 - settings = { 45 - screenshots = true; 46 - clock = true; 47 - indicator = true; 48 - indicator-radius = 100; 49 - fade-in = 0.2; 50 - effect-blur = "16x3"; 51 - effect-vignette = "0.5:0.5"; 52 - timestr = "%H:%M"; 53 - font = "Inter"; 54 - key-hl-color = "${hex.brightBlue}"; 55 - inside-color = "00000088"; 56 - inside-caps-lock-color = "00000088"; 57 - inside-ver-color = "00000088"; 58 - inside-wrong-color = "00000088"; 59 - inside-clear-color = "${hex.cyan}"; 60 - text-color = "${hex.white}"; 61 - text-clear-color = "${hex.white}"; 62 - text-caps-lock-color = "${hex.white}"; 63 - text-ver-color = "${hex.white}"; 64 - text-wrong-color = "${hex.white}"; 65 - layout-text-color = "${hex.white}"; 66 - ring-color = "${hex.blue}"; 67 - ring-caps-lock-color = "${hex.brightBlue}"; 68 - ring-ver-color = "${hex.purple}"; 69 - ring-wrong-color = "${hex.red}"; 70 - ring-clear-color = "${hex.cyan}"; 71 - }; 72 - }; 73 - }
-110
home/desktop/notifications.nix
··· 1 - { pkgs, ... } @ inputs: 2 - 3 - let 4 - inherit (import ../../lib/colors.nix inputs) colors lightStroke shell; 5 - package = pkgs.swaynotificationcenter; 6 - in { 7 - home.packages = [ package ]; 8 - 9 - xdg.configFile."swaync/config.json".text = builtins.toJSON { 10 - positionX = "right"; 11 - positionY = "top"; 12 - layer = "top"; 13 - control-center-positionX = "right"; 14 - control-center-positionY = "top"; 15 - control-center-layer = "overlay"; 16 - layer-shell = true; 17 - fit-to-screen = false; 18 - }; 19 - 20 - xdg.configFile."swaync/style.css".text = '' 21 - * { 22 - text-shadow: none; 23 - font-family: Inter, FontAwesome6Pro; 24 - } 25 - 26 - .blank-window { 27 - background: transparent; 28 - margin: 0; 29 - padding: 0; 30 - } 31 - 32 - .control-center { 33 - background: ${shell}; 34 - border: 1px solid ${lightStroke}; 35 - margin: 8px; 36 - padding: 1rem; 37 - border-radius: 1rem; 38 - color: ${colors.white.gui}; 39 - } 40 - 41 - .notification { 42 - background: ${shell}; 43 - border: 1px solid ${lightStroke}; 44 - padding: 5px 10px 5px 10px; 45 - border-radius: 1rem; 46 - color: ${colors.white.gui}; 47 - box-shadow: none; 48 - font-size: .9rem; 49 - } 50 - 51 - .notification > * { 52 - background: none; 53 - border: none; 54 - padding: 0; 55 - margin: 0; 56 - } 57 - 58 - .notification-content { 59 - background: none; 60 - padding: 6px; 61 - border-radius: 12px; 62 - } 63 - 64 - .notification-row { 65 - outline: none; 66 - background: none; 67 - border: none; 68 - } 69 - 70 - .time { 71 - background: none; 72 - } 73 - 74 - .summary { 75 - background: none; 76 - } 77 - 78 - .body { 79 - background: none; 80 - } 81 - ''; 82 - 83 - systemd.user.services.swaync = { 84 - Unit = { 85 - Description = "Swaync notification daemon"; 86 - PartOf = [ "graphical-session.target" ]; 87 - After = [ "graphical-session.target" ]; 88 - ConditionEnvironment = "WAYLAND_DISPLAY"; 89 - }; 90 - 91 - Install = { 92 - WantedBy = [ "hyprland-session.target" ]; 93 - }; 94 - 95 - Service = { 96 - Type = "dbus"; 97 - BusName = "org.freedesktop.Notification"; 98 - ExecStart = "${package}/bin/swaync"; 99 - ExecReload = "${package}/bin/swaync-client --reload-config ; ${package}/bin/swaync-client --reload-css"; 100 - Restart = "on-failure"; 101 - }; 102 - }; 103 - 104 - xdg.dataFile."dbus-1/services/swaync.service".text = '' 105 - [D-BUS Service] 106 - Name=org.freedesktop.Notification 107 - Exec=${package}/bin/swaync 108 - SystemdService=swaync.service 109 - ''; 110 - }
+3 -57
home/desktop/theme.nix
··· 1 1 { pkgs, ... } @ inputs: 2 2 3 - let 4 - inherit (import ../../lib/colors.nix inputs) hex; 5 - inherit (pkgs) hyprland swayidle; 6 - swaylock = pkgs.swaylock-effects; 7 - in { 3 + { 4 + fonts.fontconfig.enable = true; 5 + 8 6 services.xsettingsd = { 9 7 enable = true; 10 8 settings = { 11 9 "Gtk/CursorThemeName" = "Bibata-Modern-Classic"; 12 - "Net/IconThemeName" = "WhiteSur-dark"; 13 10 "Xft/Antialias" = true; 14 11 "Xft/Hinting" = true; 15 12 "Xft/HintStyle" = "hintslight"; ··· 18 15 }; 19 16 }; 20 17 21 - fonts.fontconfig.enable = true; 22 - 23 18 home.pointerCursor = { 24 19 name = "Bibata-Modern-Classic"; 25 20 package = pkgs.bibata-cursors; 26 21 size = 24; 27 22 gtk.enable = true; 28 23 x11.enable = true; 29 - }; 30 - 31 - dconf = { 32 - enable = true; 33 - settings = { 34 - "org/gnome/desktop/interface" = { 35 - color-scheme = "prefer-dark"; 36 - }; 37 - }; 38 - }; 39 - 40 - gtk = { 41 - enable = true; 42 - 43 - font = { 44 - package = pkgs.inter; 45 - name = "Inter"; 46 - size = 10; 47 - }; 48 - 49 - iconTheme = { 50 - name = "WhiteSur-dark"; 51 - package = pkgs.whitesur-icon-theme.override { 52 - alternativeIcons = true; 53 - boldPanelIcons = true; 54 - }; 55 - }; 56 - 57 - theme = { 58 - name = "WhiteSur-Dark"; 59 - package = pkgs.whitesur-gtk-theme; 60 - }; 61 - 62 - gtk3.extraConfig = { 63 - gtk-application-prefer-dark-theme = 1; 64 - }; 65 - 66 - gtk4.extraConfig = { 67 - gtk-application-prefer-dark-theme = 1; 68 - }; 69 - }; 70 - 71 - qt = { 72 - enable = true; 73 - platformTheme = "gtk"; 74 - }; 75 - 76 - systemd.user.sessionVariables = { 77 - GTK_THEME = "WhiteSur-Dark"; 78 24 }; 79 25 }
-137
home/desktop/waybar.nix
··· 1 - { pkgs, ... } @ inputs: 2 - 3 - let 4 - inherit (import ../../lib/colors.nix inputs) colors shell; 5 - swaync-client = "${pkgs.swaynotificationcenter}/bin/swaync-client"; 6 - wait = "${pkgs.coreutils}/bin/sleep 0.1"; 7 - in { 8 - services = { 9 - network-manager-applet.enable = true; 10 - blueman-applet.enable = true; 11 - mpris-proxy.enable = true; 12 - playerctld.enable = true; 13 - }; 14 - 15 - programs.waybar = { 16 - enable = true; 17 - systemd.enable = true; 18 - 19 - settings = { 20 - mainBar = { 21 - layer = "top"; 22 - passthrough = false; 23 - fixed-center = true; 24 - spacing = 12; 25 - 26 - modules-left = [ "custom/wofi" ]; 27 - modules-center = [ "clock" "custom/swaync" ]; 28 - modules-right = [ "tray" "wireplumber" "battery" ]; 29 - 30 - "custom/wofi" = { 31 - format = ""; 32 - on-click = "${wait} && ${pkgs.wofi}/bin/wofi"; 33 - tooltip = false; 34 - escape = true; 35 - }; 36 - 37 - "custom/swaync" = { 38 - format = "{icon}"; 39 - tooltip = false; 40 - escape = true; 41 - return-type = "json"; 42 - on-click = "${wait} && ${swaync-client} -t -sw"; 43 - on-click-right = "${wait} && ${swaync-client} -d -sw"; 44 - exec = "${swaync-client} -swb"; 45 - format-icons = { 46 - notification = " <span foreground='${colors.brightYellow.gui}'></span>"; 47 - none = ""; 48 - dnd-notification = " <span foreground='${colors.brightYellow.gui}'></span>"; 49 - dnd-none = ""; 50 - inhibited-notification = " <span foreground='${colors.brightYellow.gui}'></span>"; 51 - inhibited-none = ""; 52 - dnd-inhibited-notification = " <span foreground='${colors.brightYellow.gui}'></span>"; 53 - dnd-inhibited-none = ""; 54 - }; 55 - }; 56 - 57 - tray = { 58 - icon-size = 16; 59 - spacing = 8; 60 - tooltip = false; 61 - }; 62 - 63 - clock = { 64 - interval = 60; 65 - format = "{:%a %b %d %H:%M}"; 66 - tooltip = false; 67 - }; 68 - 69 - battery = { 70 - interval = 60; 71 - full-at = 100; 72 - states = { 73 - good = 90; 74 - warning = 30; 75 - critical = 15; 76 - }; 77 - format = "{icon} {capacity}%"; 78 - format-charging = " {capacity}%"; 79 - format-plugged = " {capacity}%"; 80 - format-full = " 100%"; 81 - format-icons = [ "" "" "" "" "" ]; 82 - tooltip = false; 83 - }; 84 - 85 - wireplumber = { 86 - format = "{icon}"; 87 - format-icons = [ "" "" "" ]; 88 - format-muted = ""; 89 - max-volume = 100; 90 - tooltip = false; 91 - }; 92 - }; 93 - }; 94 - 95 - style = '' 96 - * { 97 - text-shadow: none; 98 - font-size: .9rem; 99 - font-feature-settings: "tnum"; 100 - font-family: Inter, FontAwesome6Pro; 101 - color: ${colors.white.gui}; 102 - } 103 - 104 - window#waybar { 105 - background: none; 106 - min-height: 0; 107 - } 108 - 109 - window > box { 110 - background: none; 111 - margin: 10px 10px 0 10px; 112 - } 113 - 114 - .modules-left, .modules-right, .modules-center { 115 - background: ${shell}; 116 - padding: 5px 10px 5px 10px; 117 - border-radius: 1rem; 118 - } 119 - 120 - tooltip { 121 - background: ${shell}; 122 - padding: 5px 10px 5px 10px; 123 - border: none; 124 - } 125 - 126 - tooltip label { 127 - background: none; 128 - border: none; 129 - } 130 - 131 - #workspaces button { 132 - padding: 2px 8px 2px 8px; 133 - background: transparent; 134 - } 135 - ''; 136 - }; 137 - }
-107
home/desktop/wofi.nix
··· 1 - { ... } @ inputs: 2 - 3 - let 4 - inherit (import ../../lib/colors.nix inputs) shell lightStroke colors; 5 - in { 6 - programs.wofi = { 7 - enable = true; 8 - 9 - settings = { 10 - show = "drun"; 11 - prompt = "Search..."; 12 - normal_window = true; 13 - layer = "top"; 14 - term = "wezterm"; 15 - 16 - width = "500px"; 17 - height = "305px"; 18 - location = 0; 19 - orientation = "vertical"; 20 - halign = "fill"; 21 - line_wrap = "off"; 22 - dynamic_lines = false; 23 - 24 - allow_markup = true; 25 - allow_images = true; 26 - image_size = 24; 27 - 28 - exec_search = false; 29 - hide_search = false; 30 - parse_search = false; 31 - insensitive = false; 32 - 33 - hide_scroll = true; 34 - no_actions = true; 35 - sort_order = "default"; 36 - gtk_dark = true; 37 - filter_rate = 100; 38 - 39 - key_expand = "Tab"; 40 - key_exit = "Escape"; 41 - }; 42 - 43 - style = '' 44 - * { 45 - font-family: "Inter", sans-serif; 46 - font-size: 12px; 47 - } 48 - 49 - #window { 50 - background: ${shell}; 51 - border: 1px solid ${lightStroke}; 52 - color: ${colors.white.gui} 53 - border-radius: 1rem; 54 - padding: 1rem; 55 - } 56 - 57 - #outer-box { 58 - padding: 1rem; 59 - } 60 - 61 - #input { 62 - padding: 8px 12px; 63 - background: none; 64 - border: none; 65 - } 66 - 67 - #scroll { 68 - margin-top: 20px; 69 - } 70 - 71 - 72 - #img { 73 - padding-right: 8px; 74 - } 75 - 76 - #text { 77 - color: ${colors.white.gui}; 78 - } 79 - 80 - #text:selected { 81 - color: ${colors.purple.gui}; 82 - } 83 - 84 - #entry { 85 - padding: 6px; 86 - } 87 - 88 - #entry:selected { 89 - background-color: ${colors.grey.gui}; 90 - color: ${colors.white.gui}; 91 - } 92 - 93 - #input, #entry:selected { 94 - border-radius: 4px; 95 - } 96 - ''; 97 - }; 98 - 99 - xdg.configFile."wofi/colors".text = '' 100 - #1e1e2e 101 - #262636 102 - #d9e0ee 103 - #89b4fa 104 - #f38ba8 105 - #cba6f7 106 - ''; 107 - }
-6
home/rbw.nix
··· 9 9 pinentry = if helpers.isDarwin then "curses" else "gnome3"; 10 10 }; 11 11 }; 12 - 13 - xdg.configFile."rofi-rbw.rc".text = '' 14 - action=copy 15 - selector=wofi 16 - clear-after=120 17 - ''; 18 12 }
+1 -3
home/wezterm/init.lua
··· 3 3 4 4 wezterm.on("gui-startup", function(cmd) 5 5 local tab, pane, window = mux.spawn_window(cmd or {}) 6 - if not is_linux then 7 - window:gui_window():maximize() 8 - end 6 + window:gui_window():maximize() 9 7 end) 10 8 11 9 return {
+6
machines/pepper/hardware.nix
··· 102 102 103 103 # enable media acceleration 104 104 hardware.opengl.enable = true; 105 + 106 + # set regulatory domain for wireless chip 107 + hardware.wirelessRegulatoryDatabase = true; 108 + boot.extraModprobeConfig = '' 109 + options cfg80211 ieee80211_regdom="US" 110 + ''; 105 111 }
+13 -3
modules/base/linux.nix
··· 1 - { lib, pkgs, helpers, ... } @ inputs: 1 + { lib, config, pkgs, helpers, ... } @ inputs: 2 2 3 3 let 4 4 inherit (import ../../lib/colors.nix inputs) hex; ··· 8 8 9 9 console = { 10 10 earlySetup = true; 11 + useXkbConfig = true; 11 12 font = "${pkgs.terminus_font}/share/consolefonts/ter-u28n.psf.gz"; 12 - keyMap = "us"; 13 13 14 14 colors = [ 15 15 "${hex.black}" ··· 40 40 systemd-boot.configurationLimit = mkDefault 3; 41 41 }; 42 42 43 - initrd.systemd.enable = true; 43 + initrd = { 44 + verbose = false; 45 + systemd.enable = true; 46 + }; 47 + 48 + kernelPackages = pkgs.linuxPackages_latest; 44 49 45 50 kernelParams = [ 51 + "quiet" 52 + "splash" 53 + "boot.shell_on_fail" 54 + "rd.systemd.show_status=false" 55 + "rd.udev.log_level=3" 46 56 "nmi_watchdog=0" 47 57 "mitigations=off" 48 58 ];
-4
modules/base/nix-config.nix
··· 19 19 substituters = [ 20 20 "https://cache.nixos.org" 21 21 "https://nix-community.cachix.org" 22 - "https://hyprland.cachix.org" 23 - "https://nixpkgs-wayland.cachix.org" 24 22 ]; 25 23 trusted-public-keys = [ 26 24 "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" 27 25 "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" 28 - "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" 29 - "nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA=" 30 26 ]; 31 27 trusted-users = [ "root" "@wheel" ]; 32 28 };
+8 -19
modules/desktop/hardware.nix
··· 1 - { user, config, lib, ... }: 1 + { user, lib, ... }: 2 2 3 3 { 4 4 users.users."${user}".extraGroups = [ "video" ]; 5 5 6 - services = { 7 - logind.extraConfig = '' 8 - HandlerPowerKey=suspend 9 - HandleLidSwitch=suspend 10 - ''; 11 - 12 - pipewire = { 13 - enable = true; 14 - wireplumber.enable = true; 15 - alsa.enable = true; 16 - alsa.support32Bit = true; 17 - pulse.enable = true; 18 - jack.enable = true; 19 - }; 20 - 21 - gvfs.enable = true; 22 - 23 - blueman.enable = lib.mkIf config.hardware.bluetooth.enable true; 6 + services.pipewire = { 7 + enable = true; 8 + wireplumber.enable = true; 9 + alsa.enable = true; 10 + alsa.support32Bit = true; 11 + pulse.enable = true; 12 + jack.enable = true; 24 13 }; 25 14 26 15 hardware = {
+5 -2
modules/desktop/services.nix
··· 3 3 { 4 4 users.users."${user}".extraGroups = [ "video" ]; 5 5 6 - services.printing.enable = true; 7 - services.flatpak.enable = true; 6 + services = { 7 + printing.enable = true; 8 + flatpak.enable = true; 9 + colord.enable = true; 10 + }; 8 11 }
+34 -77
modules/desktop/session.nix
··· 1 - { hyprland, pkgs, lib, user, ... }: 1 + { pkgs, lib, user, ... }: 2 2 3 3 { 4 - imports = [ 5 - hyprland.nixosModules.default 6 - ]; 7 - 8 - environment.systemPackages = with pkgs; [ 9 - wl-clipboard 10 - wtype 11 - xdg-utils 12 - ]; 13 - 14 - services = { 15 - geoclue2.enable = true; 16 - dbus.packages = [ pkgs.gcr ]; 17 - udev.packages = [ pkgs.gnome.gnome-settings-daemon ]; 18 - gnome.gnome-keyring.enable = true; 4 + boot.plymouth.enable = true; 19 5 20 - xserver = { 21 - enable = true; 22 - desktopManager.xterm.enable = false; 23 - displayManager = { 24 - lightdm.enable = lib.mkForce false; 25 - gdm.enable = lib.mkForce false; 26 - defaultSession = "hyprland"; 6 + services.xserver = { 7 + enable = true; 8 + desktopManager = { 9 + xterm.enable = false; 10 + plasma5 = { 11 + enable = true; 12 + useQtScaling = true; 27 13 }; 28 14 }; 29 - }; 30 - 31 - services.greetd = let 32 - hyprland_config = pkgs.writeText "greetd-hyprland-config" '' 33 - exec-once = ${lib.getExe pkgs.greetd.gtkgreet} -l --cmd ${hyprland_shell}; ${pkgs.hyprland}/bin/hyprctl dispatch exit 34 - misc { 35 - disable_hyprland_logo = true 36 - disable_splash_rendering = true 37 - } 38 - ''; 39 - hyprland_shell = pkgs.writeShellScript "hyprland-shell" '' 40 - exec systemd-cat -t hyprland ${pkgs.hyprland}/bin/Hyprland 41 - ''; 42 - hyprland_login = pkgs.writeShellScript "hyprland-login" '' 43 - exec ${pkgs.hyprland}/bin/Hyprland --config ${hyprland_config}; 44 - ''; 45 - in { 46 - enable = true; 47 - settings = { 48 - terminal.vt = 2; 49 - default_session = { 50 - command = "${pkgs.greetd.greetd}/bin/agreety --cmd ${hyprland_shell}"; 15 + displayManager = { 16 + defaultSession = "plasmawayland"; 17 + autoLogin = { 18 + inherit user; 19 + enable = true; 51 20 }; 52 - initial_session = { 53 - command = "${hyprland_shell}"; 54 - user = "${user}"; 21 + sddm = { 22 + enable = true; 23 + enableHidpi = true; 24 + wayland.enable = true; 55 25 }; 26 + lightdm.enable = lib.mkForce false; 27 + gdm.enable = lib.mkForce false; 56 28 }; 57 29 }; 58 30 31 + environment.plasma5 = { 32 + excludePackages = with pkgs.libsForQt5; [ 33 + elisa 34 + gwenview 35 + oxygen 36 + oxygen-sounds 37 + khelpcenter 38 + konsole 39 + plasma-browser-integration 40 + plank-player 41 + aura-browser 42 + ]; 43 + }; 44 + 59 45 security = { 60 46 polkit.enable = true; 61 - pam.services.greetd.enableGnomeKeyring = true; 62 - }; 63 - 64 - programs = { 65 - dconf.enable = true; 66 - 67 - hyprland = { 68 - enable = true; 69 - xwayland.enable = true; 70 - }; 71 47 }; 72 48 73 49 xdg.portal = { 74 50 enable = true; 75 51 xdgOpenUsePortal = false; 76 - extraPortals = with pkgs; [ 77 - xdg-desktop-portal-gtk 78 - ]; 79 - }; 80 - 81 - security.pam.services.swaylock = {}; 82 - 83 - systemd.user.services.polkit-agent = { 84 - description = "Polkit Authentication Agent"; 85 - wantedBy = [ "graphical-session.target" ]; 86 - wants = [ "graphical-session.target" ]; 87 - after = [ "graphical-session.target" ]; 88 - serviceConfig = { 89 - Type = "simple"; 90 - ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; 91 - Restart = "on-failure"; 92 - RestartSec = 1; 93 - TimeoutStopSec = 10; 94 - }; 95 52 }; 96 53 }