dotfiles

My PC Dotfiles & Website
commit bdb75a2d6b42a2153e70685ee581f4512ba9f8fd
parent f91dbc7b70472e5f679a58d0a1008677da6aa1c5
Author: maydayv7 <maydayv7@gmail.com>
Date:   Sun, 18 Feb 2024 18:11:59 +0530

refactor: Fix Install Media Desktop Configuration

Also load `zfs` kernel module when it's kernel is selected

Diffstat:

Mdevices/flake.nix | 4++--
Mmodules/base/default.nix | 1+
Mmodules/gui/default.nix | 4++--
Dmodules/gui/desktop/gnome.nix | 293-------------------------------------------------------------------------------
Amodules/gui/desktop/gnome/default.nix | 257+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Amodules/gui/desktop/gnome/iso.nix | 50++++++++++++++++++++++++++++++++++++++++++++++++++
Mmodules/gui/desktop/hyprland/apps/bar.nix | 2+-
Mmodules/gui/desktop/hyprland/apps/default.nix | 3++-
Mmodules/gui/desktop/hyprland/default.nix | 31++++++++++++++++++-------------
Mmodules/gui/desktop/hyprland/settings/keybindings.nix | 2+-
Amodules/gui/desktop/iso.nix | 4++++
Mmodules/gui/desktop/pantheon.nix | 50++++++++++++++++++--------------------------------
Mmodules/gui/desktop/xfce/default.nix | 45++++++++++++++++-----------------------------
Amodules/gui/desktop/xfce/iso.nix | 23+++++++++++++++++++++++
14 files changed, 395 insertions(+), 374 deletions(-)

diff --git a/devices/flake.nix b/devices/flake.nix @@ -26,7 +26,7 @@ in { kernelModules = ["nvme"]; kernel = "zfs"; - gui.desktop = name + "-minimal"; + gui.desktop = name + "-iso"; user = { name = "nixos"; @@ -35,7 +35,7 @@ in { shells = null; password = readFile ../users/passwords/default; }; - })) (map.modules.name ../modules/gui/desktop)) + })) (import ../modules/gui/desktop/iso.nix)) // {default = self.installMedia.xfce;}; ## Virtual Machines ## diff --git a/modules/base/default.nix b/modules/base/default.nix @@ -35,6 +35,7 @@ in { config = { # Kernel Configuration boot = { + supportedFilesystems = optionals (cfg.kernel == "zfs") ["zfs"]; kernelPackages = if (cfg.kernel == "zfs") then pkgs.zfs.latestCompatibleLinuxPackages diff --git a/modules/gui/default.nix b/modules/gui/default.nix @@ -16,7 +16,7 @@ in { fancy = mkEnableOption "Enable Fancy GUI Effects"; desktop = mkOption { description = "GUI Desktop Choice"; - type = types.enum ((name ./desktop) ++ map (x: x + "-minimal") (name ./desktop) ++ [""]); + type = types.enum ((name ./desktop) ++ map (x: x + "-iso") (import ./desktop/iso.nix) ++ [""]); default = ""; }; }; @@ -26,7 +26,7 @@ in { # Warning warnings = optional (desktop == "") (options.gui.desktop.description + " is unset"); } - // (mkIf (desktop != "" && !(hasSuffix "-minimal" desktop)) + // (mkIf (desktop != "" && !(hasSuffix "-iso" desktop)) { # Autostart Apps user.persist.directories = [".config/autostart"]; diff --git a/modules/gui/desktop/gnome.nix b/modules/gui/desktop/gnome.nix @@ -1,293 +0,0 @@ -{ - config, - lib, - util, - pkgs, - files, - ... -}: -with files; let - inherit (config.gui) desktop; - inherit (lib) gvariant mkIf mkForce mkMerge; - exists = app: builtins.elem app config.apps.list; -in { - ## GNOME Desktop Configuration ## - config = mkIf (desktop == "gnome" || desktop == "gnome-minimal") (mkMerge [ - { - # Session - services = { - xserver = { - desktopManager.gnome.enable = true; - displayManager = { - gdm.enable = true; - defaultSession = "gnome"; - }; - }; - - # Initial Setup - gnome.gnome-initial-setup.enable = mkForce false; - }; - - # Excluded Packages - environment.gnome.excludePackages = with pkgs; [ - gnome.totem - gnome.gnome-music - ]; - - # Dconf Settings - programs.dconf.profiles.gdm.databases = [ - { - settings = { - "org/gnome/desktop/peripherals/touchpad" = { - tap-to-click = true; - }; - "org/gnome/desktop/interface" = { - cursor-theme = config.stylix.cursor.name; - cursor-size = gvariant.mkInt32 config.stylix.cursor.size; - }; - }; - } - ]; - } - - ## Full-Fledged GNOME Desktop Configuration - (mkIf (desktop == "gnome") { - # Desktop Integration - gui = { - fonts.enable = true; - wayland.enable = true; - - gtk = { - enable = true; - theme = { - name = "adw-gtk3-dark"; - package = pkgs.adw-gtk3; - }; - }; - - qt = { - enable = true; - theme = { - name = "KvLibadwaitaDark"; - package = pkgs.custom.kvlibadwaita; - }; - }; - }; - - services = { - udev.packages = [pkgs.gnome.gnome-settings-daemon]; - telepathy.enable = true; - gnome = { - core-developer-tools.enable = true; - gnome-remote-desktop.enable = true; - sushi.enable = true; - }; - }; - - apps.list = ["firefox"]; - programs = { - gnupg.agent.pinentryFlavor = mkForce "gnome3"; - firefox = { - policies.ExtensionSettings = { - name = "gnome-shell-integration"; - value = { - installation_mode = "normal_installed"; - install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/chrome-gnome-shell@gnome.org/latest.xpi"; - }; - }; - }; - }; - - ## User Configuration - user.homeConfig = { - # Desktop Settings - imports = [gnome.settings]; - stylix.targets.gnome.enable = true; - - # Default Applications - xdg.mimeApps.defaultApplications = util.build.mime xdg.mime { - audio = ["org.gnome.Lollypop.desktop"]; - calendar = ["org.gnome.Calendar.desktop"]; - directory = ["org.gnome.Nautilus.desktop"]; - image = ["org.gnome.Loupe.desktop"]; - magnet = ["de.haeckerfelix.Fragments.desktop"]; - mail = ["org.gnome.Geary.desktop"]; - markdown = ["org.gnome.gitlab.somas.Apostrophe.desktop"]; - pdf = ["org.gnome.Evince.desktop"]; - text = ["org.gnome.TextEditor.desktop"]; - video = ["io.github.celluloid_player.Celluloid.desktop"]; - }; - - home.file = - { - # Action Menu - ".config/guillotine.json".source = gnome.menu; - - # Shell Theme - ".local/share/themes/custom/gnome-shell/gnome-shell.css".text = gnome.shell; - - # Window Tiling Stylesheet - ".config/forge/stylesheet/forge/stylesheet.css".text = gnome.tiling; - } - // - ## 3rd Party Apps Configuration - { - # Firefox GNOME Theme - ".mozilla/firefox/default/chrome/userChrome.css".text = ''@import "${pkgs.custom.firefox-gnome-theme}/userChrome.css";''; - ".mozilla/firefox/default/chrome/userContent.css".text = ''@import "${pkgs.custom.firefox-gnome-theme}/userContent.css";''; - - # Workaround for NixOS/nixpkgs/47340 - ".mozilla/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.chrome-gnome-shell}/lib/mozilla/native-messaging-hosts/org.gnome.chrome_gnome_shell.json"; - - # Discord DNOME Theme - ".config/BetterDiscord/data/stable/custom.css" = - mkIf (exists "discord") {text = ''@import url("https://raw.githack.com/GeopJr/DNOME/dist/DNOME.css");'';}; - }; - - # Code Editor - programs.vscode = mkIf (exists "vscode") { - extensions = [pkgs.vscode-extensions.piousdeer.adwaita-theme]; - userSettings = { - "workbench.colorTheme" = "Adwaita Dark"; - "workbench.productIconTheme" = "adwaita"; - "window.titleBarStyle" = "custom"; - "terminal.external.linuxExec" = "blackbox"; - }; - }; - }; - - # Flatpak Apps - services.flatpak = mkIf config.services.flatpak.enable { - remotes = [ - { - name = "gnome-nightly"; - location = "https://nightly.gnome.org/gnome-nightly.flatpakrepo"; - } - ]; - - packages = [ - { - appId = "com.github.tchx84.Flatseal"; - origin = "flathub"; - } - ]; - }; - - ## Color Scheme - stylix = { - base16Scheme = colors.adwaita; - targets.gnome.enable = false; - }; - - ## Package List - environment. systemPackages = with pkgs; (with gnome; - [ - # GNOME Apps - gnome-boxes - gnome-dictionary - gnome-sound-recorder - gnome-text-editor - gnome-tweaks - - # GNOME Games - gnome-chess - gnome-mines - quadrapassel - ] - ++ [ - # GNOME Circle - apostrophe - blackbox-terminal - curtail - deja-dup - dialect - drawing - fractal - fragments - gradience - gnome-podcasts - gnome-secrets - gthumb - lollypop - pitivi - video-trimmer - wike - - # Utilities - celluloid - gnuchess - ]); - - # Persisted Files - user.persist.directories = [ - # Apps - ".config/evolution" - ".config/gnome-boxes" - ".config/gnome-builder" - ".config/pitivi" - ".local/share/epiphany" - ".local/share/evolution" - ".local/share/geary" - ".local/share/gnome-boxes" - ".local/share/gnome-builder" - ".local/share/lollypop" - ".local/share/nautilus" - ".local/share/sounds" - ".local/share/telepathy" - ".local/share/webkitgtk" - ".cache/evolution" - ".cache/fractal" - ".cache/gnome-builder" - - # Extensions - ".config/forge" - ".local/share/clipboard" - ]; - }) - - ## Minimal GNOME Desktop Configuration - (mkIf (desktop == "gnome-minimal") { - services.xserver = { - displayManager.gdm.autoSuspend = false; # Disable Suspension - desktopManager.gnome = { - extraGSettingsOverrides = gnome.iso; - extraGSettingsOverridePackages = [pkgs.gnome.gnome-settings-daemon]; - favoriteAppsOverride = '' - [org.gnome.shell] - favorite-apps=[ 'org.gnome.Epiphany.desktop', 'nixos-manual.desktop', 'org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop', 'gparted.desktop' ] - ''; - }; - }; - - # Essential Utilities - environment.systemPackages = with (pkgs.gnome // pkgs); [ - epiphany - gnome-console - gnome-text-editor - gnome-system-monitor - gparted - nautilus - ]; - - # Excluded Packages - xdg.portal.enable = mkForce false; - qt.enable = mkForce false; - - services.gnome = { - core-utilities.enable = mkForce false; - gnome-browser-connector.enable = mkForce false; - gnome-remote-desktop.enable = mkForce false; - gnome-user-share.enable = mkForce false; - }; - - environment.gnome.excludePackages = with pkgs.gnome; [ - gnome-backgrounds - gnome-shell-extensions - gnome-themes-extra - pkgs.gnome-tour - pkgs.gnome-user-docs - pkgs.hicolor-icon-theme - ]; - }) - ]); -} diff --git a/modules/gui/desktop/gnome/default.nix b/modules/gui/desktop/gnome/default.nix @@ -0,0 +1,257 @@ +{ + config, + lib, + util, + pkgs, + files, + ... +} @ args: +with files; let + inherit (config.gui) desktop; + inherit (lib) gvariant hasPrefix mkIf mkForce mkMerge; + exists = app: builtins.elem app config.apps.list; +in { + ## GNOME Configuration ## + config = mkIf (hasPrefix "gnome" desktop) (mkMerge [ + ## Environment Setup + { + # Session + services = { + xserver = { + desktopManager.gnome.enable = true; + displayManager = { + gdm.enable = true; + defaultSession = "gnome"; + }; + }; + + # Initial Setup + gnome.gnome-initial-setup.enable = mkForce false; + }; + + # Excluded Packages + environment.gnome.excludePackages = with pkgs; [ + gnome.totem + gnome.gnome-music + ]; + + # Dconf Settings + programs.dconf.profiles.gdm.databases = [ + { + settings = { + "org/gnome/desktop/peripherals/touchpad" = { + tap-to-click = true; + }; + "org/gnome/desktop/interface" = { + cursor-theme = config.stylix.cursor.name; + cursor-size = gvariant.mkInt32 config.stylix.cursor.size; + }; + }; + } + ]; + } + + ## Install Media Configuration + (mkIf (desktop == "gnome-iso") (import ./iso.nix args)) + + ## Desktop Configuration + (mkIf (desktop == "gnome") { + # Desktop Integration + gui = { + fonts.enable = true; + wayland.enable = true; + + gtk = { + enable = true; + theme = { + name = "adw-gtk3-dark"; + package = pkgs.adw-gtk3; + }; + }; + + qt = { + enable = true; + theme = { + name = "KvLibadwaitaDark"; + package = pkgs.custom.kvlibadwaita; + }; + }; + }; + + services = { + udev.packages = [pkgs.gnome.gnome-settings-daemon]; + telepathy.enable = true; + gnome = { + core-developer-tools.enable = true; + gnome-remote-desktop.enable = true; + sushi.enable = true; + }; + }; + + apps.list = ["firefox"]; + programs = { + gnupg.agent.pinentryFlavor = mkForce "gnome3"; + firefox = { + policies.ExtensionSettings = { + name = "gnome-shell-integration"; + value = { + installation_mode = "normal_installed"; + install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/chrome-gnome-shell@gnome.org/latest.xpi"; + }; + }; + }; + }; + }) + + ## User Configuration + (mkIf (desktop == "gnome") { + user.homeConfig = { + # Desktop Settings + imports = [gnome.settings]; + stylix.targets.gnome.enable = true; + + # Default Applications + xdg.mimeApps.defaultApplications = util.build.mime xdg.mime { + audio = ["org.gnome.Lollypop.desktop"]; + calendar = ["org.gnome.Calendar.desktop"]; + directory = ["org.gnome.Nautilus.desktop"]; + image = ["org.gnome.Loupe.desktop"]; + magnet = ["de.haeckerfelix.Fragments.desktop"]; + mail = ["org.gnome.Geary.desktop"]; + markdown = ["org.gnome.gitlab.somas.Apostrophe.desktop"]; + pdf = ["org.gnome.Evince.desktop"]; + text = ["org.gnome.TextEditor.desktop"]; + video = ["io.github.celluloid_player.Celluloid.desktop"]; + }; + + home.file = { + # Action Menu + ".config/guillotine.json".source = gnome.menu; + + # Shell Theme + ".local/share/themes/custom/gnome-shell/gnome-shell.css".text = gnome.shell; + + # Window Tiling Stylesheet + ".config/forge/stylesheet/forge/stylesheet.css".text = gnome.tiling; + }; + }; + + ## Color Scheme + stylix = { + base16Scheme = colors.adwaita; + targets.gnome.enable = false; + }; + + ## Package List + environment. systemPackages = with pkgs; (with gnome; + [ + # GNOME Apps + gnome-boxes + gnome-dictionary + gnome-sound-recorder + gnome-text-editor + gnome-tweaks + + # GNOME Games + gnome-chess + gnome-mines + quadrapassel + ] + ++ [ + # GNOME Circle + apostrophe + blackbox-terminal + curtail + deja-dup + dialect + drawing + fractal + fragments + gradience + gnome-podcasts + gnome-secrets + gthumb + lollypop + pitivi + video-trimmer + wike + + # Utilities + celluloid + gnuchess + ]); + + # Persisted Files + user.persist.directories = [ + # Apps + ".config/evolution" + ".config/gnome-boxes" + ".config/gnome-builder" + ".config/pitivi" + ".local/share/epiphany" + ".local/share/evolution" + ".local/share/geary" + ".local/share/gnome-boxes" + ".local/share/gnome-builder" + ".local/share/lollypop" + ".local/share/nautilus" + ".local/share/sounds" + ".local/share/telepathy" + ".local/share/webkitgtk" + ".cache/evolution" + ".cache/fractal" + ".cache/gnome-builder" + + # Extensions + ".config/forge" + ".local/share/clipboard" + ]; + }) + + ## 3rd Party Apps Configuration + (mkIf (desktop == "gnome") { + user.homeConfig = { + home.file = { + # Firefox GNOME Theme + ".mozilla/firefox/default/chrome/userChrome.css".text = ''@import "${pkgs.custom.firefox-gnome-theme}/userChrome.css";''; + ".mozilla/firefox/default/chrome/userContent.css".text = ''@import "${pkgs.custom.firefox-gnome-theme}/userContent.css";''; + + # Workaround for NixOS/nixpkgs/47340 + ".mozilla/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source = "${pkgs.chrome-gnome-shell}/lib/mozilla/native-messaging-hosts/org.gnome.chrome_gnome_shell.json"; + + # Discord DNOME Theme + ".config/BetterDiscord/data/stable/custom.css" = + mkIf (exists "discord") {text = ''@import url("https://raw.githack.com/GeopJr/DNOME/dist/DNOME.css");'';}; + }; + + # Code Editor + programs.vscode = mkIf (exists "vscode") { + extensions = [pkgs.vscode-extensions.piousdeer.adwaita-theme]; + userSettings = { + "workbench.colorTheme" = "Adwaita Dark"; + "workbench.productIconTheme" = "adwaita"; + "window.titleBarStyle" = "custom"; + "terminal.external.linuxExec" = "blackbox"; + }; + }; + }; + + # Flatpak Apps + services.flatpak = mkIf config.services.flatpak.enable { + remotes = [ + { + name = "gnome-nightly"; + location = "https://nightly.gnome.org/gnome-nightly.flatpakrepo"; + } + ]; + + packages = [ + { + appId = "com.github.tchx84.Flatseal"; + origin = "flathub"; + } + ]; + }; + }) + ]); +} diff --git a/modules/gui/desktop/gnome/iso.nix b/modules/gui/desktop/gnome/iso.nix @@ -0,0 +1,50 @@ +{ + lib, + pkgs, + files, + ... +}: let + inherit (lib) mkForce; +in { + services.xserver = { + displayManager.gdm.autoSuspend = false; # Disable Suspension + desktopManager.gnome = { + extraGSettingsOverrides = files.gnome.iso; + extraGSettingsOverridePackages = [pkgs.gnome.gnome-settings-daemon]; + favoriteAppsOverride = '' + [org.gnome.shell] + favorite-apps=[ 'org.gnome.Epiphany.desktop', 'nixos-manual.desktop', 'org.gnome.Console.desktop', 'org.gnome.Nautilus.desktop', 'gparted.desktop' ] + ''; + }; + }; + + # Essential Utilities + environment.systemPackages = with (pkgs.gnome // pkgs); [ + epiphany + gnome-console + gnome-text-editor + gnome-system-monitor + gparted + nautilus + ]; + + # Excluded Packages + xdg.portal.enable = mkForce false; + qt.enable = mkForce false; + + services.gnome = { + core-utilities.enable = mkForce false; + gnome-browser-connector.enable = mkForce false; + gnome-remote-desktop.enable = mkForce false; + gnome-user-share.enable = mkForce false; + }; + + environment.gnome.excludePackages = with pkgs.gnome; [ + gnome-backgrounds + gnome-shell-extensions + gnome-themes-extra + pkgs.gnome-tour + pkgs.gnome-user-docs + pkgs.hicolor-icon-theme + ]; +} diff --git a/modules/gui/desktop/hyprland/apps/bar.nix b/modules/gui/desktop/hyprland/apps/bar.nix @@ -195,7 +195,7 @@ in rec { scroll-step = 1; reverse-scrolling = 1; format = "{icon}"; - tooltip-format = "Volume: {volume}\nDevice: {node_name}"; + tooltip-format = "Volume: {volume}%\nDevice: {node_name}"; format-muted = " Mute"; format-icons = ["" "" "󰕾" ""]; on-click = "pavucontrol"; diff --git a/modules/gui/desktop/hyprland/apps/default.nix b/modules/gui/desktop/hyprland/apps/default.nix @@ -31,6 +31,7 @@ in { environment.systemPackages = with pkgs; [ # Apps + celluloid font-manager geany gnome.file-roller @@ -84,7 +85,7 @@ in { markdown = ["geany.desktop"]; pdf = ["atril.desktop"]; text = ["geany.desktop"]; - video = ["mpv.desktop"]; + video = ["io.github.celluloid_player.Celluloid.desktop"]; }; # Shortcuts diff --git a/modules/gui/desktop/hyprland/default.nix b/modules/gui/desktop/hyprland/default.nix @@ -10,7 +10,8 @@ theme = import ./theme.nix pkgs; in { ## Hyprland Configuration ## - config = mkIf (desktop == "hyprland" || desktop == "hyprland-minimal") (mkMerge [ + config = mkIf (desktop == "hyprland") (mkMerge [ + ## Environment Setup { # Session gui = { @@ -43,14 +44,24 @@ in { }; } - (mkIf (desktop == "hyprland") (import ./apps args)) - (mkIf (desktop == "hyprland") { + { # Boot Splash boot.plymouth = { theme = with theme; "${name}-${variant}"; themePackages = [(pkgs.catppuccin-plymouth.override {inherit (theme) variant;})]; }; + # Greeter + programs.regreet.settings.GTK = with config.stylix; { + application_prefer_dark_theme = true; + cursor_theme_name = cursor.name; + font_name = "${fonts.sansSerif.name} 16"; + icon_theme_name = theme.icons.name; + theme_name = theme.gtk.name; + }; + } + + { # Settings user.persist.directories = [".config/hypr"]; user.homeConfig.imports = [./settings]; @@ -85,15 +96,6 @@ in { }; location.provider = "geoclue2"; - # Greeter - programs.regreet.settings.GTK = with config.stylix; { - application_prefer_dark_theme = true; - cursor_theme_name = cursor.name; - font_name = "${fonts.sansSerif.name} 16"; - icon_theme_name = theme.icons.name; - theme_name = theme.gtk.name; - }; - # Backlight user.groups = ["input" "video"]; hardware.brillo.enable = true; @@ -103,6 +105,9 @@ in { greetd.enableGnomeKeyring = true; swaylock.text = "auth include login"; }; - }) + } + + ## Application Configuration + (import ./apps args) ]); } diff --git a/modules/gui/desktop/hyprland/settings/keybindings.nix b/modules/gui/desktop/hyprland/settings/keybindings.nix @@ -2,7 +2,7 @@ ## Keybindings wayland.windowManager.hyprland.settings = { "$mod" = "SUPER"; - env = ["SLURP_ARGS, -dc ${sys.lib.stylix.colors.base0A}"]; + env = ["SLURP_ARGS, -dc ${sys.lib.stylix.colors.base0A}"]; # Screengrab bind = [ ("$mod SHIFT, slash, exec, xdg-open " + ../README.md) diff --git a/modules/gui/desktop/iso.nix b/modules/gui/desktop/iso.nix @@ -0,0 +1,4 @@ +[ + "gnome" + "xfce" +] diff --git a/modules/gui/desktop/pantheon.nix b/modules/gui/desktop/pantheon.nix @@ -12,16 +12,14 @@ with files; let inherit (lib) mkIf mkMerge; in { ## Pantheon Desktop Configuration ## - config = mkIf (desktop == "pantheon" || desktop == "pantheon-minimal") (mkMerge [ + config = mkIf (desktop == "pantheon") (mkMerge [ + ## Environment Setup { # Session services.xserver.desktopManager.pantheon.enable = true; } - ## Full-Fledged Pantheon Desktop Configuration - (mkIf (desktop == "pantheon") { - warnings = ["Flatpak app support is enabled by default while using Pantheon Desktop"]; - + { # Desktop Integration gui = { fonts.enable = true; @@ -91,8 +89,10 @@ in { # Color Scheme stylix.base16Scheme = colors.elementary; + } - ## User Configuration + ## User Configuration + { user.homeConfig = { imports = [pantheon.dconf]; @@ -158,19 +158,22 @@ in { ''; }; }; + }; + } - ## 3rd Party Apps Configuration - # Code Editor - programs.vscode = mkIf (exists "vscode") { - extensions = [pkgs.code.vscode-marketplace.sixpounder.elementary-theme]; - userSettings = { - "workbench.colorTheme" = "Elementary Dark"; - "terminal.external.linuxExec" = "io.elementary.terminal"; - }; + ## 3rd Party Apps Configuration + { + # Code Editor + user.homeConfig.programs.vscode = mkIf (exists "vscode") { + extensions = [pkgs.code.vscode-marketplace.sixpounder.elementary-theme]; + userSettings = { + "workbench.colorTheme" = "Elementary Dark"; + "terminal.external.linuxExec" = "io.elementary.terminal"; }; }; # Flatpak Apps + warnings = ["Flatpak app support is enabled by default while using Pantheon Desktop"]; apps.list = ["flatpak"]; services.flatpak = { remotes = [ @@ -187,23 +190,6 @@ in { } ]; }; - }) - - ## Minimal Pantheon Desktop Configuration - (mkIf (desktop == "pantheon-minimal") { - # Disabled Services - services.fwupd.enable = mkForce false; - services.power-profiles-daemon.enable = mkForce false; - services.tumbler.enable = mkForce false; - services.geoclue2.enable = mkForce false; - - # Excluded Packages - environment.pantheon.excludePackages = with pkgs.pantheon; [ - elementary-camera - elementary-music - elementary-photos - elementary-videos - ]; - }) + } ]); } diff --git a/modules/gui/desktop/xfce/default.nix b/modules/gui/desktop/xfce/default.nix @@ -9,7 +9,7 @@ with files; let inherit (config.gui) desktop fancy wallpaper; exists = app: builtins.elem app config.apps.list; - inherit (lib) mkForce mkIf mkMerge; + inherit (lib) hasPrefix mkIf mkMerge; # GTK+ Theme theme = { @@ -17,8 +17,8 @@ with files; let package = pkgs.arc-theme; }; in { - ## XFCE Desktop Configuration ## - config = mkIf (desktop == "xfce" || desktop == "xfce-minimal") (mkMerge [ + ## XFCE Configuration ## + config = mkIf (hasPrefix "xfce" desktop) (mkMerge [ { # Session services.xserver = { @@ -47,7 +47,10 @@ in { }; } - ## Full-Fledged XFCE Desktop Configuration + ## Install Media Configuration + (mkIf (desktop == "xfce-iso") (import ./iso.nix args)) + + ## Desktop Configuration (mkIf (desktop == "xfce" && fancy) (import ./compositor.nix args)) (mkIf (desktop == "xfce") { # Desktop Components @@ -208,13 +211,16 @@ in { ) ]; }; - } - ## 3rd Party Apps Configuration - // { - # Discord Arc Theme - ".config/BetterDiscord/data/stable/custom.css" = - mkIf (exists "discord") {text = ''@import url(https://rawcdn.githack.com/orblazer/discord-nordic/f3f6833c70d0b27b1cde986233b7009d61917812/nordic.theme.css);'';}; }; + }; + }) + + ## 3rd Party Apps Configuration + (mkIf (desktop == "xfce") { + user.homeConfig = { + # Discord Arc Theme + home.file.".config/BetterDiscord/data/stable/custom.css" = + mkIf (exists "discord") {text = ''@import url(https://rawcdn.githack.com/orblazer/discord-nordic/f3f6833c70d0b27b1cde986233b7009d61917812/nordic.theme.css);'';}; # Code Editor programs.vscode = mkIf (exists "vscode") { @@ -226,24 +232,5 @@ in { }; }; }) - - ## Minimal XFCE Desktop Configuration - (mkIf (desktop == "xfce-minimal") { - environment = { - # Utilities - systemPackages = [pkgs.epiphany]; - - # Excluded Packages - xfce.excludePackages = with pkgs; [ - tango-icon-theme - xfce4-icon-theme - xfwm4-themes - ]; - }; - - # Disabled Services - services.tumbler.enable = mkForce false; - services.accounts-daemon.enable = mkForce false; - }) ]); } diff --git a/modules/gui/desktop/xfce/iso.nix b/modules/gui/desktop/xfce/iso.nix @@ -0,0 +1,23 @@ +{ + lib, + pkgs, + ... +}: let + inherit (lib) mkForce; +in { + environment = { + # Utilities + systemPackages = with pkgs; [epiphany gparted]; + + # Excluded Packages + xfce.excludePackages = with pkgs; [ + tango-icon-theme + xfce4-icon-theme + xfwm4-themes + ]; + }; + + # Disabled Services + services.tumbler.enable = mkForce false; + services.accounts-daemon.enable = mkForce false; +}