From a5f1c98b54d85362179f7524bcf09a791d4afccd Mon Sep 17 00:00:00 2001 From: "Gustavo \"Guz\" L. de Mello" Date: Thu, 30 May 2024 22:05:27 -0300 Subject: [PATCH] feat: module recorder option --- README.md | 16 +++++++++++++-- flake.nix | 60 ++++++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 58 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 3bdf977..83d82b8 100644 --- a/README.md +++ b/README.md @@ -106,7 +106,9 @@ to use it on NixOS **using flakes**: #### Installation methods -##### Install as a NixOS module +##### Install as a module + +###### NixOS ```nix # configuration.nix { inputs, ... }: { @@ -118,7 +120,7 @@ to use it on NixOS **using flakes**: } ``` -##### Install as a Home Manager module +###### Home Manager ```nix # home.nix { inputs, ... }: { @@ -130,6 +132,16 @@ to use it on NixOS **using flakes**: } ``` +###### Configuration + +```nix +# configration.nix or home.nix +programs.rec-sh.enable = true; # enables/installs the binary to your PATH + +# Path to the recorder binary, default to wf-recorder. Can be null to unset the RECSH_RECORDER variable. +programs.rec-sh.recorder = "${pkgs.wf-recorder}/bin/wf-recorder" +``` + ##### Install as a package ```nix # configuration.nix diff --git a/flake.nix b/flake.nix index d065388..6016b91 100644 --- a/flake.nix +++ b/flake.nix @@ -8,11 +8,19 @@ , }: let - package = { pkgs, ... }: + package = + { pkgs + , recorder + , ... + }: pkgs.writeShellScriptBin "rec-sh" '' function slurp() { ${pkgs.slurp}/bin/slurp "$@"; } function ffmpeg() { ${pkgs.ffmpeg}/bin/ffmpeg "$@"; } - function wf-recorder() { ${pkgs.wf-recorder}/bin/wf-recorder "$@"; } + ${ + if (builtins.isNull recorder) + then "" + else "RECSH_RECORDER=${recorder}" + } ${builtins.readFile ./rec.sh} ''; @@ -36,9 +44,13 @@ options.programs.rec-sh = options { inherit config lib pkgs; }; config = with lib; mkIf cfg.enable { - home.packages = [ - self.packages.${pkgs.system}.rec-sh - ]; + home.packages = + let + recorder = cfg.recorder; + in + [ + (package { inherit pkgs recorder; }) + ]; }; }; @@ -55,9 +67,13 @@ options.programs.rec-sh = options { inherit config lib pkgs; }; config = with lib; mkIf cfg.enable { - environment.systemPackages = [ - self.packages.${pkgs.system}.rec-sh - ]; + environment.systemPackages = + let + recorder = cfg.recorder; + in + [ + (package { inherit pkgs recorder; }) + ]; }; }; @@ -70,6 +86,10 @@ with lib; with lib.types; { enable = mkEnableOption ""; + recorder = mkOption { + type = nullOr str; + default = "${pkgs.wf-recorder}/bin/wf-recorder"; + }; }; systems = [ @@ -80,17 +100,25 @@ { packages = forAllSystems - (system: pkgs: { - rec-sh = package { inherit pkgs; }; - default = self.packages.${system}.rec-sh; - }); + (system: pkgs: + let + recorder = null; + in + { + rec-sh = package { inherit pkgs recorder; }; + default = self.packages.${system}.rec-sh; + }); legacyPackages = forAllSystems - (system: pkgs: { - rec-sh = package { inherit pkgs; }; - default = self.legacyPackages.${system}.rec-sh; - }); + (system: pkgs: + let + recorder = null; + in + { + rec-sh = package { inherit pkgs recorder; }; + default = self.legacyPackages.${system}.rec-sh; + }); nixosModules = { rec-sh = nixosModule;