Files
rec.sh/flake.nix

148 lines
3.3 KiB
Nix
Raw Permalink Normal View History

2024-05-30 16:31:33 -03:00
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
};
outputs =
{ self
, nixpkgs
,
}:
let
2024-05-30 22:05:27 -03:00
package =
{ pkgs
, recorder
, ...
}:
2024-05-30 16:31:33 -03:00
pkgs.writeShellScriptBin "rec-sh" ''
function slurp() { ${pkgs.slurp}/bin/slurp "$@"; }
function ffmpeg() { ${pkgs.ffmpeg}/bin/ffmpeg "$@"; }
2024-05-30 22:05:27 -03:00
${
if (builtins.isNull recorder)
then ""
else "RECSH_RECORDER=${recorder}"
}
2024-05-30 16:31:33 -03:00
${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 {
2024-05-30 22:05:27 -03:00
home.packages =
let
recorder = cfg.recorder;
in
[
(package { inherit pkgs recorder; })
];
2024-05-30 16:31:33 -03:00
};
};
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 {
2024-05-30 22:05:27 -03:00
environment.systemPackages =
let
recorder = cfg.recorder;
in
[
(package { inherit pkgs recorder; })
];
2024-05-30 16:31:33 -03:00
};
};
options =
{ config
, lib
, pkgs
, ...
}:
with lib;
with lib.types; {
enable = mkEnableOption "";
2024-05-30 22:05:27 -03:00
recorder = mkOption {
type = nullOr str;
default = "${pkgs.wf-recorder}/bin/wf-recorder";
};
2024-05-30 16:31:33 -03:00
};
systems = [
"x86_64-linux"
"aarch64-linux"
];
in
{
packages =
forAllSystems
2024-05-30 22:05:27 -03:00
(system: pkgs:
let
recorder = null;
in
{
rec-sh = package { inherit pkgs recorder; };
default = self.packages.${system}.rec-sh;
});
2024-05-30 16:31:33 -03:00
legacyPackages =
forAllSystems
2024-05-30 22:05:27 -03:00
(system: pkgs:
let
recorder = null;
in
{
rec-sh = package { inherit pkgs recorder; };
default = self.legacyPackages.${system}.rec-sh;
});
2024-05-30 16:31:33 -03:00
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
];
};
});
};
}