diff --git a/provision/hosts/bulwark/configuration.nix b/provision/hosts/bulwark/configuration.nix index 5707a185..2cab8aae 100644 --- a/provision/hosts/bulwark/configuration.nix +++ b/provision/hosts/bulwark/configuration.nix @@ -18,7 +18,7 @@ # Modules modules = { desktop = { - browser.enable = true; + enable = true; gnome.enable = true; }; devel = { diff --git a/provision/hosts/kestrel/configuration.nix b/provision/hosts/kestrel/configuration.nix index c0dbc4f4..69736673 100644 --- a/provision/hosts/kestrel/configuration.nix +++ b/provision/hosts/kestrel/configuration.nix @@ -34,7 +34,7 @@ # Modules modules = { desktop = { - browser.enable = true; + enable = true; gnome.enable = true; }; devel = { diff --git a/provision/hosts/osprey/configuration.nix b/provision/hosts/osprey/configuration.nix index 8309fb8f..e1f0d06a 100644 --- a/provision/hosts/osprey/configuration.nix +++ b/provision/hosts/osprey/configuration.nix @@ -31,7 +31,7 @@ # Modules modules = { desktop = { - browser.enable = true; + enable = true; gnome.enable = true; }; devel = { diff --git a/provision/hosts/shivan/configuration.nix b/provision/hosts/shivan/configuration.nix index f58323e3..2b106610 100644 --- a/provision/hosts/shivan/configuration.nix +++ b/provision/hosts/shivan/configuration.nix @@ -21,7 +21,7 @@ # Modules modules = { desktop = { - browser.enable = true; + enable = true; gnome.enable = true; }; devel = { diff --git a/provision/modules/desktop/browser/default.nix b/provision/modules/desktop/browser/default.nix deleted file mode 100644 index 65c680d7..00000000 --- a/provision/modules/desktop/browser/default.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ ... }: -{ - imports = [ ./chrome.nix ./firefox.nix ]; -} diff --git a/provision/modules/desktop/default.nix b/provision/modules/desktop/default.nix index ec77af88..929e68a6 100644 --- a/provision/modules/desktop/default.nix +++ b/provision/modules/desktop/default.nix @@ -1,39 +1,47 @@ { config, lib, pkgs, user, inputs, ... }: -{ - imports = [ ./browser ./keyd.nix ./gnome.nix ]; - environment.systemPackages = with pkgs; [ - bc # Arbitrary-precision arithmetic language. - fzf # Command-line fuzzy finder for Unix-like operating systems. - gamemode # Optimizes system performance for gaming by adjusting system settings. - vesktop # Voice, video, and text communication platform for communities and friends. - inkscape # Vector graphics editor for creating illustrations, icons, logos, diagrams, and more. - libreoffice-fresh # Office suite compatible with Microsoft Office. - xournal # Note-taking and sketching application. - mpv # Media player for playing audio and video files. - p7zip # Command-line file archiver with high compression ratio. - gimp # GNU Image Manipulation Program for editing and composing raster images. +let cfg = config.modules.desktop; +in { + imports = [ + ./keyd.nix + ./gnome.nix ]; - # xdg-desktop-portal settings - services.dbus.enable = true; - xdg.mime = { - enable = true; - defaultApplications = { - "inode/directory" = [ "pcmanfm.desktop" ]; - "text/html" = [ "google-chrome.desktop" ]; - "x-scheme-handler/http" = [ "google-chrome.desktop" ]; - "x-scheme-handler/https" = [ "google-chrome.desktop" ]; - "x-scheme-handler/ftp" = [ "google-chrome.desktop" ]; - "x-scheme-handler/chrome" = [ "google-chrome.desktop" ]; - "x-scheme-handler/about" = [ "google-chrome.desktop" ]; - "x-scheme-handler/unknown" = [ "google-chrome.desktop" ]; - "application/x-extension-htm" = [ "google-chrome.desktop" ]; - "application/x-extension-html" = [ "google-chrome.desktop" ]; - "application/x-extension-shtml" = [ "google-chrome.desktop" ]; - "application/xhtml+xml" = [ "google-chrome.desktop" ]; - "application/x-extension-xhtml" = [ "google-chrome.desktop" ]; - "application/x-extension-xht" = [ "google-chrome.desktop" ]; - "application/pdf" = [ "google-chrome.desktop" ]; }; + options.modules.desktop.enable = lib.mkEnableOption "desktop"; + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + bc # Arbitrary-precision arithmetic language. + fzf # Command-line fuzzy finder for Unix-like operating systems. + gamemode # Optimizes system performance for gaming by adjusting system settings. + vesktop # Voice, video, and text communication platform for communities and friends. + inkscape # Vector graphics editor for creating illustrations, icons, logos, diagrams, and more. + libreoffice-fresh # Office suite compatible with Microsoft Office. + xournal # Note-taking and sketching application. + mpv # Media player for playing audio and video files. + p7zip # Command-line file archiver with high compression ratio. + gimp # GNU Image Manipulation Program for editing and composing raster images. + ]; + + # xdg-desktop-portal settings + services.dbus.enable = true; + xdg.mime = { + enable = true; + defaultApplications = { + "inode/directory" = [ "pcmanfm.desktop" ]; + "text/html" = [ "google-chrome.desktop" ]; + "x-scheme-handler/http" = [ "google-chrome.desktop" ]; + "x-scheme-handler/https" = [ "google-chrome.desktop" ]; + "x-scheme-handler/ftp" = [ "google-chrome.desktop" ]; + "x-scheme-handler/chrome" = [ "google-chrome.desktop" ]; + "x-scheme-handler/about" = [ "google-chrome.desktop" ]; + "x-scheme-handler/unknown" = [ "google-chrome.desktop" ]; + "application/x-extension-htm" = [ "google-chrome.desktop" ]; + "application/x-extension-html" = [ "google-chrome.desktop" ]; + "application/x-extension-shtml" = [ "google-chrome.desktop" ]; + "application/xhtml+xml" = [ "google-chrome.desktop" ]; + "application/x-extension-xhtml" = [ "google-chrome.desktop" ]; + "application/x-extension-xht" = [ "google-chrome.desktop" ]; + "application/pdf" = [ "google-chrome.desktop" ]; }; + }; }; } diff --git a/provision/modules/desktop/browser/bookmarks/chrome.nix b/provision/modules/programs/chrome/bookmarks.nix similarity index 100% rename from provision/modules/desktop/browser/bookmarks/chrome.nix rename to provision/modules/programs/chrome/bookmarks.nix diff --git a/provision/modules/desktop/browser/chrome.nix b/provision/modules/programs/chrome/default.nix similarity index 85% rename from provision/modules/desktop/browser/chrome.nix rename to provision/modules/programs/chrome/default.nix index aa49734e..ef8a0296 100644 --- a/provision/modules/desktop/browser/chrome.nix +++ b/provision/modules/programs/chrome/default.nix @@ -1,9 +1,16 @@ { config, lib, pkgs, user, ... }: -let cfg = config.modules.desktop.browser; +let cfg1 = config.modules.desktop; + cfg2 = config.modules.programs.chrome; in { - # Enable option declared in firefox.nix - config = lib.mkIf cfg.enable { + options.modules.programs.chrome = with lib; { + enable = lib.mkOption { + type = types.bool; + default = true; + }; + }; + + config = lib.mkIf (cfg1.enable && cfg2.enable) { environment.systemPackages = with pkgs; [ google-chrome # Web browser developed by Google. ]; @@ -46,7 +53,7 @@ in { # Setup bookmarks "BookmarkBarEnabled" = true; "ShowAppsShortcutInBookmarkBar" = false; - "ManagedBookmarks" = import ./bookmarks/chrome.nix; + "ManagedBookmarks" = import ./bookmarks.nix; }; }; diff --git a/provision/modules/programs/default.nix b/provision/modules/programs/default.nix index fea9275e..979d3fc0 100644 --- a/provision/modules/programs/default.nix +++ b/provision/modules/programs/default.nix @@ -1,6 +1,8 @@ { ... }: { imports = [ + ./chrome + ./firefox ./git.nix ./chezmoi.nix ./kitty.nix diff --git a/provision/modules/desktop/browser/bookmarks/firefox.nix b/provision/modules/programs/firefox/bookmarks.nix similarity index 100% rename from provision/modules/desktop/browser/bookmarks/firefox.nix rename to provision/modules/programs/firefox/bookmarks.nix diff --git a/provision/modules/desktop/browser/firefox.nix b/provision/modules/programs/firefox/default.nix similarity index 69% rename from provision/modules/desktop/browser/firefox.nix rename to provision/modules/programs/firefox/default.nix index 7c04414e..f175dff0 100644 --- a/provision/modules/desktop/browser/firefox.nix +++ b/provision/modules/programs/firefox/default.nix @@ -1,10 +1,17 @@ { config, lib, pkgs, user, ... }: -let cfg = config.modules.desktop.browser; +let cfg1 = config.modules.desktop; + cfg2 = config.modules.programs.firefox; in { - options.modules.desktop.browser.enable = lib.mkEnableOption "browser"; - config = lib.mkIf cfg.enable { - # Install applications for CAC + options.modules.programs.firefox = with lib; { + enable = lib.mkOption { + type = types.bool; + default = true; + }; + }; + + config = lib.mkIf (cfg1.enable && cfg2.enable) { + # Applications for CAC usage environment.systemPackages = with pkgs; [ opensc pcsc-tools @@ -15,7 +22,7 @@ in { programs.firefox = { enable = true; profiles.default = { - bookmarks = import ./bookmarks/firefox.nix; + bookmarks = import ./bookmarks.nix; isDefault = true; name = "default"; settings = {