diff options
| -rw-r--r-- | accounts/gkleen@sif/default.nix | 88 | ||||
| -rw-r--r-- | accounts/gkleen@sif/dunst-settings.nix | 2 | ||||
| -rw-r--r-- | accounts/gkleen@sif/hyprland.nix | 3 | ||||
| -rw-r--r-- | system-profiles/core/default.nix | 1 | ||||
| -rw-r--r-- | system-profiles/rebuild-machines/default.nix | 12 |
5 files changed, 85 insertions, 21 deletions
diff --git a/accounts/gkleen@sif/default.nix b/accounts/gkleen@sif/default.nix index dc505f6d..1cb7c751 100644 --- a/accounts/gkleen@sif/default.nix +++ b/accounts/gkleen@sif/default.nix | |||
| @@ -38,15 +38,25 @@ let | |||
| 38 | --prefix PATH : ${pkgs.pulseaudio}/bin | 38 | --prefix PATH : ${pkgs.pulseaudio}/bin |
| 39 | ''; | 39 | ''; |
| 40 | }; | 40 | }; |
| 41 | wrapElectron = { package, bin ? package.meta.mainProgram or package.pname or (pkgs.lib.strings.nameFromURL package.name "-"), outBin ? bin, sandbox ? true }: pkgs.runCommand "${package.name}-wrapped" { buildInputs = with pkgs; [ makeWrapper ]; } '' | 41 | wrapElectron = { package, bin ? package.meta.mainProgram or package.pname or (pkgs.lib.strings.nameFromURL package.name "-"), outBin ? bin, sandbox ? true }: pkgs.symlinkJoin { |
| 42 | mkdir -p "$out/bin" | 42 | name = "${package.name}-wrapped"; |
| 43 | makeWrapper ${package}/bin/${bin} $out/bin/${outBin} \ | 43 | buildInputs = with pkgs; [ makeWrapper ]; |
| 44 | ${optionalString (!sandbox) "--add-flags '--no-sandbox'"} | 44 | paths = [ package ]; |
| 45 | ''; | 45 | inherit bin outBin; |
| 46 | postBuild = '' | ||
| 47 | hidden=$out/bin/."$(basename "$bin")"-wrapped | ||
| 48 | while [ -e "$hidden" ]; do | ||
| 49 | hidden="''${hidden}_" | ||
| 50 | done | ||
| 51 | mv "$out/bin/$bin" "$hidden" | ||
| 52 | makeWrapper "$hidden" "$out/bin/$outBin" \ | ||
| 53 | ${optionalString (!sandbox) "--add-flags '--no-sandbox'"} | ||
| 54 | ''; | ||
| 55 | }; | ||
| 46 | 56 | ||
| 47 | wrappedChrome = wrapElectron { package = pkgs.google-chrome; outBin = "google-chrome"; }; | 57 | wrappedChrome = wrapElectron { package = pkgs.google-chrome; outBin = "google-chrome"; }; |
| 48 | wrappedZulip = wrapElectron { package = pkgs.zulip; bin = "zulip"; outBin = "zulip"; }; | 58 | wrappedZulip = wrapElectron { package = pkgs.zulip; bin = "zulip"; outBin = "zulip"; }; |
| 49 | wrappedElementDesktop = wrapElectron { package = pkgs.element-desktop; bin = "element-desktop"; outBin = "element"; }; | 59 | wrappedElementDesktop = wrapElectron { package = pkgs.element-desktop; bin = "element-desktop"; }; |
| 50 | wrappedRocketChatDesktop = wrapElectron { package = pkgs.rocketchat-desktop; bin = "rocketchat-desktop"; outBin = "rocketchat"; }; | 60 | wrappedRocketChatDesktop = wrapElectron { package = pkgs.rocketchat-desktop; bin = "rocketchat-desktop"; outBin = "rocketchat"; }; |
| 51 | wrappedYTMDesktop = wrapElectron { package = pkgs.ytmdesktop; sandbox = false; }; | 61 | wrappedYTMDesktop = wrapElectron { package = pkgs.ytmdesktop; sandbox = false; }; |
| 52 | 62 | ||
| @@ -355,7 +365,7 @@ in { | |||
| 355 | }; | 365 | }; |
| 356 | privacy = { | 366 | privacy = { |
| 357 | icon-spacing = 6; | 367 | icon-spacing = 6; |
| 358 | icon-size = 12; | 368 | icon-size = 11; |
| 359 | modules = [ { type = "screenshare"; } { type = "audio-in"; } ]; | 369 | modules = [ { type = "screenshare"; } { type = "audio-in"; } ]; |
| 360 | }; | 370 | }; |
| 361 | idle_inhibitor = { | 371 | idle_inhibitor = { |
| @@ -423,7 +433,7 @@ in { | |||
| 423 | margin-right: 9px; | 433 | margin-right: 9px; |
| 424 | } | 434 | } |
| 425 | 435 | ||
| 426 | label.module { | 436 | .module { |
| 427 | margin: 0 5px; | 437 | margin: 0 5px; |
| 428 | } | 438 | } |
| 429 | 439 | ||
| @@ -448,8 +458,15 @@ in { | |||
| 448 | opacity: 0.6; | 458 | opacity: 0.6; |
| 449 | } | 459 | } |
| 450 | 460 | ||
| 461 | #tray { | ||
| 462 | margin: 0 2px; | ||
| 463 | } | ||
| 451 | #battery, #idle_inhibitor, #backlight { | 464 | #battery, #idle_inhibitor, #backlight { |
| 452 | color: @grey; | 465 | color: @grey; |
| 466 | margin: 0 5px 0 2px; | ||
| 467 | } | ||
| 468 | #backlight, #idle_inhibitor { | ||
| 469 | margin: 0 7px 0 2px; | ||
| 453 | } | 470 | } |
| 454 | #battery.warning { | 471 | #battery.warning { |
| 455 | color: @orange; | 472 | color: @orange; |
| @@ -464,10 +481,17 @@ in { | |||
| 464 | color: @white; | 481 | color: @white; |
| 465 | } | 482 | } |
| 466 | 483 | ||
| 484 | #idle_inhibitor { | ||
| 485 | padding-top: 1px; | ||
| 486 | margin: 0 9px 0 2px; | ||
| 487 | } | ||
| 488 | |||
| 467 | #privacy { | 489 | #privacy { |
| 468 | color: @red; | 490 | color: @red; |
| 469 | margin-right: 4px; | 491 | margin: -1px 2px 0px 5px; |
| 470 | margin-left: 2px; | 492 | } |
| 493 | #clock { | ||
| 494 | margin-right: 5px; | ||
| 471 | } | 495 | } |
| 472 | ''; | 496 | ''; |
| 473 | }; | 497 | }; |
| @@ -514,6 +538,29 @@ in { | |||
| 514 | ]; | 538 | ]; |
| 515 | }; | 539 | }; |
| 516 | }; | 540 | }; |
| 541 | fuzzel = { | ||
| 542 | enable = true; | ||
| 543 | settings = { | ||
| 544 | main = { | ||
| 545 | terminal = lib.getExe pkgs.kitty; | ||
| 546 | layer = "overlay"; | ||
| 547 | icon-theme = "Paper"; | ||
| 548 | font = "Fira Sans"; | ||
| 549 | }; | ||
| 550 | colors = { | ||
| 551 | background = "000000aa"; | ||
| 552 | text = "cdd6f4ff"; | ||
| 553 | match = "94e2d5ff"; | ||
| 554 | selection = "585b70ff"; | ||
| 555 | selection-match = "94e2d5ff"; | ||
| 556 | selection-text = "cdd6f4ff"; | ||
| 557 | border = "b4befeff"; | ||
| 558 | }; | ||
| 559 | dmenu = { | ||
| 560 | exit-immediately-if-empty = true; | ||
| 561 | }; | ||
| 562 | }; | ||
| 563 | }; | ||
| 517 | }; | 564 | }; |
| 518 | 565 | ||
| 519 | services = { | 566 | services = { |
| @@ -709,12 +756,12 @@ in { | |||
| 709 | wrappedKeepassxc sxiv xclip mumble pulseaudio-ctl pamixer | 756 | wrappedKeepassxc sxiv xclip mumble pulseaudio-ctl pamixer |
| 710 | libnotify synergy xorg.xbacklight screen-message | 757 | libnotify synergy xorg.xbacklight screen-message |
| 711 | wrappedYTMDesktop qt5ct playerctl evince thunderbird | 758 | wrappedYTMDesktop qt5ct playerctl evince thunderbird |
| 712 | wrappedZulip zoom-us steam steam-run wireshark virt-manager | 759 | zoom-us steam steam-run wireshark virt-manager |
| 713 | rclone cached-nix-shell xournal xmonad worktime | 760 | rclone cached-nix-shell xournal xmonad worktime |
| 714 | fira-code-symbols libreoffice xournalpp wrappedChrome | 761 | fira-code-symbols libreoffice xournalpp google-chrome |
| 715 | nixos-shell virt-viewer freerdp gnome-icon-theme | 762 | nixos-shell virt-viewer freerdp gnome-icon-theme |
| 716 | paper-icon-theme sshpassSecret weechat wrappedElementDesktop | 763 | paper-icon-theme sshpassSecret weechat element-desktop |
| 717 | matrix-synapse-tools.synadm wrappedRocketChatDesktop | 764 | matrix-synapse-tools.synadm |
| 718 | flakeInputs.deploy-rs.packages.${config.nixpkgs.system}.deploy-rs | 765 | flakeInputs.deploy-rs.packages.${config.nixpkgs.system}.deploy-rs |
| 719 | sieve-connect gimp inkscape udiskie glab scrot nitrokey-app | 766 | sieve-connect gimp inkscape udiskie glab scrot nitrokey-app |
| 720 | pynitrokey gtklock wlrctl nvidiaOffloadScript | 767 | pynitrokey gtklock wlrctl nvidiaOffloadScript |
| @@ -816,6 +863,19 @@ in { | |||
| 816 | }; | 863 | }; |
| 817 | }; | 864 | }; |
| 818 | 865 | ||
| 866 | xdg.desktopEntries = { | ||
| 867 | element-lmu = { | ||
| 868 | name = "Element (LMU)"; | ||
| 869 | exec = "element-desktop --profile=lmu %u"; | ||
| 870 | icon = "element"; | ||
| 871 | genericName = "Matrix Client"; | ||
| 872 | categories = [ "Network" "InstantMessaging" "Chat" ]; | ||
| 873 | settings = { | ||
| 874 | StartupWMClass = "Element"; | ||
| 875 | }; | ||
| 876 | }; | ||
| 877 | }; | ||
| 878 | |||
| 819 | fonts = { | 879 | fonts = { |
| 820 | fontconfig.enable = true; | 880 | fontconfig.enable = true; |
| 821 | lmu-hausschrift.enable = true; | 881 | lmu-hausschrift.enable = true; |
diff --git a/accounts/gkleen@sif/dunst-settings.nix b/accounts/gkleen@sif/dunst-settings.nix index 90fffcc5..72687aea 100644 --- a/accounts/gkleen@sif/dunst-settings.nix +++ b/accounts/gkleen@sif/dunst-settings.nix | |||
| @@ -33,7 +33,7 @@ | |||
| 33 | sort = false; | 33 | sort = false; |
| 34 | sticky_history = false; | 34 | sticky_history = false; |
| 35 | 35 | ||
| 36 | dmenu = "wofi --show dmenu"; | 36 | dmenu = "fuzzel --dmenu"; |
| 37 | browser = "${pkgs.xdg-utils}/bin/xdg-open"; | 37 | browser = "${pkgs.xdg-utils}/bin/xdg-open"; |
| 38 | }; | 38 | }; |
| 39 | # shortcuts = { | 39 | # shortcuts = { |
diff --git a/accounts/gkleen@sif/hyprland.nix b/accounts/gkleen@sif/hyprland.nix index 06d146a0..03afb319 100644 --- a/accounts/gkleen@sif/hyprland.nix +++ b/accounts/gkleen@sif/hyprland.nix | |||
| @@ -6,7 +6,7 @@ | |||
| 6 | ]; | 6 | ]; |
| 7 | 7 | ||
| 8 | "$terminal" = "kitty"; | 8 | "$terminal" = "kitty"; |
| 9 | "$menu" = "wofi --show run"; | 9 | "$menu" = "fuzzel"; |
| 10 | 10 | ||
| 11 | exec-once = [ | 11 | exec-once = [ |
| 12 | "wpaperd" | 12 | "wpaperd" |
| @@ -130,6 +130,7 @@ | |||
| 130 | "$mainMod, Q, killactive" | 130 | "$mainMod, Q, killactive" |
| 131 | "$mainMod, V, togglefloating" | 131 | "$mainMod, V, togglefloating" |
| 132 | "$mainMod, D, exec, $menu" | 132 | "$mainMod, D, exec, $menu" |
| 133 | "$mainMod SHIFT, D, exec, $menu --list-executables-in-path" | ||
| 133 | # "$mainMod, J, togglesplit," | 134 | # "$mainMod, J, togglesplit," |
| 134 | 135 | ||
| 135 | "$mainMod SHIFT, L, exec, loginctl lock-session" | 136 | "$mainMod SHIFT, L, exec, loginctl lock-session" |
diff --git a/system-profiles/core/default.nix b/system-profiles/core/default.nix index c2c821b7..b1898903 100644 --- a/system-profiles/core/default.nix +++ b/system-profiles/core/default.nix | |||
| @@ -154,6 +154,7 @@ in { | |||
| 154 | documentation.nixos = { | 154 | documentation.nixos = { |
| 155 | includeAllModules = true; | 155 | includeAllModules = true; |
| 156 | options.warningsAreErrors = false; | 156 | options.warningsAreErrors = false; |
| 157 | extraModuleSources = map toString ([flake] ++ attrValues flakeInputs); | ||
| 157 | }; | 158 | }; |
| 158 | 159 | ||
| 159 | home-manager = { | 160 | home-manager = { |
diff --git a/system-profiles/rebuild-machines/default.nix b/system-profiles/rebuild-machines/default.nix index cc01f66b..544f47e1 100644 --- a/system-profiles/rebuild-machines/default.nix +++ b/system-profiles/rebuild-machines/default.nix | |||
| @@ -15,7 +15,7 @@ let | |||
| 15 | ''; | 15 | ''; |
| 16 | 16 | ||
| 17 | knownHostsFile = pkgs.writeText "known_hosts" (concatMapStringsSep "\n" (kPath: cfg.repoHost + " " + readFile kPath) (attrValues cfg.repoPubkeys)); | 17 | knownHostsFile = pkgs.writeText "known_hosts" (concatMapStringsSep "\n" (kPath: cfg.repoHost + " " + readFile kPath) (attrValues cfg.repoPubkeys)); |
| 18 | 18 | ||
| 19 | rebuildScript = pkgs.stdenv.mkDerivation { | 19 | rebuildScript = pkgs.stdenv.mkDerivation { |
| 20 | name = "rebuild-${hostName}"; | 20 | name = "rebuild-${hostName}"; |
| 21 | 21 | ||
| @@ -52,7 +52,7 @@ in { | |||
| 52 | Name of the script wrapping <literal>nixos-rebuild</literal> | 52 | Name of the script wrapping <literal>nixos-rebuild</literal> |
| 53 | ''; | 53 | ''; |
| 54 | }; | 54 | }; |
| 55 | 55 | ||
| 56 | flake = mkOption { | 56 | flake = mkOption { |
| 57 | type = types.submodule { | 57 | type = types.submodule { |
| 58 | options = { | 58 | options = { |
| @@ -79,7 +79,7 @@ in { | |||
| 79 | type = types.str; | 79 | type = types.str; |
| 80 | default = "git.yggdrasil.li"; | 80 | default = "git.yggdrasil.li"; |
| 81 | }; | 81 | }; |
| 82 | 82 | ||
| 83 | repoUser = mkOption { | 83 | repoUser = mkOption { |
| 84 | type = types.str; | 84 | type = types.str; |
| 85 | default = "gitolite"; | 85 | default = "gitolite"; |
| @@ -88,11 +88,13 @@ in { | |||
| 88 | repoPubkeys = mkOption { | 88 | repoPubkeys = mkOption { |
| 89 | type = types.attrsOf types.path; | 89 | type = types.attrsOf types.path; |
| 90 | default = genAttrs ["rsa" "ed25519"] (kType: ./ssh-pub + "/${cfg.repoHost}-${kType}.pub"); | 90 | default = genAttrs ["rsa" "ed25519"] (kType: ./ssh-pub + "/${cfg.repoHost}-${kType}.pub"); |
| 91 | defaultText = literalExpression ''genAttrs ["rsa" "ed25519"] (kType: ./ssh-pub + "/''${cfg.repoHost}-''${kType}.pub")''; | ||
| 91 | }; | 92 | }; |
| 92 | 93 | ||
| 93 | repoPrivkey = mkOption { | 94 | repoPrivkey = mkOption { |
| 94 | type = types.path; | 95 | type = types.path; |
| 95 | default = ./ssh + "/${hostName}/private"; | 96 | default = ./ssh + "/${hostName}/private"; |
| 97 | defaultText = literalExpression ''./ssh + "/''${hostName}/private"''; | ||
| 96 | }; | 98 | }; |
| 97 | 99 | ||
| 98 | sopsName = mkOption { | 100 | sopsName = mkOption { |
| @@ -115,14 +117,14 @@ in { | |||
| 115 | }; | 117 | }; |
| 116 | }; | 118 | }; |
| 117 | }; | 119 | }; |
| 118 | 120 | ||
| 119 | config = { | 121 | config = { |
| 120 | assertions = [ | 122 | assertions = [ |
| 121 | { assertion = isNull cfg.sopsConfig || (!(isNull cfg.sopsName)); | 123 | { assertion = isNull cfg.sopsConfig || (!(isNull cfg.sopsName)); |
| 122 | message = "If option sopsConfig is not null option sopsName may not be null"; | 124 | message = "If option sopsConfig is not null option sopsName may not be null"; |
| 123 | } | 125 | } |
| 124 | ]; | 126 | ]; |
| 125 | 127 | ||
| 126 | sops.secrets = mkIf (!(isNull cfg.sopsConfig)) { | 128 | sops.secrets = mkIf (!(isNull cfg.sopsConfig)) { |
| 127 | "${cfg.sopsName}" = { | 129 | "${cfg.sopsName}" = { |
| 128 | sopsFile = cfg.repoPrivkey; | 130 | sopsFile = cfg.repoPrivkey; |
