refactor: move option definitions to modules
This commit is contained in:
parent
54dbf8f929
commit
d250dc13ef
13 changed files with 221 additions and 222 deletions
|
@ -1,6 +1,20 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
let
|
||||
cfg = config.grimmShared;
|
||||
sync_mod = with lib; types.submodule ({ config, ... }: {
|
||||
options = {
|
||||
remote = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
description = "path on the cloud server";
|
||||
};
|
||||
|
||||
local = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
default = "$HOME/" + (lib.strings.concatStrings (builtins.match "/*(.+)" config.remote));
|
||||
description = "local path to sync";
|
||||
};
|
||||
};
|
||||
});
|
||||
in
|
||||
{
|
||||
config = with cfg; lib.mkIf (enable && cloudSync.enable) (
|
||||
|
@ -63,4 +77,36 @@ in
|
|||
config.users.users);
|
||||
}
|
||||
);
|
||||
|
||||
options.users.users = with lib; mkOption {
|
||||
type = types.attrsOf (types.submodule {
|
||||
options = {
|
||||
syncPaths = mkOption {
|
||||
type = types.listOf sync_mod;
|
||||
default = [ ];
|
||||
description = "paths to sync via nextcloud";
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
options.grimmShared.cloudSync = with lib; {
|
||||
enable = mkEnableOption "cloud_sync";
|
||||
|
||||
username = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
description = "username to use for cloud login";
|
||||
};
|
||||
|
||||
server = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
description = "server url to use for cloud sync";
|
||||
};
|
||||
|
||||
passwordFile = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
description = "password file to use for login";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -56,4 +56,20 @@ in
|
|||
};
|
||||
};
|
||||
};
|
||||
|
||||
options.grimmShared.firefox = with lib; {
|
||||
enable = mkEnableOption "grimm-firefox";
|
||||
|
||||
plugins = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = { };
|
||||
description = "set of plugins to install. Format: guid = short-id";
|
||||
};
|
||||
|
||||
disableUserPlugins = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "disables user controlled plugins";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -46,4 +46,10 @@ in
|
|||
})
|
||||
];
|
||||
};
|
||||
|
||||
options.grimmShared.gaming = with lib; mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "enables steam, heroic, prism and gamemoded";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -28,4 +28,10 @@ in
|
|||
variant = "";
|
||||
};
|
||||
};
|
||||
|
||||
options.grimmShared.locale = with lib; mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Sets german units but english language";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -23,4 +23,10 @@ in
|
|||
serviceConfig.ExecStart = "${pkgs.bluez}/bin/mpris-proxy";
|
||||
};
|
||||
};
|
||||
|
||||
options.grimmShared.network = with lib; mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enables network manager, wifi and bluetooth";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,6 +1,33 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
let
|
||||
cfg = config.grimmShared;
|
||||
screen = with lib; types.submodule {
|
||||
options = {
|
||||
fps = mkOption {
|
||||
type = types.int;
|
||||
default = 60;
|
||||
description = "max framerate of screen";
|
||||
};
|
||||
|
||||
mode = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
default = "1920x1080";
|
||||
description = "pixel format of the screen";
|
||||
};
|
||||
|
||||
id = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
description = "ID of the screen";
|
||||
};
|
||||
|
||||
pos = mkOption {
|
||||
type = types.nullOr types.nonEmptyStr;
|
||||
default = null;
|
||||
example = "0,0";
|
||||
description = "position where to place the screen";
|
||||
};
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
config = with cfg; lib.mkIf (enable && graphical) {
|
||||
|
@ -28,4 +55,19 @@ in
|
|||
glfw
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
options.grimmShared = with lib; {
|
||||
graphical = mkOption {
|
||||
type = types.bool;
|
||||
default = cfg.screens != { };
|
||||
description = "whether to force enable graphical components";
|
||||
};
|
||||
|
||||
screens = mkOption {
|
||||
type = types.attrsOf screen;
|
||||
default = { };
|
||||
description = "Screens to initialize, will activate graphical components";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -34,4 +34,10 @@ in
|
|||
|
||||
fonts.fontDir.enable = true;
|
||||
};
|
||||
|
||||
options.grimmShared.portals = with lib; mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enables portals for wlr, gtk and kde as well as fixes fonts";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -19,4 +19,10 @@ in
|
|||
skanpage
|
||||
];
|
||||
};
|
||||
|
||||
options.grimmShared.printing = with lib; mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enables print and scan related options";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -25,4 +25,10 @@ in
|
|||
pulseaudio
|
||||
];
|
||||
};
|
||||
|
||||
options.grimmShared.sound = with lib; mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "whether to enable sound";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,6 +1,39 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
let
|
||||
cfg = config.grimmShared;
|
||||
sway_conf = with lib; types.submodule ({ config, ... }: rec {
|
||||
options = {
|
||||
keybinds = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = { };
|
||||
description = "set of keybinds assigning key combo to action";
|
||||
};
|
||||
|
||||
autolaunch = mkOption {
|
||||
type = types.listOf (types.either types.str types.package);
|
||||
default = [ ];
|
||||
description = "set of commands to be run at sway startup";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = "additional sway config to be included";
|
||||
};
|
||||
|
||||
definitions = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = { };
|
||||
description = "set of definitions assigning variable to value";
|
||||
};
|
||||
|
||||
modes = mkOption {
|
||||
type = types.attrsOf sway_conf;
|
||||
default = { };
|
||||
description = "possible modes to switch to, e.g. resize";
|
||||
};
|
||||
};
|
||||
});
|
||||
in
|
||||
{
|
||||
config =
|
||||
|
@ -115,4 +148,29 @@ in
|
|||
'';
|
||||
};
|
||||
};
|
||||
|
||||
options.grimmShared.sway = with lib; {
|
||||
enable = mkEnableOption "grimm-sway";
|
||||
|
||||
bar = {
|
||||
enable = mkEnableOption "grimm-sway-bar";
|
||||
|
||||
style = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "waybar style sheet to use";
|
||||
};
|
||||
|
||||
config = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "waybar config to use";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkOption {
|
||||
type = sway_conf;
|
||||
description = "sway config to use";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -117,4 +117,26 @@ in
|
|||
programs.ssh.startAgent = true;
|
||||
programs.thefuck.enable = true;
|
||||
};
|
||||
|
||||
options.grimmShared.tooling = with lib; {
|
||||
enable = mkEnableOption "grimm-tooling";
|
||||
|
||||
pass = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Enables password-store, gnupg and such secret handling";
|
||||
};
|
||||
|
||||
git_user = mkOption {
|
||||
type = types.str;
|
||||
default = "Grimmauld";
|
||||
description = "Username for git to use";
|
||||
};
|
||||
|
||||
git_email = mkOption {
|
||||
type = types.str;
|
||||
default = "${config.grimmShared.tooling.git_user}@grimmauld.de";
|
||||
description = "Email for git to use";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
qt6ct
|
||||
];
|
||||
|
||||
# environment.etc."kvantum".source = "${pkgs.catppuccin-kvantum}/share/Kvantum";
|
||||
# environment.etc."kvantum".source = "${pkgs.catppuccin-kvantum}/share/Kvantum";
|
||||
|
||||
environment.sessionVariables = {
|
||||
NIXPKGS_ALLOW_UNFREE = "1";
|
||||
|
|
221
load_common.nix
221
load_common.nix
|
@ -1,229 +1,8 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
let
|
||||
cfg = config.grimmShared;
|
||||
sync_mod = types.submodule ({ config, ... }: {
|
||||
options = {
|
||||
remote = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
description = "path on the cloud server";
|
||||
};
|
||||
|
||||
local = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
default = "$HOME/" + (lib.strings.concatStrings (builtins.match "/*(.+)" config.remote));
|
||||
description = "local path to sync";
|
||||
};
|
||||
};
|
||||
});
|
||||
|
||||
screen = types.submodule {
|
||||
options = {
|
||||
fps = mkOption {
|
||||
type = types.int;
|
||||
default = 60;
|
||||
description = "max framerate of screen";
|
||||
};
|
||||
|
||||
mode = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
default = "1920x1080";
|
||||
description = "pixel format of the screen";
|
||||
};
|
||||
|
||||
id = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
description = "ID of the screen";
|
||||
};
|
||||
|
||||
pos = mkOption {
|
||||
type = types.nullOr types.nonEmptyStr;
|
||||
default = null;
|
||||
example = "0,0";
|
||||
description = "position where to place the screen";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
sway_conf = types.submodule ({ config, ... }: rec {
|
||||
options = {
|
||||
keybinds = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = { };
|
||||
description = "set of keybinds assigning key combo to action";
|
||||
};
|
||||
|
||||
autolaunch = mkOption {
|
||||
type = types.listOf (types.either types.str types.package);
|
||||
default = [ ];
|
||||
description = "set of commands to be run at sway startup";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = "additional sway config to be included";
|
||||
};
|
||||
|
||||
definitions = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = { };
|
||||
description = "set of definitions assigning variable to value";
|
||||
};
|
||||
|
||||
modes = mkOption {
|
||||
type = types.attrsOf sway_conf;
|
||||
default = { };
|
||||
description = "possible modes to switch to, e.g. resize";
|
||||
};
|
||||
};
|
||||
});
|
||||
in
|
||||
{
|
||||
options.grimmShared = {
|
||||
enable = mkEnableOption "grimm-shared-common";
|
||||
|
||||
locale = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Sets german units but english language";
|
||||
};
|
||||
|
||||
printing = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enables print and scan related options";
|
||||
};
|
||||
|
||||
portals = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enables portals for wlr, gtk and kde as well as fixes fonts";
|
||||
};
|
||||
|
||||
network = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Enables network manager, wifi and bluetooth";
|
||||
};
|
||||
|
||||
tooling = {
|
||||
enable = mkEnableOption "grimm-tooling";
|
||||
|
||||
pass = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Enables password-store, gnupg and such secret handling";
|
||||
};
|
||||
|
||||
git_user = mkOption {
|
||||
type = types.str;
|
||||
default = "Grimmauld";
|
||||
description = "Username for git to use";
|
||||
};
|
||||
|
||||
git_email = mkOption {
|
||||
type = types.str;
|
||||
default = "${config.grimmShared.tooling.git_user}@grimmauld.de";
|
||||
description = "Email for git to use";
|
||||
};
|
||||
};
|
||||
|
||||
sound = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "whether to enable sound";
|
||||
};
|
||||
|
||||
graphical = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "whether to enable graphical components";
|
||||
};
|
||||
|
||||
gaming = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "enables steam, heroic, prism and gamemoded";
|
||||
};
|
||||
|
||||
firefox = {
|
||||
enable = mkEnableOption "grimm-firefox";
|
||||
|
||||
plugins = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = { };
|
||||
description = "set of plugins to install. Format: guid = short-id";
|
||||
};
|
||||
|
||||
disableUserPlugins = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "disables user controlled plugins";
|
||||
};
|
||||
};
|
||||
|
||||
screens = mkOption {
|
||||
type = types.attrsOf screen;
|
||||
default = { };
|
||||
description = "Screens to initialize";
|
||||
};
|
||||
|
||||
sway = {
|
||||
enable = mkEnableOption "grimm-sway";
|
||||
|
||||
bar = {
|
||||
enable = mkEnableOption "grimm-sway-bar";
|
||||
|
||||
style = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "waybar style sheet to use";
|
||||
};
|
||||
|
||||
config = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "waybar config to use";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkOption {
|
||||
type = sway_conf;
|
||||
description = "sway config to use";
|
||||
};
|
||||
};
|
||||
|
||||
cloudSync = {
|
||||
enable = mkEnableOption "cloud_sync";
|
||||
|
||||
username = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
description = "username to use for cloud login";
|
||||
};
|
||||
|
||||
server = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
description = "server url to use for cloud sync";
|
||||
};
|
||||
|
||||
passwordFile = mkOption {
|
||||
type = types.nonEmptyStr;
|
||||
description = "password file to use for login";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
options.users.users = mkOption {
|
||||
type = types.attrsOf (types.submodule {
|
||||
options = {
|
||||
syncPaths = mkOption {
|
||||
type = types.listOf sync_mod;
|
||||
default = [ ];
|
||||
description = "paths to sync via nextcloud";
|
||||
};
|
||||
};
|
||||
});
|
||||
};
|
||||
|
||||
imports = [
|
||||
|
|
Loading…
Reference in a new issue