diff --git a/flake.nix b/flake.nix index 27c13a8..8ceafa6 100644 --- a/flake.nix +++ b/flake.nix @@ -59,6 +59,7 @@ imports = [ ./flake/hosts.nix ./flake/modules.nix + ./flake/wrappers.nix ./flake/dev-shells.nix ./flake/formatter.nix ]; diff --git a/flake/wrappers.nix b/flake/wrappers.nix new file mode 100644 index 0000000..d47cda2 --- /dev/null +++ b/flake/wrappers.nix @@ -0,0 +1,19 @@ +{ + flake.nixosModules.wrappers = + { + self, + inputs, + pkgs, + lib, + ... + }: + { + _module.args.wrappers = + (lib.concatMapAttrs ( + name: _: { + ${lib.removeSuffix ".nix" name} = import "${self}/wrappers/${name}" { inherit inputs pkgs lib; }; + } + )) + (builtins.readDir "${self}/wrappers"); + }; +} diff --git a/hosts/common.nix b/hosts/common.nix index cf0c3dd..c0bf159 100644 --- a/hosts/common.nix +++ b/hosts/common.nix @@ -2,7 +2,7 @@ { imports = [ self.nixosModules.nixos - ../wrappers + self.nixosModules.wrappers ]; nix.settings = { diff --git a/users/common.nix b/users/common.nix index 2334cb5..7e62e25 100644 --- a/users/common.nix +++ b/users/common.nix @@ -12,7 +12,7 @@ home-manager.sharedModules = [ self.nixosModules.home-manager - ../wrappers + self.nixosModules.wrappers { programs.home-manager.enable = true; diff --git a/wrappers/bottom.nix b/wrappers/bottom.nix index 81f65c0..491c99d 100644 --- a/wrappers/bottom.nix +++ b/wrappers/bottom.nix @@ -1,8 +1,12 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs; -in -assembleWrapper { - basePackage = pkgs.bottom; - flags = [ "--group" ]; -} +{ inputs, pkgs, ... }: +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.bottom = { + basePackage = pkgs.bottom; + flags = [ "--group" ]; + }; + } + ]; +}).config.wrappers.bottom.wrapped diff --git a/wrappers/default.nix b/wrappers/default.nix deleted file mode 100644 index 227e314..0000000 --- a/wrappers/default.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - inputs, - pkgs, - lib, - ... -}@moduleArgs: -let - assembleWrapper = - wrapperConfig: - (inputs.wrapper-manager.lib { - inherit pkgs; - modules = [ { wrappers.wrappedPackage = wrapperConfig; } ]; - }).config.wrappers.wrappedPackage.wrapped; -in -{ - _module.args.wrappers = lib.pipe (builtins.readDir ./.) [ - (lib.filterAttrs (name: _: name != "default.nix")) - (lib.concatMapAttrs ( - name: _: { - ${lib.removeSuffix ".nix" name} = import ./${name} { inherit assembleWrapper moduleArgs; }; - } - )) - ]; -} diff --git a/wrappers/firefox/default.nix b/wrappers/firefox/default.nix index 9747b1d..58c6556 100644 --- a/wrappers/firefox/default.nix +++ b/wrappers/firefox/default.nix @@ -1,10 +1,19 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs; -in -assembleWrapper { - basePackage = pkgs.wrapFirefox pkgs.firefox-unwrapped { - extraPolicies.ExtensionSettings = import ./extensions.nix { inherit moduleArgs; }; - extraPrefs = import ./preferences.nix { inherit moduleArgs; }; - }; -} +{ + inputs, + pkgs, + lib, + ... +}: +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.firefox = { + basePackage = pkgs.wrapFirefox pkgs.firefox-unwrapped { + extraPolicies.ExtensionSettings = import ./extensions.nix { inherit inputs lib; }; + extraPrefs = import ./preferences.nix { inherit inputs; }; + }; + }; + } + ]; +}).config.wrappers.firefox.wrapped diff --git a/wrappers/firefox/extensions.nix b/wrappers/firefox/extensions.nix index 0e6444d..34827d6 100644 --- a/wrappers/firefox/extensions.nix +++ b/wrappers/firefox/extensions.nix @@ -1,7 +1,5 @@ -{ moduleArgs, ... }: +{ inputs, lib, ... }: let - inherit (moduleArgs) lib inputs; - extension = shortId: uuid: { name = uuid; value = { diff --git a/wrappers/firefox/preferences.nix b/wrappers/firefox/preferences.nix index 5509fd6..19e3793 100644 --- a/wrappers/firefox/preferences.nix +++ b/wrappers/firefox/preferences.nix @@ -1,7 +1,5 @@ -{ moduleArgs, ... }: +{ inputs, ... }: let - inherit (moduleArgs) inputs; - betterfox = builtins.replaceStrings [ "user_pref" ] [ "pref" ] ( builtins.readFile "${inputs.betterfox}/user.js" ); diff --git a/wrappers/hypridle.nix b/wrappers/hypridle.nix index 87677ba..83d4e95 100644 --- a/wrappers/hypridle.nix +++ b/wrappers/hypridle.nix @@ -1,35 +1,39 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs; -in -assembleWrapper { - basePackage = pkgs.hypridle; - flags = - let - hypridle-config = pkgs.writeText "hypridle-config" '' - general { - lock_cmd = pidof hyprlock || hyprlock - before_sleep_cmd = loginctl lock-session - after_sleep_cmd = hyprctl dispatch dpms on - } - listener { - timeout = 300 - on-timeout= brightnessctl -s && brightnessctl -e set 10% - on-resume = brightnessctl -r - } - listener { - timeout = 600 - on-timeout = loginctl lock-session - } - listener { - timeout = 610 - on-timeout = hyprctl dispatch dpms off - on-resume = hyprctl dispatch dpms on - } - ''; - in - [ - "--config" - hypridle-config - ]; -} +{ inputs, pkgs, ... }: +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.hypridle = { + basePackage = pkgs.hypridle; + flags = + let + hypridle-config = pkgs.writeText "hypridle-config" '' + general { + lock_cmd = pidof hyprlock || hyprlock + before_sleep_cmd = loginctl lock-session + after_sleep_cmd = hyprctl dispatch dpms on + } + listener { + timeout = 300 + on-timeout= brightnessctl -s && brightnessctl -e set 10% + on-resume = brightnessctl -r + } + listener { + timeout = 600 + on-timeout = loginctl lock-session + } + listener { + timeout = 610 + on-timeout = hyprctl dispatch dpms off + on-resume = hyprctl dispatch dpms on + } + ''; + in + [ + "--config" + hypridle-config + ]; + }; + } + ]; +}).config.wrappers.hypridle.wrapped diff --git a/wrappers/hyprlock.nix b/wrappers/hyprlock.nix index ff0faed..4cd6260 100644 --- a/wrappers/hyprlock.nix +++ b/wrappers/hyprlock.nix @@ -1,25 +1,29 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs; -in -assembleWrapper { - basePackage = pkgs.hyprlock; - flags = - let - hyprlock-config = pkgs.writeText "hyprlock-config" '' - background { - monitor = - path = screenshot - blur_size = 4 - blur_passes = 1 - } - input-field { - monitor = - } - ''; - in - [ - "--config" - hyprlock-config - ]; -} +{ inputs, pkgs, ... }: +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.hyprlock = { + basePackage = pkgs.hyprlock; + flags = + let + hyprlock-config = pkgs.writeText "hyprlock-config" '' + background { + monitor = + path = screenshot + blur_size = 4 + blur_passes = 1 + } + input-field { + monitor = + } + ''; + in + [ + "--config" + hyprlock-config + ]; + }; + } + ]; +}).config.wrappers.hyprlock.wrapped diff --git a/wrappers/hyprpaper.nix b/wrappers/hyprpaper.nix index f41a02e..41b9064 100644 --- a/wrappers/hyprpaper.nix +++ b/wrappers/hyprpaper.nix @@ -1,19 +1,23 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs; -in -assembleWrapper { - basePackage = pkgs.hyprpaper; - flags = - let - hyprpaper-config = pkgs.writeText "hyprpaper-config" '' - preload = ~/Pictures/.wallpaper - wallpaper = , ~/Pictures/.wallpaper - splash = false - ''; - in - [ - "--config" - hyprpaper-config - ]; -} +{ inputs, pkgs, ... }: +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.hyprpaper = { + basePackage = pkgs.hyprpaper; + flags = + let + hyprpaper-config = pkgs.writeText "hyprpaper-config" '' + preload = ~/Pictures/.wallpaper + wallpaper = , ~/Pictures/.wallpaper + splash = false + ''; + in + [ + "--config" + hyprpaper-config + ]; + }; + } + ]; +}).config.wrappers.hyprpaper.wrapped diff --git a/wrappers/kitty.nix b/wrappers/kitty.nix index 79aebdc..c2a6d15 100644 --- a/wrappers/kitty.nix +++ b/wrappers/kitty.nix @@ -1,34 +1,38 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs; -in +{ inputs, pkgs, ... }: { theme ? "dark", }: -assembleWrapper { - basePackage = pkgs.kitty; - programs.kitty.prependFlags = - let - kitty-config = pkgs.writeText "kitty-config" '' - font_family JetBrainsMono Nerd Font - background_opacity 0.85 - cursor_shape beam - confirm_os_window_close 0 - enable_audio_bell no - update_check_interval 0 - ''; - theme-file = - { - dark = "default.conf"; - light = "GitHub_Light.conf"; - } - .${theme}; - kitty-theme = "include=${pkgs.kitty-themes}/share/kitty-themes/themes/${theme-file}"; - in - [ - "--config" - kitty-config - "--override" - kitty-theme - ]; -} +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.kitty = { + basePackage = pkgs.kitty; + programs.kitty.prependFlags = + let + kitty-config = pkgs.writeText "kitty-config" '' + font_family JetBrainsMono Nerd Font + background_opacity 0.85 + cursor_shape beam + confirm_os_window_close 0 + enable_audio_bell no + update_check_interval 0 + ''; + theme-file = + { + dark = "default.conf"; + light = "GitHub_Light.conf"; + } + .${theme}; + kitty-theme = "include=${pkgs.kitty-themes}/share/kitty-themes/themes/${theme-file}"; + in + [ + "--config" + kitty-config + "--override" + kitty-theme + ]; + }; + } + ]; +}).config.wrappers.kitty.wrapped diff --git a/wrappers/marktext.nix b/wrappers/marktext.nix index 8b05749..e22cf1e 100644 --- a/wrappers/marktext.nix +++ b/wrappers/marktext.nix @@ -1,8 +1,12 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs; -in -assembleWrapper { - basePackage = pkgs.marktext; - flags = [ "--disable-gpu" ]; -} +{ inputs, pkgs, ... }: +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.marktext = { + basePackage = pkgs.marktext; + flags = [ "--disable-gpu" ]; + }; + } + ]; +}).config.wrappers.marktext.wrapped diff --git a/wrappers/obsidian.nix b/wrappers/obsidian.nix index 1772fc7..cf52160 100644 --- a/wrappers/obsidian.nix +++ b/wrappers/obsidian.nix @@ -1,8 +1,12 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs; -in -assembleWrapper { - basePackage = pkgs.obsidian; - flags = [ "--disable-gpu" ]; -} +{ inputs, pkgs, ... }: +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.obsidian = { + basePackage = pkgs.obsidian; + flags = [ "--disable-gpu" ]; + }; + } + ]; +}).config.wrappers.obsidian.wrapped diff --git a/wrappers/rofi/default.nix b/wrappers/rofi/default.nix index bc4b241..495bf80 100644 --- a/wrappers/rofi/default.nix +++ b/wrappers/rofi/default.nix @@ -1,47 +1,56 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs lib; -in +{ + inputs, + pkgs, + lib, + ... +}: { theme ? "dark", }: -assembleWrapper { - basePackage = pkgs.rofi-wayland; - flags = - let - theming = - { - dark = '' - * { - background: #1E2127FF; - background-alt: #282B31FF; - foreground: #FFFFFFFF; - selected: #61AFEFFF; - active: #98C379FF; - urgent: #E06C75FF; - } - ''; - light = '' - * { - background: #F1F1F1FF; - background-alt: #E0E0E0FF; - foreground: #252525FF; - selected: #008EC4FF; - active: #10A778FF; - urgent: #C30771FF; - } - ''; - } - .${theme}; - rofi-config = pkgs.writeText "rofi-config" ( - lib.concatLines [ - theming - (builtins.readFile ./config.rasi) - ] - ); - in - [ - "-config" - rofi-config - ]; -} +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.rofi = { + basePackage = pkgs.rofi-wayland; + flags = + let + theming = + { + dark = '' + * { + background: #1E2127FF; + background-alt: #282B31FF; + foreground: #FFFFFFFF; + selected: #61AFEFFF; + active: #98C379FF; + urgent: #E06C75FF; + } + ''; + light = '' + * { + background: #F1F1F1FF; + background-alt: #E0E0E0FF; + foreground: #252525FF; + selected: #008EC4FF; + active: #10A778FF; + urgent: #C30771FF; + } + ''; + } + .${theme}; + rofi-config = pkgs.writeText "rofi-config" ( + lib.concatLines [ + theming + (builtins.readFile ./config.rasi) + ] + ); + in + [ + "-config" + rofi-config + ]; + }; + } + ]; +}).config.wrappers.rofi.wrapped diff --git a/wrappers/spotify.nix b/wrappers/spotify.nix index 89fb8c9..35db12a 100644 --- a/wrappers/spotify.nix +++ b/wrappers/spotify.nix @@ -1,8 +1,12 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs; -in -assembleWrapper { - basePackage = pkgs.spotify; - flags = [ "--disable-gpu" ]; -} +{ inputs, pkgs, ... }: +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.spotify = { + basePackage = pkgs.spotify; + flags = [ "--disable-gpu" ]; + }; + } + ]; +}).config.wrappers.spotify.wrapped diff --git a/wrappers/waybar/default.nix b/wrappers/waybar/default.nix index 37bda16..05c066d 100644 --- a/wrappers/waybar/default.nix +++ b/wrappers/waybar/default.nix @@ -1,13 +1,17 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs; -in -assembleWrapper { - basePackage = pkgs.waybar; - flags = [ - "--config" - ./config.json - "--style" - ./style.css +{ inputs, pkgs, ... }: +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.waybar = { + basePackage = pkgs.waybar; + flags = [ + "--config" + ./config.json + "--style" + ./style.css + ]; + }; + } ]; -} +}).config.wrappers.waybar.wrapped diff --git a/wrappers/webcord.nix b/wrappers/webcord.nix index 89f5d37..0219b9a 100644 --- a/wrappers/webcord.nix +++ b/wrappers/webcord.nix @@ -1,8 +1,12 @@ -{ assembleWrapper, moduleArgs, ... }: -let - inherit (moduleArgs) pkgs; -in -assembleWrapper { - basePackage = pkgs.webcord; - flags = [ "--disable-gpu" ]; -} +{ inputs, pkgs, ... }: +(inputs.wrapper-manager.lib { + inherit pkgs; + modules = [ + { + wrappers.webcord = { + basePackage = pkgs.webcord; + flags = [ "--disable-gpu" ]; + }; + } + ]; +}).config.wrappers.webcord.wrapped