103 lines
2.6 KiB
Nix
103 lines
2.6 KiB
Nix
{ lib, config, ... }:
|
|
let
|
|
inherit (lib) mkEnableOption mkDefault mkOption types;
|
|
cfg = config.valhalla;
|
|
|
|
mkUsersOption = programs: osConfig: mkOption {
|
|
type = types.attrsOf (types.submodule (
|
|
{ ... }: {
|
|
options = {
|
|
inherit programs;
|
|
};
|
|
|
|
config = {
|
|
programs = builtins.mapAttrs (
|
|
name: config: {
|
|
enable = mkDefault config.enable;
|
|
}) osConfig.programs;
|
|
};
|
|
}));
|
|
};
|
|
|
|
mkPrograms = infos: builtins.foldl' (programs: info:
|
|
programs // {
|
|
${builtins.elemAt info 0} = {
|
|
enable = mkEnableOption (builtins.elemAt info 1);
|
|
};
|
|
}) { } infos;
|
|
|
|
programs = mkPrograms [
|
|
["aliae" "aliae"]
|
|
["brave" "Brave Browser"]
|
|
["discord" "Discord"]
|
|
["docker" "docker"]
|
|
["firefox" "Firefox Web Browser"]
|
|
["openssh" "OpenSSH"]
|
|
["osu!lazer" "osu!lazer"]
|
|
["pennywise" "Pennywise"]
|
|
["powershell" "PowerShell Core"]
|
|
["retroarch" "RetroArch"]
|
|
["steam" "Steam"]
|
|
["thunderbird" "Thunderbird"]
|
|
["vscode" "Visual Studio Code"]
|
|
["zoxide" "zoxide"]
|
|
];
|
|
|
|
linuxPrograms = mkPrograms [
|
|
["bash" "Bash"]
|
|
["fish" "fish"]
|
|
["icedtea" "IcedTea"]
|
|
["grub" "GRUB"]
|
|
["logo-ls" "logo-ls"]
|
|
["lutris" "Lutris"]
|
|
["minegrub-theme" "Minegrub Theme"]
|
|
["nodejs-n" "n"]
|
|
["nuke-usb" "nuke-usb"]
|
|
["nvidia-dkms" "Nvidia Drivers"]
|
|
["plasma" "Plasma"]
|
|
["pyenv" "pyenv"]
|
|
["sddm" "SDDM"]
|
|
["vim" "Vim"]
|
|
["virt-manager" "Virtual Machine Manager"]
|
|
["waydroid" "Waydroid"]
|
|
["xone" "xone"]
|
|
];
|
|
|
|
windowsPrograms = mkPrograms [
|
|
["lghub" "Logitech G Hub"]
|
|
["maniaplanet" "ManiaPlanet"]
|
|
["msedge-redirect" "MSEdgeRedirect"]
|
|
["nvs" "Node Version Switcher"]
|
|
["osu!" "Osu!"]
|
|
["posh-git" "posh-git"]
|
|
["putty" "PuTTY"]
|
|
["rewasd" "reWASD"]
|
|
["terminal-icons" "Terminal Icons"]
|
|
["tm-nations-forever" "TrackMania Nations Forever"]
|
|
["tm-united-forever" "TrackMania United Forever"]
|
|
["tobii-gamehub" "Tobii Game Hub"]
|
|
["tobii-ghost" "Tobii Ghost"]
|
|
["ubiquiti-unifi-controller" "Ubiquiti UniFi Controller"]
|
|
["visualstudio" "Visual Studio"]
|
|
["winscp" "WinSCP"]
|
|
];
|
|
in {
|
|
imports = [
|
|
./programs/git.nix
|
|
./programs/nextcloud.nix
|
|
./programs/oh-my-posh.nix
|
|
./programs/rclone.nix
|
|
];
|
|
|
|
options = {
|
|
valhalla = {
|
|
users = mkUsersOption programs cfg;
|
|
linux.users = mkUsersOption linuxPrograms cfg.linux;
|
|
windows.users = mkUsersOption windowsPrograms cfg.windows;
|
|
|
|
inherit programs;
|
|
linux.programs = linuxPrograms;
|
|
windows.programs = windowsPrograms;
|
|
};
|
|
};
|
|
}
|