adjusted workvm configuration

This commit is contained in:
christoph.hollizeck 2024-03-26 22:05:03 +01:00 committed by Christoph Hollizeck
parent 08f6189869
commit 21774ac23a
Signed by: Daholli
GPG key ID: 249300664F2AF2C7
36 changed files with 466 additions and 326 deletions

View file

@ -1,9 +1,14 @@
{ options, config, lib, pkgs, ... }:
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.apps.cli-apps.fish;
in
{
in {
options.wyrdgard.apps.cli-apps.fish = with types; {
enable = mkBoolOpt false "Whether or not to enable the fish shell";
};
@ -11,7 +16,8 @@ in
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
fish
fishPlugins.tide
starship
colorls
];
};
}

View file

@ -0,0 +1,18 @@
{
lib,
config,
...
}: let
inherit (lib) mkEnableOption mkIf;
inherit (lib.wyrdgard) enabled;
cfg = config.wyrdgard.apps.cli-apps.home-manager;
in {
options.wyrdgard.apps.cli-apps.home-manager = {
enable = mkEnableOption "home-manager";
};
config = mkIf cfg.enable {
programs.home-manager = enabled;
};
}

View file

@ -0,0 +1,24 @@
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.tools.direnv;
in {
options.wyrdgard.tools.direnv = with types; {
enable = mkBoolOpt false "Whether or not to enable direnv.";
};
config = mkIf cfg.enable {
wyrdgard.home.extraOptions = {
programs.direnv = {
enable = true;
nix-direnv = enabled;
};
};
};
}

View file

@ -0,0 +1,34 @@
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.tools.git;
user = config.wyrdgard.user;
in {
options.wyrdgard.tools.git = with types; {
enable = mkBoolOpt true "Wether or not to enable git (Default enabled)";
userName = mkOpt types.str user.fullName "The name to use git with";
userEmail = mkOpt types.str user.email "The email to use git with";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
git
gitAndTools.gh
];
programs.git = {
enable = true;
lfs.enable = true;
config = {
init = {defaultBranch = "main";};
push = {autoSetupRemote = true;};
};
};
};
}

View file

@ -0,0 +1,19 @@
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.tools.nix-ld;
in {
options.wyrdgard.tools.nix-ld = with types; {
enable = mkBoolOpt false "Wether or not to enable nix-ld";
};
config = mkIf cfg.enable {
programs.nix-ld.enable = true;
};
}

View file

@ -1,9 +1,14 @@
{ options, config, lib, pkgs, ... }:
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.apps._1password;
in
{
in {
options.wyrdgard.apps._1password = with types; {
enable = mkBoolOpt false "Enable 1Password";
};
@ -13,7 +18,7 @@ in
_1password.enable = true;
_1password-gui = {
enable = true;
polkitPolicyOwners = [ config.wyrdgard.user.name ];
polkitPolicyOwners = [config.wyrdgard.user.name];
};
};
};

View file

@ -1,9 +1,14 @@
{ options, config, lib, pkgs, ... }:
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.apps.discord;
in
{
in {
options.wyrdgard.apps.discord = with types; {
enable = mkBoolOpt false "Whether or not to enable basic configuration";
};

View file

@ -1,11 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.apps.steam;
in
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.apps.steam;
in {
options.wyrdgard.apps.steam = with types; {
enable = mkBoolOpt false "Whether or not to enable support for Steam.";
};

View file

@ -1,9 +1,14 @@
{ options, config, lib, pkgs, ... }:
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.apps.vivaldi;
in
{
in {
options.wyrdgard.apps.vivaldi = with types; {
enable = mkBoolOpt false "Whether or not to enable vivaldi browser";
};

View file

@ -1,11 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.archetypes.gaming;
in
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.archetypes.gaming;
in {
options.wyrdgard.archetypes.gaming = with types; {
enable = mkBoolOpt false "Whether or not to enable the gaming archetype.";
};

View file

@ -1,23 +1,23 @@
{ options
, config
, pkgs
, lib
, inputs
, ...
{
options,
config,
pkgs,
lib,
inputs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.home;
in
{
in {
options.wyrdgard.home = with types; {
file =
mkOpt attrs { }
(mdDoc "A set of files to be managed by home-manager's `home.file`.");
mkOpt attrs {}
(mdDoc "A set of files to be managed by home-manager's `home.file`.");
configFile =
mkOpt attrs { }
(mdDoc "A set of files to be managed by home-manager's `xdg.configFile`.");
extraOptions = mkOpt attrs { } "Options to pass directly to home-manager.";
mkOpt attrs {}
(mdDoc "A set of files to be managed by home-manager's `xdg.configFile`.");
extraOptions = mkOpt attrs {} "Options to pass directly to home-manager.";
};
config = {

View file

@ -1,21 +1,21 @@
{ options
, config
, pkgs
, lib
, inputs
, ...
{
options,
config,
pkgs,
lib,
inputs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.nix;
substituters-submodule = types.submodule ({ name, ... }: {
substituters-submodule = types.submodule ({name, ...}: {
options = with types; {
key = mkOpt (nullOr str) null "The trusted public key for this substituter.";
};
});
in
{
in {
options.wyrdgard.nix = with types; {
enable = mkBoolOpt true "Whether or not to manage nix configuration.";
package = mkOpt package pkgs.nixUnstable "Which nix package to use.";
@ -25,65 +25,63 @@ in
key = mkOpt str "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "The trusted public key for the substituter.";
};
extra-substituters = mkOpt (attrsOf substituters-submodule) { } "Extra substituters to configure.";
extra-substituters = mkOpt (attrsOf substituters-submodule) {} "Extra substituters to configure.";
};
config = mkIf cfg.enable {
assertions =
mapAttrsToList
(name: value: {
assertion = value.key != null;
message = "wyrdgard.nix.extra-substituters.${name}.key must be set";
})
cfg.extra-substituters;
(name: value: {
assertion = value.key != null;
message = "wyrdgard.nix.extra-substituters.${name}.key must be set";
})
cfg.extra-substituters;
environment.systemPackages = with pkgs; [
nixfmt
nix-prefetch-git
];
nix =
let
users =
[ "root" config.wyrdgard.user.name ]
++ optional config.services.hydra.enable "hydra";
in
{
package = cfg.package;
nix = let
users =
["root" config.wyrdgard.user.name]
++ optional config.services.hydra.enable "hydra";
in {
package = cfg.package;
settings =
{
experimental-features = "nix-command flakes";
http-connections = 50;
warn-dirty = false;
log-lines = 50;
sandbox = "relaxed";
auto-optimise-store = true;
trusted-users = users;
allowed-users = users;
settings =
{
experimental-features = "nix-command flakes";
http-connections = 50;
warn-dirty = false;
log-lines = 50;
sandbox = "relaxed";
auto-optimise-store = true;
trusted-users = users;
allowed-users = users;
substituters =
[ cfg.default-substituter.url ]
++ (mapAttrsToList (name: value: name) cfg.extra-substituters);
trusted-public-keys =
[ cfg.default-substituter.key ]
++ (mapAttrsToList (name: value: value.key) cfg.extra-substituters);
}
// (lib.optionalAttrs config.wyrdgard.tools.direnv.enable {
keep-outputs = true;
keep-derivations = true;
});
substituters =
[cfg.default-substituter.url]
++ (mapAttrsToList (name: value: name) cfg.extra-substituters);
trusted-public-keys =
[cfg.default-substituter.key]
++ (mapAttrsToList (name: value: value.key) cfg.extra-substituters);
}
// (lib.optionalAttrs config.wyrdgard.tools.direnv.enable {
keep-outputs = true;
keep-derivations = true;
});
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
# flake-utils-plus
generateRegistryFromInputs = true;
generateNixPathFromInputs = true;
linkInputs = true;
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
# flake-utils-plus
generateRegistryFromInputs = true;
generateNixPathFromInputs = true;
linkInputs = true;
};
};
}

View file

@ -1,10 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.submodules.basics;
in
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.submodules.basics;
in {
options.wyrdgard.submodules.basics = with types; {
enable = mkBoolOpt false "Whether or not to enable basic configuration.";
};

View file

@ -1,10 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.submodules.games;
in
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.submodules.games;
in {
options.wyrdgard.submodules.games = with types; {
enable = mkBoolOpt false "Whether or not you want to enable steam and other games";
};
@ -19,7 +23,5 @@ in
steam = enabled;
};
};
};
}

View file

@ -1,11 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.submodules.graphical-interface;
in
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.submodules.graphical-interface;
in {
options.wyrdgard.submodules.graphical-interface = with types; {
enable = mkBoolOpt false "Whether to enable a graphical interface";
};
@ -20,5 +23,4 @@ in
desktopManager.plasma5.enable = true;
};
};
}

View file

@ -1,11 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.submodules.socials;
in
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.submodules.socials;
in {
options.wyrdgard.submodules.socials = with types; {
enable = mkBoolOpt false "Whether to enable social apps";
};

View file

@ -1,14 +1,14 @@
{ options
, config
, pkgs
, lib
, ...
{
options,
config,
pkgs,
lib,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.system.boot;
in
{
in {
options.wyrdgard.system.boot = with types; {
enable = mkBoolOpt false "Whether or not to enable booting.";
};

View file

@ -1,17 +1,17 @@
{ options
, config
, pkgs
, lib
, ...
{
options,
config,
pkgs,
lib,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.system.fonts;
in
{
in {
options.wyrdgard.system.fonts = with types; {
enable = mkBoolOpt false "Whether or not to manage fonts.";
fonts = mkOpt (listOf package) [ ] "Custom font packages to install.";
fonts = mkOpt (listOf package) [] "Custom font packages to install.";
};
config = mkIf cfg.enable {
@ -26,7 +26,7 @@ in
fonts.packages = with pkgs;
[
(nerdfonts.override { fonts = [ "Jetbrains Mono" "CodeNewRoman" "NerdFontsSymbolsOnly" ]; })
(nerdfonts.override {fonts = ["CodeNewRoman" "NerdFontsSymbolsOnly"];})
font-awesome
powerline-fonts
powerline-symbols

View file

@ -1,10 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.system.hardware.audio;
in
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.system.hardware.audio;
in {
options.wyrdgard.system.hardware.audio = with types; {
enable = mkBoolOpt false "Whether or not to enable audio";
};
@ -26,7 +30,5 @@ in
alsa.support32Bit = true;
pulse.enable = true;
};
};
}

View file

@ -1,17 +1,19 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.system.hardware.bluetooth;
in
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.system.hardware.bluetooth;
in {
options.wyrdgard.system.hardware.bluetooth = with types; {
enable = mkBoolOpt false "Whether or not to enable bluetooth";
};
config = mkIf cfg.enable {
hardware.bluetooth = {
enable = true;
powerOnBoot = true;

View file

@ -1,17 +1,19 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.system.hardware.networking;
in
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.system.hardware.networking;
in {
options.wyrdgard.system.hardware.networking = with types; {
enable = mkBoolOpt false "Whether or not to enable networking";
};
config = mkIf cfg.enable {
networking.networkmanager.enable = true;
};
}

View file

@ -1,10 +1,14 @@
{ options, config, pkgs, lib, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.system.locale;
in
{
options,
config,
pkgs,
lib,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.system.locale;
in {
options.wyrdgard.system.locale = with types; {
enable = mkBoolOpt false "Whether or not to manage locale settings.";
};

View file

@ -1,14 +1,14 @@
{ options
, config
, pkgs
, lib
, ...
{
options,
config,
pkgs,
lib,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.system.time;
in
{
in {
options.wyrdgard.system.time = with types; {
enable =
mkBoolOpt false "Whether or not to configure timezone information.";

View file

@ -1,10 +1,13 @@
{ options, config, lib, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.system.xkb;
in
{
options,
config,
lib,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.system.xkb;
in {
options.wyrdgard.system.xkb = with types; {
enable = mkBoolOpt false "Whether or not to configure xkb.";
};

View file

@ -1,10 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.wyrdgard;
let cfg = config.wyrdgard.tools.direnv;
in
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.tools.direnv;
in {
options.wyrdgard.tools.direnv = with types; {
enable = mkBoolOpt false "Whether or not to enable direnv.";
};

View file

@ -1,13 +1,15 @@
{ options, config, lib, pkgs, ... }:
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard;
let
with lib.wyrdgard; let
cfg = config.wyrdgard.tools.git;
user = config.wyrdgard.user;
in
{
in {
options.wyrdgard.tools.git = with types; {
enable = mkBoolOpt true "Wether or not to enable git (Default enabled)";
userName = mkOpt types.str user.fullName "The name to use git with";
@ -24,8 +26,8 @@ in
enable = true;
lfs.enable = true;
config = {
init = { defaultBranch = "main"; };
push = { autoSetupRemote = true; };
init = {defaultBranch = "main";};
push = {autoSetupRemote = true;};
};
};
};

View file

@ -1,12 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.wyrdgard;
let
cfg = config.wyrdgard.tools.nix-ld;
in
{
options,
config,
lib,
pkgs,
...
}:
with lib;
with lib.wyrdgard; let
cfg = config.wyrdgard.tools.nix-ld;
in {
options.wyrdgard.tools.nix-ld = with types; {
enable = mkBoolOpt false "Wether or not to enable nix-ld";
};

View file

@ -1,8 +1,9 @@
{ options
, config
, pkgs
, lib
, ...
{
options,
config,
pkgs,
lib,
...
}:
with lib;
with lib.wyrdgard; let
@ -18,38 +19,36 @@ with lib.wyrdgard; let
cp $src $out
'';
passthru = { fileName = defaultIconFileName; };
passthru = {fileName = defaultIconFileName;};
};
propagatedIcon =
pkgs.runCommandNoCC "propagated-icon"
{ passthru = { fileName = cfg.icon.fileName; }; }
''
local target="$out/share/wyrdgard-icons/user/${cfg.name}"
mkdir -p "$target"
{passthru = {fileName = cfg.icon.fileName;};}
''
local target="$out/share/wyrdgard-icons/user/${cfg.name}"
mkdir -p "$target"
cp ${cfg.icon} "$target/${cfg.icon.fileName}"
'';
in
{
cp ${cfg.icon} "$target/${cfg.icon.fileName}"
'';
in {
options.wyrdgard.user = with types; {
name = mkOpt str "cholli" "The name to use for the user account.";
fullName = mkOpt str "Christoph Hollizeck" "The full name of the user.";
email = mkOpt str "christoph.hollizeck@hey.com" "The email of the user.";
initialPassword =
mkOpt str "asdf"
"The initial password to use when the user is first created.";
"The initial password to use when the user is first created.";
icon =
mkOpt (nullOr package) defaultIcon
"The profile picture to use for the user.";
extraGroups = mkOpt (listOf str) [ ] "Groups for the user to be assigned.";
"The profile picture to use for the user.";
extraGroups = mkOpt (listOf str) [] "Groups for the user to be assigned.";
extraOptions =
mkOpt attrs { }
(mdDoc "Extra options passed to `users.users.<name>`.");
mkOpt attrs {}
(mdDoc "Extra options passed to `users.users.<name>`.");
};
config = {
environment.systemPackages = with pkgs; [
];
programs.zsh = {
@ -83,7 +82,6 @@ in
lcu = "${pkgs.colorls}/bin/colorls -U";
lclu = "${pkgs.colorls}/bin/colorls -U -1";
};
};
};
@ -105,7 +103,7 @@ in
# system to select).
uid = 1000;
extraGroups = [ "steamcmd" ] ++ cfg.extraGroups;
extraGroups = ["steamcmd"] ++ cfg.extraGroups;
}
// cfg.extraOptions;
};