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; |