From a624dc8f5cb380729695df8bd28024dd7e0aa5e0 Mon Sep 17 00:00:00 2001 From: Dmitry Voronin Date: Wed, 26 Jun 2024 12:01:23 +0300 Subject: [PATCH] Apps : Separate to gaming, creative etc. --- host/dasha/default.nix | 11 +- host/desktop/default.nix | 11 +- host/fsight/default.nix | 6 +- host/home/default.nix | 7 +- host/laptop/default.nix | 11 +- host/work/default.nix | 10 +- module/desktop/App.nix | 308 +++++++++++++++++++++------------------ module/desktop/Gnome.nix | 10 +- module/desktop/Sway.nix | 2 +- 9 files changed, 225 insertions(+), 151 deletions(-) diff --git a/host/dasha/default.nix b/host/dasha/default.nix index 2b10635..017fa84 100644 --- a/host/dasha/default.nix +++ b/host/dasha/default.nix @@ -8,10 +8,19 @@ module = { amd.gpu.enable = true; builder.client.enable = true; - desktop.sway.enable = true; intel.cpu.enable = true; print.enable = true; strongswan.enable = true; tablet.enable = true; + desktop = { + sway.enable = true; + app = { + common.enable = true; + gaming.enable = true; + creative.enable = true; + dev.enable = true; + extra.enable = true; + }; + }; }; } diff --git a/host/desktop/default.nix b/host/desktop/default.nix index ded570e..33b6563 100644 --- a/host/desktop/default.nix +++ b/host/desktop/default.nix @@ -7,7 +7,6 @@ module = { builder.client.enable = true; - desktop.sway.enable = true; print.enable = true; virtmanager.enable = true; amd = { @@ -15,6 +14,16 @@ cpu.enable = true; gpu.enable = true; }; + desktop = { + sway.enable = true; + app = { + common.enable = true; + creative.enable = true; + dev.enable = true; + extra.enable = true; + gaming.enable = true; + }; + }; docker = { enable = true; autostart = false; diff --git a/host/fsight/default.nix b/host/fsight/default.nix index a992a17..c9f837b 100644 --- a/host/fsight/default.nix +++ b/host/fsight/default.nix @@ -4,5 +4,9 @@ ./Root.nix ]; - module.docker.enable = true; + module.docker = { + enable = true; + autostart = true; + rootless = false; + }; } diff --git a/host/home/default.nix b/host/home/default.nix index cb4b048..78c6cc6 100644 --- a/host/home/default.nix +++ b/host/home/default.nix @@ -11,7 +11,12 @@ module = { builder.server.enable = true; - desktop.sway.enable = true; + desktop = { + sway.enable = true; + app = { + common.enable = true; + }; + }; ftpd = { enable = true; storage = "/storage/hot/ftp"; diff --git a/host/laptop/default.nix b/host/laptop/default.nix index 6ece6a2..6729caa 100644 --- a/host/laptop/default.nix +++ b/host/laptop/default.nix @@ -1,4 +1,4 @@ -{ lib, ... }: { +{ ... }: { imports = [ ./Filesystem.nix ]; @@ -18,5 +18,14 @@ cpu.enable = true; gpu.enable = true; }; + desktop = { + sway.enable = true; + app = { + common.enable = true; + gaming.enable = true; + creative.enable = true; + dev.enable = true; + }; + }; }; } diff --git a/host/work/default.nix b/host/work/default.nix index c990628..a091a16 100644 --- a/host/work/default.nix +++ b/host/work/default.nix @@ -10,9 +10,17 @@ module = { builder.client.enable = true; - desktop.sway.enable = true; intel.cpu.enable = true; powerlimit.thinkpad.enable = true; print.enable = true; + desktop = { + sway.enable = true; + app = { + common.enable = true; + gaming.enable = true; + dev.enable = true; + extra.enable = true; + }; + }; }; } diff --git a/module/desktop/App.nix b/module/desktop/App.nix index 9ed36f8..a1dcbf6 100644 --- a/module/desktop/App.nix +++ b/module/desktop/App.nix @@ -5,150 +5,180 @@ firefox = import ./firefox args; in { options = { - module.desktop.app.enable = mkEnableOption "Desktop Apps."; + module.desktop.app = { + common.enable = mkEnableOption "Common Apps."; + gaming.enable = mkEnableOption "Gaming Apps."; + creative.enable = mkEnableOption "Creative Apps."; + dev.enable = mkEnableOption "Dev Apps."; + extra.enable = mkEnableOption "Extra Apps."; + }; }; - config = mkIf cfg.enable { xdg.mime.defaultApplications = { - # Use `file -i file.txt` to find file mime type. - # Use `xdg-mime query default "text/plain"` to find default app. - "application/pdf" = "org.gnome.Evince.desktop"; - "application/vnd.openxmlformats-officedocument.*" = "onlyoffice-desktopeditors.desktop"; - "audio/*" = "mpv.desktop"; - "image/*" = "org.gnome.Loupe.desktop"; - "text/*" = "nvim.desktop"; - "video/*" = "mpv.desktop"; - }; - - hardware.graphics = let - packages = with pkgs; [ - dxvk - gamescope - pkgs.mangohud - vkd3d - ]; - in { - extraPackages = packages; - extraPackages32 = packages; - }; - - environment = { - systemPackages = with pkgs; [ - anilibria-winmaclinux # Anime! - appimage-run # Tool to run .AppImage files in NixOS. - aseprite # Pixel Art draw app. WARNING: Always builds from source. - blanket # Sounds generator. - blender-hip # Blender with HiP support. - calibre # Book library manager. - evince # Document viewer. - foot # Terminal emulator. - gimp # Image manipulation program. - gnome.adwaita-icon-theme # GTK icons. - gnome.gnome-calculator # Calculator. - gnome.gnome-font-viewer # Font viewer. - gnome.nautilus # File manager. - jellyfin-media-player # Jellyfin client (self-hosted Netflix). - loupe # Image viewer. - obs-studio # Streaming/recording app. - onlyoffice-bin # Office documents app suite. - steam-run # Run native apps in Steam environment, like Minecraft. For Windows games use Bottles. - tor-browser # Privacy browser. - - android-studio jetbrains.idea-community # JetBrans IDEs. - bottles dxvk gamescope pkgs.mangohud vkd3d wine64 # Gaming! - (mpv.override {scripts = [mpvScripts.mpris];}) # Media player. - ]; - - variables = { - # MangoHud. - MANGOHUD = "1"; - MANGOHUD_CONFIGFILE = pkgs.writeText "MangoHudConfig" mangohud.config; - MANGOHUD_PRESETSFILE = pkgs.writeText "MangoHudPreset" mangohud.presets; - - # Proton. - WINEFSYNC = "1"; - - # GTK apps compat. - GTK_CSD = 0; - - # Terminal settings. - TERM = "xterm-256color"; - TERMINAL = config.setting.terminal.bin; - - # Disable Firefox profile switching on rebuild. - MOZ_LEGACY_PROFILES = "1"; - }; - }; - - # File manager file previews. - services.gnome.sushi.enable = true; - - # File manager network features. - services.gvfs.enable = true; - - # Special packages. - programs.steam.enable = true; - - programs.firefox = let - mkExtension = install_url: { - inherit install_url; - installation_mode = "force_installed"; + config = mkMerge [ + # Common apps. + (mkIf cfg.common.enable { xdg.mime.defaultApplications = { + # Use `file -i file.txt` to find file mime type. + # Use `xdg-mime query default "text/plain"` to find default app. + "application/pdf" = "org.gnome.Evince.desktop"; + "application/vnd.openxmlformats-officedocument.*" = "onlyoffice-desktopeditors.desktop"; + "audio/*" = "mpv.desktop"; + "image/*" = "org.gnome.Loupe.desktop"; + "text/*" = "nvim.desktop"; + "video/*" = "mpv.desktop"; }; - mkBookmark = name: url: { inherit name url; }; - in { - enable = true; - package = pkgs.firefox-esr; - languagePacks = [ "en-US" "ru" ]; - autoConfig = firefox.config; - policies = { - ManagedBookmarks = [ - { toplevel_name = "Pin"; } - (mkBookmark "Dashboard" "https://home.voronind.com") - (mkBookmark "Music" "https://music.yandex.ru") - (mkBookmark "Telegram" "https://web.telegram.org/a") - (mkBookmark "Discord" "https://discord.com") - (mkBookmark "WorkMail" "https://mail.fsight.ru") - (mkBookmark "Git" "https://git.voronind.com") - (mkBookmark "WorkGit" "https://git.fmp.fsight.world") - (mkBookmark "WorkBoard" "https://support.fsight.ru") - (mkBookmark "Hass" "https://iot.voronind.com") - (mkBookmark "Cloud" "https://cloud.voronind.com") + environment = { + systemPackages = with pkgs; [ + appimage-run # Tool to run .AppImage files in NixOS. + evince # Document viewer. + foot # Terminal emulator. + gimp # Image manipulation program. + gnome.adwaita-icon-theme # GTK icons. + gnome.gnome-calculator # Calculator. + gnome.nautilus # File manager. + jellyfin-media-player # Jellyfin client (self-hosted Netflix). + loupe # Image viewer. + obs-studio # Streaming/recording app. + onlyoffice-bin # Office documents app suite. + + (mpv.override {scripts = [mpvScripts.mpris];}) # Media player. ]; - ExtensionUpdate = true; - ExtensionSettings = { - # Block extension installation outside of this config. - "*" = { - install_sources = [ "*" ]; - installation_mode = "blocked"; - }; - "addon@darkreader.org" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/darkreader/latest.xpi"; - "cliget@zaidabdulla.com" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/cliget/latest.xpi"; - "uBlock0@raymondhill.net" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; - "{446900e4-71c2-419f-a6a7-df9c091e268b}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi"; - "{d7742d87-e61d-4b78-b8a1-b469842139fa}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/vimium-ff/latest.xpi"; - "{e7625f06-e252-479d-ac7a-db68aeaff2cb}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/togglefonts/latest.xpi"; - "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/user-agent-string-switcher/latest.xpi"; - # NOTE: This extension is helpful to find the required parameters for this config. - # Or find them yourself inside the `about:support`. - # "queryamoid@kaply.com" = mkExtension "https://github.com/mkaply/queryamoid/releases/download/v0.1/query_amo_addon_id-0.1-fx.xpi"; - }; - # NOTE: `firefox-esr` edition is required to change default search engine. - SearchEngines = { - Default = "Searx"; - Add = [ - { - Alias = "s"; - Description = "Searx Search"; - IconURL = "https://search.voronind.com/favicon.ico"; - Method = "POST"; - Name = "Searx"; - PostData = "q={searchTerms}"; - # SuggestURLTemplate = "https://search.voronind.com/autocomplete?q={searchTerms}"; - URLTemplate = "https://search.voronind.com/search?q=%{searchTerms}"; - } - ]; + + variables = { + # GTK apps compat. + GTK_CSD = 0; + + # Terminal settings. + TERM = "xterm-256color"; + TERMINAL = config.setting.terminal.bin; + + # Disable Firefox profile switching on rebuild. + MOZ_LEGACY_PROFILES = "1"; }; }; - }; - }; + + programs.firefox = let + mkExtension = install_url: { + inherit install_url; + installation_mode = "force_installed"; + }; + + mkBookmark = name: url: { inherit name url; }; + in { + enable = true; + package = pkgs.firefox-esr; + languagePacks = [ "en-US" "ru" ]; + autoConfig = firefox.config; + policies = { + ManagedBookmarks = [ + { toplevel_name = "Pin"; } + (mkBookmark "Dashboard" "https://home.voronind.com") + (mkBookmark "Music" "https://music.yandex.ru") + (mkBookmark "Telegram" "https://web.telegram.org/a") + (mkBookmark "Discord" "https://discord.com") + (mkBookmark "WorkMail" "https://mail.fsight.ru") + (mkBookmark "Git" "https://git.voronind.com") + (mkBookmark "WorkGit" "https://git.fmp.fsight.world") + (mkBookmark "WorkBoard" "https://support.fsight.ru") + (mkBookmark "Hass" "https://iot.voronind.com") + (mkBookmark "Cloud" "https://cloud.voronind.com") + ]; + ExtensionUpdate = true; + ExtensionSettings = { + # Block extension installation outside of this config. + "*" = { + install_sources = [ "*" ]; + installation_mode = "blocked"; + }; + "addon@darkreader.org" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/darkreader/latest.xpi"; + "cliget@zaidabdulla.com" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/cliget/latest.xpi"; + "uBlock0@raymondhill.net" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"; + "{446900e4-71c2-419f-a6a7-df9c091e268b}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/bitwarden-password-manager/latest.xpi"; + "{d7742d87-e61d-4b78-b8a1-b469842139fa}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/vimium-ff/latest.xpi"; + "{e7625f06-e252-479d-ac7a-db68aeaff2cb}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/togglefonts/latest.xpi"; + "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}" = mkExtension "https://addons.mozilla.org/firefox/downloads/latest/user-agent-string-switcher/latest.xpi"; + # NOTE: This extension is helpful to find the required parameters for this config. + # Or find them yourself inside the `about:support`. + # "queryamoid@kaply.com" = mkExtension "https://github.com/mkaply/queryamoid/releases/download/v0.1/query_amo_addon_id-0.1-fx.xpi"; + }; + # NOTE: `firefox-esr` edition is required to change default search engine. + SearchEngines = { + Default = "Searx"; + Add = [ + { + Alias = "s"; + Description = "Searx Search"; + IconURL = "https://search.voronind.com/favicon.ico"; + Method = "POST"; + Name = "Searx"; + PostData = "q={searchTerms}"; + # SuggestURLTemplate = "https://search.voronind.com/autocomplete?q={searchTerms}"; + URLTemplate = "https://search.voronind.com/search?q=%{searchTerms}"; + } + ]; + }; + }; + }; + }) + + # Gaming. + (mkIf cfg.gaming.enable { + hardware.graphics = let + packages = with pkgs; [ + dxvk + gamescope + pkgs.mangohud + vkd3d + ]; + in { + extraPackages = packages; + extraPackages32 = packages; + }; + + programs.steam.enable = true; + + environment = { + systemPackages = with pkgs; [ + steam-run + bottles dxvk gamescope pkgs.mangohud vkd3d wine64 # Gaming! + ]; + + variables = { + MANGOHUD = "1"; + MANGOHUD_CONFIGFILE = pkgs.writeText "MangoHudConfig" mangohud.config; + MANGOHUD_PRESETSFILE = pkgs.writeText "MangoHudPreset" mangohud.presets; + + WINEFSYNC = "1"; + }; + }; + }) + + # Creative. + (mkIf cfg.creative.enable { + environment.systemPackages = with pkgs; [ + aseprite # Pixel Art draw app. WARNING: Always builds from source. + blender-hip # Blender with HiP support. + krita # Draw! + ]; + }) + + # Development. + (mkIf cfg.dev.enable { + environment.systemPackages = with pkgs; [ + android-studio + jetbrains.idea-community + ]; + }) + + # Extras. + (mkIf cfg.extra.enable { + environment.systemPackages = with pkgs; [ + anilibria-winmaclinux # Anime! + blanket # Sounds generator. + calibre # Book library manager. + gnome.gnome-font-viewer # Font viewer. + tor-browser # Privacy browser. + ]; + }) + ]; } diff --git a/module/desktop/Gnome.nix b/module/desktop/Gnome.nix index 9a5a41d..80b6632 100644 --- a/module/desktop/Gnome.nix +++ b/module/desktop/Gnome.nix @@ -7,11 +7,11 @@ in { config = mkIf cfg.enable { module.desktop = { - app.enable = true; - dconf.enable = true; - dm.enable = true; - sound.enable = true; - wayland.enable = true; + app.common.enable = true; + dconf.enable = true; + dm.enable = true; + sound.enable = true; + wayland.enable = true; }; services.xserver.displayManager.gdm.enable = true; diff --git a/module/desktop/Sway.nix b/module/desktop/Sway.nix index dd40a37..0054f2b 100644 --- a/module/desktop/Sway.nix +++ b/module/desktop/Sway.nix @@ -13,7 +13,7 @@ in { config = mkIf cfg.enable { module.desktop = { - app.enable = true; + app.common.enable = true; bluetooth.enable = true; brightness.enable = true; dconf.enable = true;