Add nixos module and overlay
This commit is contained in:
parent
0ff6440457
commit
c1438f2480
|
@ -51,9 +51,18 @@
|
|||
};
|
||||
});
|
||||
|
||||
overlays = {
|
||||
default = self.overlays.greg-ng;
|
||||
greg-ng = final: prev: {
|
||||
inherit (self.packages.${prev.system}) greg-ng;
|
||||
};
|
||||
};
|
||||
|
||||
packages = forAllSystems (system: pkgs: _: {
|
||||
default = self.packages.${system}.greg-ng;
|
||||
greg-ng = pkgs.callPackage ./default.nix { };
|
||||
});
|
||||
} // {
|
||||
nixosModules.default = ./module.nix;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
let
|
||||
cfg = config.services.greg-ng;
|
||||
in
|
||||
{
|
||||
options.services.greg-ng = {
|
||||
enable = lib.mkEnableOption "greg-ng, an mpv based media player";
|
||||
|
||||
package = lib.mkPackageOption pkgs "greg-ng" { };
|
||||
|
||||
mpvPackage = lib.mkPackageOption pkgs "mpv" { };
|
||||
|
||||
# TODO: create some better descriptions
|
||||
settings = {
|
||||
host = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "localhost";
|
||||
example = "0.0.0.0";
|
||||
description = ''
|
||||
Which host to bind to.
|
||||
'';
|
||||
};
|
||||
|
||||
port = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
default = 8008;
|
||||
example = 10008;
|
||||
description = ''
|
||||
Which port to bind to.
|
||||
'';
|
||||
};
|
||||
|
||||
mpv-socket-path = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "%t/greg-ng-mpv.sock";
|
||||
description = ''
|
||||
Path to the mpv socket.
|
||||
'';
|
||||
};
|
||||
|
||||
mpv-executable-path = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = lib.getExe cfg.mpvPackage;
|
||||
defaultText = lib.literalExpression ''
|
||||
lib.getExe config.services.greg-ng.mpvPackage
|
||||
'';
|
||||
description = ''
|
||||
Path to the mpv executable.
|
||||
'';
|
||||
};
|
||||
|
||||
mpv-config-file = lib.mkOption {
|
||||
type = with lib.types; nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
Path to the mpv config file.
|
||||
'';
|
||||
};
|
||||
|
||||
auto-start-mpv = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to automatically start mpv.
|
||||
'';
|
||||
};
|
||||
|
||||
force-auto-start = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to force auto starting mpv.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
services.cage.enable = true;
|
||||
services.cage.program =let
|
||||
flags = lib.cli.toGNUCommandLineShell { } cfg.settings;
|
||||
in pkgs.writeShellScript "greg-kiosk" ''
|
||||
cd $(mktemp -d)
|
||||
|
||||
${lib.getExe cfg.package} ${flags}
|
||||
'';
|
||||
services.cage.user = "greg";
|
||||
users.users."greg".isNormalUser = true;
|
||||
system.activationScripts = {
|
||||
base-dirs = {
|
||||
text = ''
|
||||
mkdir -p /nix/var/nix/profiles/per-user/greg
|
||||
'';
|
||||
deps = [];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue