This commit is contained in:
Harald Hoyer 2024-01-11 10:26:46 +00:00
parent 66c05f9093
commit 45d6f4b0f3
205 changed files with 9040 additions and 342 deletions

View file

@ -0,0 +1,23 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps._1password;
in
{
options.plusultra.apps._1password = with types; {
enable = mkBoolOpt false "Whether or not to enable 1password.";
};
config = mkIf cfg.enable {
programs = {
_1password = enabled;
_1password-gui = {
enable = true;
polkitPolicyOwners = [ config.plusultra.user.name ];
};
};
};
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.ardour;
in
{
options.plusultra.apps.ardour = with types; {
enable = mkBoolOpt false "Whether or not to enable Ardour.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ ardour ]; };
}

View file

@ -0,0 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let cfg = config.plusultra.apps.blender;
in
{
options.plusultra.apps.blender = with types; {
enable = mkBoolOpt false "Whether or not to enable Blender.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ blender ]; };
}

View file

@ -0,0 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let cfg = config.plusultra.apps.bottles;
in
{
options.plusultra.apps.bottles = with types; {
enable = mkBoolOpt false "Whether or not to enable Bottles.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ bottles ]; };
}

View file

@ -0,0 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let cfg = config.plusultra.apps.cadence;
in
{
options.plusultra.apps.cadence = with types; {
enable = mkBoolOpt false "Whether or not to enable Cadence.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ cadence ]; };
}

View file

@ -0,0 +1,41 @@
{ options, config, lib, pkgs, inputs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.discord;
discord = lib.replugged.makeDiscordPlugged {
inherit pkgs;
# This is currently broken, but could speed up Discord startup in the future.
withOpenAsar = false;
plugins = {
inherit (inputs) discord-tweaks;
};
themes = {
inherit (inputs) discord-nord-theme;
};
};
in
{
options.plusultra.apps.discord = with types; {
enable = mkBoolOpt false "Whether or not to enable Discord.";
canary.enable = mkBoolOpt false "Whether or not to enable Discord Canary.";
chromium.enable = mkBoolOpt false
"Whether or not to enable the Chromium version of Discord.";
firefox.enable = mkBoolOpt false
"Whether or not to enable the Firefox version of Discord.";
native.enable = mkBoolOpt false "Whether or not to enable the native version of Discord.";
};
config = mkIf (cfg.enable or cfg.chromium.enable) {
environment.systemPackages =
lib.optional cfg.enable discord
++ lib.optional cfg.canary.enable pkgs.plusultra.discord
++ lib.optional cfg.chromium.enable pkgs.plusultra.discord-chromium
++ lib.optional cfg.firefox.enable pkgs.plusultra.discord-firefox
++ lib.optional cfg.native.enable pkgs.discord;
};
}

View file

@ -0,0 +1,18 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let cfg = config.plusultra.apps.dolphin;
in
{
options.plusultra.apps.dolphin = with types; {
enable = mkBoolOpt false "Whether or not to enable Dolphin.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ dolphin-emu ];
# Enable GameCube controller support.
services.udev.packages = [ pkgs.dolphinEmu ];
};
}

View file

@ -0,0 +1,30 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.doukutsu-rs;
desktopItem = pkgs.makeDesktopItem {
name = "doukutsu-rs";
desktopName = "doukutsu-rs";
genericName =
"A fully playable re-implementation of Cave Story (Doukutsu Monogatari) engine written in Rust.";
exec = "${pkgs.plusultra.doukutsu-rs}/bin/doukutsu-rs";
icon = ./icon.png;
type = "Application";
categories = [ "Game" "AdventureGame" ];
terminal = false;
};
in
{
options.plusultra.apps.doukutsu-rs = with types; {
enable = mkBoolOpt false "Whether or not to enable doukutsu-rs.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs.plusultra; [
doukutsu-rs
desktopItem
];
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View file

@ -0,0 +1,16 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.element;
in
{
options.plusultra.apps.element = with types; {
enable = mkBoolOpt false "Whether or not to enable Element.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ element-desktop ];
};
}

View file

@ -0,0 +1,22 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.etcher;
in
{
options.plusultra.apps.etcher = with types; {
enable = mkBoolOpt false "Whether or not to enable etcher.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs;
[
# Etcher is currently broken in nixpkgs, temporarily replaced with
# gnome disk utility.
# etcher
gnome.gnome-disk-utility
];
};
}

View file

@ -0,0 +1,35 @@
{ lib, config, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.expressvpn;
in
{
options.plusultra.apps.expressvpn = {
enable = mkEnableOption "Express VPN";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
plusultra.expressvpn
] ++ optionals config.plusultra.desktop.gnome.enable [
gnomeExtensions.evpn-shell-assistant
];
boot.kernelModules = [ "tun" ];
systemd.services.expressvpn = {
wantedBy = [ "multi-user.target" ];
after = [ "network.target" "network-online.target" ];
description = "ExpressVPN Daemon";
serviceConfig = {
ExecStart = "${pkgs.plusultra.expressvpn}/bin/expressvpnd";
Restart = "on-failure";
RestartSec = 5;
};
};
};
}

View file

@ -0,0 +1,66 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.firefox;
defaultSettings = {
"browser.aboutwelcome.enabled" = false;
"browser.meta_refresh_when_inactive.disabled" = true;
"browser.startup.homepage" = "https://hamho.me";
"browser.bookmarks.showMobileBookmarks" = true;
"browser.urlbar.suggest.quicksuggest.sponsored" = false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = false;
"browser.aboutConfig.showWarning" = false;
"browser.ssb.enabled" = true;
};
in
{
options.plusultra.apps.firefox = with types; {
enable = mkBoolOpt false "Whether or not to enable Firefox.";
extraConfig =
mkOpt str "" "Extra configuration for the user profile JS file.";
userChrome =
mkOpt str "" "Extra configuration for the user chrome CSS file.";
settings = mkOpt attrs defaultSettings "Settings to apply to the profile.";
};
config = mkIf cfg.enable {
plusultra.desktop.addons.firefox-nordic-theme = enabled;
services.gnome.gnome-browser-connector.enable = config.plusultra.desktop.gnome.enable;
plusultra.home = {
file = {
".mozilla/native-messaging-hosts/com.dannyvankooten.browserpass.json".source = "${pkgs.browserpass}/lib/mozilla/native-messaging-hosts/com.dannyvankooten.browserpass.json";
".mozilla/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = mkIf config.plusultra.desktop.gnome.enable "${pkgs.chrome-gnome-shell}/lib/mozilla/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
};
extraOptions = {
programs.firefox = {
enable = true;
package = pkgs.firefox.override (
{
cfg = {
enableBrowserpass = true;
enableGnomeExtensions = config.plusultra.desktop.gnome.enable;
};
extraNativeMessagingHosts =
optional
config.plusultra.desktop.gnome.enable
pkgs.gnomeExtensions.gsconnect;
}
);
profiles.${config.plusultra.user.name} = {
inherit (cfg) extraConfig userChrome settings;
id = 0;
name = config.plusultra.user.name;
};
};
};
};
};
}

View file

@ -0,0 +1,16 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.frappe-books;
in
{
options.plusultra.apps.frappe-books = with types; {
enable = mkBoolOpt false "Whether or not to enable FrappeBooks.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ plusultra.frappe-books ];
};
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.freetube;
in
{
options.plusultra.apps.freetube = with types; {
enable = mkBoolOpt false "Whether or not to enable FreeTube.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ freetube ]; };
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.gimp;
in
{
options.plusultra.apps.gimp = with types; {
enable = mkBoolOpt false "Whether or not to enable Gimp.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ gimp ]; };
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.gparted;
in
{
options.plusultra.apps.gparted = with types; {
enable = mkBoolOpt false "Whether or not to enable gparted.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ gparted ]; };
}

View file

@ -0,0 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.hey;
in
{
options.plusultra.apps.hey = with types; {
enable = mkBoolOpt false "Whether or not to enable HEY.";
};
config = mkIf cfg.enable { environment.systemPackages = with pkgs.plusultra; [ hey ]; };
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let cfg = config.plusultra.apps.inkscape;
in
{
options.plusultra.apps.inkscape = with types; {
enable = mkBoolOpt false "Whether or not to enable Inkscape.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ inkscape-with-extensions google-fonts ];
};
}

View file

@ -0,0 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let cfg = config.plusultra.apps.logseq;
in
{
options.plusultra.apps.logseq = with types; {
enable = mkBoolOpt false "Whether or not to enable logseq.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ logseq ]; };
}

View file

@ -0,0 +1,9 @@
[input]
escapeKey=56
rawMouse=yes
mouseSens=6
[win]
size=1920x1080
autoResize=yes
quickSplash=yes

View file

@ -0,0 +1,23 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.looking-glass-client;
user = config.plusultra.user;
in
{
options.plusultra.apps.looking-glass-client = with types; {
enable =
mkBoolOpt false "Whether or not to enable the Looking Glass client.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ looking-glass-client ];
environment.etc."looking-glass-client.ini" = {
user = "+${toString config.users.users.${user.name}.uid}";
source = ./client.ini;
};
};
}

View file

@ -0,0 +1,21 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.lutris;
in
{
options.plusultra.apps.lutris = with types; {
enable = mkBoolOpt false "Whether or not to enable Lutris.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
lutris
# Needed for some installers like League of Legends
openssl
gnome.zenity
];
};
}

View file

@ -0,0 +1,25 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.obs;
in
{
options.plusultra.apps.obs = with types; {
enable = mkBoolOpt false "Whether or not to enable support for OBS.";
};
config = mkIf cfg.enable {
environment.systemPackages = [
(pkgs.wrapOBS {
plugins = with pkgs.obs-studio-plugins; [
wlrobs
obs-multi-rtmp
obs-move-transition
looking-glass-obs
];
})
];
};
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.pcsx2;
in
{
options.plusultra.apps.pcsx2 = with types; {
enable = mkBoolOpt false "Whether or not to enable PCSX2.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ pcsx2 ]; };
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.pitivi;
in
{
options.plusultra.apps.pitivi = with types; {
enable = mkBoolOpt false "Whether or not to enable Pitivi.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ pitivi ]; };
}

View file

@ -0,0 +1,16 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.pocketcasts;
in
{
options.plusultra.apps.pocketcasts = with types; {
enable = mkBoolOpt false "Whether or not to enable Pocketcasts.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs.plusultra; [ pocketcasts ];
};
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.prismlauncher;
in
{
options.plusultra.apps.prismlauncher = with types; {
enable = mkBoolOpt false "Whether or not to enable Prism Launcher.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ prismlauncher ]; };
}

View file

@ -0,0 +1,16 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.protontricks;
in
{
options.plusultra.apps.protontricks = with types; {
enable = mkBoolOpt false "Whether or not to enable Protontricks.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ protontricks ];
};
}

View file

@ -0,0 +1,18 @@
{ options
, config
, lib
, pkgs
, ...
}:
with lib;
with lib.plusultra; let
cfg = config.plusultra.apps.r2modman;
in
{
options.plusultra.apps.r2modman = with types; {
enable = mkBoolOpt false "Whether or not to enable r2modman.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ r2modman ]; };
}

View file

@ -0,0 +1,16 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.rpcs3;
in
{
options.plusultra.apps.rpcs3 = with types; {
enable = mkBoolOpt false "Whether or not to enable rpcs3.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ rpcs3 ];
};
}

View file

@ -0,0 +1,30 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.steam;
in
{
options.plusultra.apps.steam = with types; {
enable = mkBoolOpt false "Whether or not to enable support for Steam.";
};
config = mkIf cfg.enable {
programs.steam.enable = true;
programs.steam.remotePlay.openFirewall = true;
hardware.steam-hardware.enable = true;
# Enable GameCube controller support.
services.udev.packages = [ pkgs.dolphinEmu ];
environment.systemPackages = with pkgs.plusultra; [
steam
];
environment.sessionVariables = {
STEAM_EXTRA_COMPAT_TOOLS_PATHS = "$HOME/.steam/root/compatibilitytools.d";
};
};
}

View file

@ -0,0 +1,18 @@
{ lib, pkgs, config, ... }:
let
cfg = config.plusultra.apps.steamtinkerlaunch;
inherit (lib) mkIf mkEnableOption;
in
{
options.plusultra.apps.steamtinkerlaunch = {
enable = mkEnableOption "Steam Tinker Launch";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
steamtinkerlaunch
];
};
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.twitter;
in
{
options.plusultra.apps.twitter = with types; {
enable = mkBoolOpt false "Whether or not to enable Twitter.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs.plusultra; [ twitter ]; };
}

View file

@ -0,0 +1,23 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.ubports-installer;
in
{
options.plusultra.apps.ubports-installer = with types; {
enable = mkBoolOpt false "Whether or not to enable the UBPorts Installer.";
};
config =
mkIf cfg.enable {
environment.systemPackages = with pkgs.plusultra; [
ubports-installer
];
services.udev.packages = with pkgs.plusultra; [
ubports-installer-udev-rules
];
};
}

View file

@ -0,0 +1,21 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.virtualbox;
in
{
options.plusultra.apps.virtualbox = with types; {
enable = mkBoolOpt false "Whether or not to enable Virtualbox.";
};
config = mkIf cfg.enable {
virtualisation.virtualbox.host = {
enable = true;
enableExtensionPack = true;
};
plusultra.user.extraGroups = [ "vboxusers" ];
};
}

View file

@ -0,0 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.vlc;
in
{
options.plusultra.apps.vlc = with types; {
enable = mkBoolOpt false "Whether or not to enable vlc.";
};
config = mkIf cfg.enable { environment.systemPackages = with pkgs; [ vlc ]; };
}

View file

@ -0,0 +1,14 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let cfg = config.plusultra.apps.vscode;
in
{
options.plusultra.apps.vscode = with types; {
enable = mkBoolOpt false "Whether or not to enable vscode.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ vscode ]; };
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.winetricks;
in
{
options.plusultra.apps.winetricks = with types; {
enable = mkBoolOpt false "Whether or not to enable Winetricks.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs; [ winetricks ]; };
}

View file

@ -0,0 +1,15 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.yt-music;
in
{
options.plusultra.apps.yt-music = with types; {
enable = mkBoolOpt false "Whether or not to enable YouTube Music.";
};
config =
mkIf cfg.enable { environment.systemPackages = with pkgs.plusultra; [ yt-music ]; };
}

View file

@ -0,0 +1,17 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.yubikey;
in
{
options.plusultra.apps.yubikey = with types; {
enable = mkBoolOpt false "Whether or not to enable Yubikey.";
};
config = mkIf cfg.enable {
services.yubikey-agent.enable = true;
environment.systemPackages = with pkgs; [ yubikey-manager-qt ];
};
}

View file

@ -0,0 +1,16 @@
{ options, config, lib, pkgs, ... }:
with lib;
with lib.plusultra;
let
cfg = config.plusultra.apps.yuzu;
in
{
options.plusultra.apps.yuzu = with types; {
enable = mkBoolOpt false "Whether or not to enable Yuzu.";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [ yuzu-mainline ];
};
}