mirror of
https://github.com/gensokyo-zone/infrastructure.git
synced 2026-02-09 12:29:19 -08:00
chore: nf-fmt-nix
This commit is contained in:
parent
7486517713
commit
9903866044
160 changed files with 4570 additions and 3019 deletions
|
|
@ -1,11 +1,20 @@
|
|||
{ config, lib, utils, ... }: let
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
utils,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.options) mkOption;
|
||||
inherit (lib.modules) mkIf mkMerge mkOptionDefault;
|
||||
inherit (lib.attrsets) mapAttrsToList;
|
||||
inherit (lib.lists) head;
|
||||
inherit (lib.strings) splitString;
|
||||
inherit (utils) escapeSystemdPath;
|
||||
mountModule = { config, name, ... }: {
|
||||
mountModule = {
|
||||
config,
|
||||
name,
|
||||
...
|
||||
}: {
|
||||
options = with lib.types; {
|
||||
source = mkOption {
|
||||
type = path;
|
||||
|
|
@ -32,23 +41,38 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
mkMountType' = { rootDir, specialArgs, modules ? [ ] }: let
|
||||
rootDirModule = { ... }: {
|
||||
mkMountType' = {
|
||||
rootDir,
|
||||
specialArgs,
|
||||
modules ? [],
|
||||
}: let
|
||||
rootDirModule = {...}: {
|
||||
config.rootDir = mkOptionDefault rootDir;
|
||||
};
|
||||
in lib.types.submoduleWith {
|
||||
modules = [ mountModule rootDirModule ] ++ modules;
|
||||
inherit specialArgs;
|
||||
};
|
||||
mkMountType = args: with lib.types; coercedTo path (path: { path = mkOptionDefault path; }) (mkMountType' args);
|
||||
serviceModule = { config, nixosConfig, ... }: let
|
||||
in
|
||||
lib.types.submoduleWith {
|
||||
modules = [mountModule rootDirModule] ++ modules;
|
||||
inherit specialArgs;
|
||||
};
|
||||
mkMountType = args: with lib.types; coercedTo path (path: {path = mkOptionDefault path;}) (mkMountType' args);
|
||||
serviceModule = {
|
||||
config,
|
||||
nixosConfig,
|
||||
...
|
||||
}: let
|
||||
cfg = config.gensokyo-zone;
|
||||
mapSharedMounts = f: mapAttrsToList (_: target:
|
||||
f target
|
||||
) cfg.sharedMounts;
|
||||
mapCacheMounts = f: mapAttrsToList (_: target:
|
||||
f target
|
||||
) cfg.cacheMounts;
|
||||
mapSharedMounts = f:
|
||||
mapAttrsToList (
|
||||
_: target:
|
||||
f target
|
||||
)
|
||||
cfg.sharedMounts;
|
||||
mapCacheMounts = f:
|
||||
mapAttrsToList (
|
||||
_: target:
|
||||
f target
|
||||
)
|
||||
cfg.cacheMounts;
|
||||
mkRequire = mount: mount.mountUnit;
|
||||
mkBindPath = mount: "${mount.source}:${mount.path}";
|
||||
specialArgs = {
|
||||
|
|
@ -56,28 +80,34 @@
|
|||
inherit nixosConfig;
|
||||
};
|
||||
mountUnits = mkMerge [
|
||||
(mkIf (cfg.sharedMounts != { }) (mapSharedMounts mkRequire))
|
||||
(mkIf (cfg.cacheMounts != { }) (mapCacheMounts mkRequire))
|
||||
(mkIf (cfg.sharedMounts != {}) (mapSharedMounts mkRequire))
|
||||
(mkIf (cfg.cacheMounts != {}) (mapCacheMounts mkRequire))
|
||||
];
|
||||
in {
|
||||
options.gensokyo-zone = with lib.types; {
|
||||
sharedMounts = mkOption {
|
||||
type = attrsOf (mkMountType { rootDir = "/mnt/shared"; inherit specialArgs; });
|
||||
default = { };
|
||||
type = attrsOf (mkMountType {
|
||||
rootDir = "/mnt/shared";
|
||||
inherit specialArgs;
|
||||
});
|
||||
default = {};
|
||||
};
|
||||
cacheMounts = mkOption {
|
||||
type = attrsOf (mkMountType { rootDir = "/mnt/caches"; inherit specialArgs; });
|
||||
default = { };
|
||||
type = attrsOf (mkMountType {
|
||||
rootDir = "/mnt/caches";
|
||||
inherit specialArgs;
|
||||
});
|
||||
default = {};
|
||||
};
|
||||
};
|
||||
config = {
|
||||
requires = mountUnits;
|
||||
after = mountUnits;
|
||||
serviceConfig = mkMerge [
|
||||
(mkIf (cfg.sharedMounts != { }) {
|
||||
(mkIf (cfg.sharedMounts != {}) {
|
||||
BindPaths = mapSharedMounts mkBindPath;
|
||||
})
|
||||
(mkIf (cfg.cacheMounts != { }) {
|
||||
(mkIf (cfg.cacheMounts != {}) {
|
||||
BindPaths = mapCacheMounts mkBindPath;
|
||||
})
|
||||
];
|
||||
|
|
@ -87,7 +117,7 @@ in {
|
|||
options = with lib.types; {
|
||||
systemd.services = mkOption {
|
||||
type = attrsOf (submoduleWith {
|
||||
modules = [ serviceModule ];
|
||||
modules = [serviceModule];
|
||||
shorthandOnlyDefinesConfig = true;
|
||||
specialArgs = {
|
||||
nixosConfig = config;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue