148 lines
3.3 KiB
Nix
148 lines
3.3 KiB
Nix
{
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
|
};
|
|
outputs =
|
|
{ self
|
|
, nixpkgs
|
|
,
|
|
}:
|
|
let
|
|
package =
|
|
{ pkgs
|
|
, recorder
|
|
, ...
|
|
}:
|
|
pkgs.writeShellScriptBin "rec-sh" ''
|
|
function slurp() { ${pkgs.slurp}/bin/slurp "$@"; }
|
|
function ffmpeg() { ${pkgs.ffmpeg}/bin/ffmpeg "$@"; }
|
|
${
|
|
if (builtins.isNull recorder)
|
|
then ""
|
|
else "RECSH_RECORDER=${recorder}"
|
|
}
|
|
|
|
${builtins.readFile ./rec.sh}
|
|
'';
|
|
|
|
forAllSystems = f: nixpkgs.lib.genAttrs systems (system:
|
|
let
|
|
pkgs = import nixpkgs { inherit system; };
|
|
in
|
|
f system pkgs);
|
|
|
|
hmModule =
|
|
{ config
|
|
, lib
|
|
, pkgs
|
|
, ...
|
|
}:
|
|
let
|
|
cfg = config.programs.rec-sh;
|
|
in
|
|
{
|
|
options.programs.rec-sh = options { inherit config lib pkgs; };
|
|
config = with lib;
|
|
mkIf cfg.enable {
|
|
home.packages =
|
|
let
|
|
recorder = cfg.recorder;
|
|
in
|
|
[
|
|
(package { inherit pkgs recorder; })
|
|
];
|
|
};
|
|
};
|
|
|
|
nixosModule =
|
|
{ config
|
|
, lib
|
|
, pkgs
|
|
, ...
|
|
}:
|
|
let
|
|
cfg = config.programs.rec-sh;
|
|
in
|
|
{
|
|
options.programs.rec-sh = options { inherit config lib pkgs; };
|
|
config = with lib;
|
|
mkIf cfg.enable {
|
|
environment.systemPackages =
|
|
let
|
|
recorder = cfg.recorder;
|
|
in
|
|
[
|
|
(package { inherit pkgs recorder; })
|
|
];
|
|
};
|
|
};
|
|
|
|
options =
|
|
{ config
|
|
, lib
|
|
, pkgs
|
|
, ...
|
|
}:
|
|
with lib;
|
|
with lib.types; {
|
|
enable = mkEnableOption "";
|
|
recorder = mkOption {
|
|
type = nullOr str;
|
|
default = "${pkgs.wf-recorder}/bin/wf-recorder";
|
|
};
|
|
};
|
|
|
|
systems = [
|
|
"x86_64-linux"
|
|
"aarch64-linux"
|
|
];
|
|
in
|
|
{
|
|
packages =
|
|
forAllSystems
|
|
(system: pkgs:
|
|
let
|
|
recorder = null;
|
|
in
|
|
{
|
|
rec-sh = package { inherit pkgs recorder; };
|
|
default = self.packages.${system}.rec-sh;
|
|
});
|
|
|
|
legacyPackages =
|
|
forAllSystems
|
|
(system: pkgs:
|
|
let
|
|
recorder = null;
|
|
in
|
|
{
|
|
rec-sh = package { inherit pkgs recorder; };
|
|
default = self.legacyPackages.${system}.rec-sh;
|
|
});
|
|
|
|
nixosModules = {
|
|
rec-sh = nixosModule;
|
|
default = self.nixosModules.rec-sh;
|
|
};
|
|
|
|
homeManagerModules = {
|
|
rec-sh = hmModule;
|
|
default = self.homeManagerModules.rec-sh;
|
|
};
|
|
homeManagerModule = self.homeManagerModules.rec-sh;
|
|
|
|
devShells =
|
|
forAllSystems
|
|
(system: pkgs: {
|
|
default = pkgs.mkShell {
|
|
buildInputs = with pkgs; [
|
|
slurp
|
|
ffmpeg
|
|
wf-recorder
|
|
shellharden
|
|
];
|
|
};
|
|
});
|
|
};
|
|
}
|