From 18120ebee5392bb26e2b81f8cc3d1092123aa594 Mon Sep 17 00:00:00 2001 From: Tim Keller Date: Fri, 22 Aug 2025 21:42:10 -0500 Subject: separate desktop and development collections into separate files / directories --- modules/nixos/archetypes/collections/desktop.nix | 80 ---------------------- .../nixos/archetypes/collections/desktop/cad.nix | 15 ++++ .../archetypes/collections/desktop/chromium.nix | 18 +++++ .../archetypes/collections/desktop/crypto.nix | 13 ++++ .../archetypes/collections/desktop/default.nix | 13 ++++ .../nixos/archetypes/collections/desktop/extra.nix | 16 +++++ .../archetypes/collections/desktop/firefox.nix | 12 ++++ .../archetypes/collections/desktop/graphics.nix | 16 +++++ .../archetypes/collections/desktop/office.nix | 18 +++++ .../archetypes/collections/desktop/utilities.nix | 29 ++++++++ .../archetypes/collections/desktop/xserver.nix | 34 +++++++++ .../nixos/archetypes/collections/development.nix | 41 ----------- .../archetypes/collections/development/default.nix | 45 ++++++++++++ .../archetypes/collections/development/docker.nix | 23 +++++++ modules/nixos/archetypes/collections/docker.nix | 23 ------- modules/nixos/archetypes/collections/xserver.nix | 34 --------- modules/nixos/default.nix | 6 +- 17 files changed, 254 insertions(+), 182 deletions(-) delete mode 100644 modules/nixos/archetypes/collections/desktop.nix create mode 100644 modules/nixos/archetypes/collections/desktop/cad.nix create mode 100644 modules/nixos/archetypes/collections/desktop/chromium.nix create mode 100644 modules/nixos/archetypes/collections/desktop/crypto.nix create mode 100644 modules/nixos/archetypes/collections/desktop/default.nix create mode 100644 modules/nixos/archetypes/collections/desktop/extra.nix create mode 100644 modules/nixos/archetypes/collections/desktop/firefox.nix create mode 100644 modules/nixos/archetypes/collections/desktop/graphics.nix create mode 100644 modules/nixos/archetypes/collections/desktop/office.nix create mode 100644 modules/nixos/archetypes/collections/desktop/utilities.nix create mode 100644 modules/nixos/archetypes/collections/desktop/xserver.nix delete mode 100644 modules/nixos/archetypes/collections/development.nix create mode 100644 modules/nixos/archetypes/collections/development/default.nix create mode 100644 modules/nixos/archetypes/collections/development/docker.nix delete mode 100644 modules/nixos/archetypes/collections/docker.nix delete mode 100644 modules/nixos/archetypes/collections/xserver.nix (limited to 'modules') diff --git a/modules/nixos/archetypes/collections/desktop.nix b/modules/nixos/archetypes/collections/desktop.nix deleted file mode 100644 index fff8682..0000000 --- a/modules/nixos/archetypes/collections/desktop.nix +++ /dev/null @@ -1,80 +0,0 @@ -{ pkgs, lib, config, ... }: let - cfg = config._archetypes.collections.desktop; -in { - options._archetypes.collections.desktop = { - utilities.enable = lib.mkEnableOption "install basic desktop utilities"; - extraUtilities.enable = lib.mkEnableOption "install extra desktop utilities"; - chromium = { - enable = lib.mkEnableOption "install chromium browser"; - package = lib.mkOption { - type = lib.types.package; - default = pkgs.ungoogled-chromium; - description = "chromium package to install"; - }; - }; - cad.enable = lib.mkEnableOption "install cad and 3d printing software"; - crypto.enable = lib.mkEnableOption "install crypto wallets"; - firefox.enable = lib.mkEnableOption "install firefox"; - graphics.enable = lib.mkEnableOption "install graphic design software"; - office.enable = lib.mkEnableOption "install office software"; - }; - - config = { - environment.systemPackages = with pkgs; [ - ] ++ lib.optionals cfg.utilities.enable [ - # Utilities - arandr - dmenu - libnotify - lowbat - mpv - pavolctld - pavucontrol - pcmanfm - redshift - scrot - st - sxiv - wpa_supplicant_gui - zathura - ] ++ lib.optionals cfg.chromium.enable [ - # Chrome - cfg.chromium.package - ] ++ lib.optionals cfg.cad.enable [ - # CAD - blender - freecad - prusa-slicer - ] ++ lib.optionals cfg.crypto.enable [ - # Crypto Wallets - sparrow - ] ++ lib.optionals cfg.graphics.enable [ - # Graphics - blender - geeqie - gimp3 - inkscape - ] ++ lib.optionals cfg.office.enable [ - # Office - hunspell # Spell checking in libreoffice - hunspellDicts.en_US - kdePackages.okular - libreoffice - pdfchain - thunderbird - ] ++ lib.optionals cfg.extraUtilities.enable [ - # Extra Utilities - jellyfin-mpv-shim - qbittorrent - qdirstat - remmina - ]; - - # Utilities - programs.localsend.enable = cfg.utilities.enable; # Installs & opens firewall - services.gvfs.enable = cfg.utilities.enable; # GVfs allows for mounting drives in a graphical file manager - - # Firefox - programs.firefox.enable = cfg.firefox.enable; - }; -} diff --git a/modules/nixos/archetypes/collections/desktop/cad.nix b/modules/nixos/archetypes/collections/desktop/cad.nix new file mode 100644 index 0000000..33edcd5 --- /dev/null +++ b/modules/nixos/archetypes/collections/desktop/cad.nix @@ -0,0 +1,15 @@ +{ pkgs, lib, config, ... }: let + cfg = config._archetypes.collections.desktop.cad; +in { + options._archetypes.collections.desktop.cad = { + enable = lib.mkEnableOption "install cad and 3d printing software"; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + blender + freecad + prusa-slicer + ]; + }; +} diff --git a/modules/nixos/archetypes/collections/desktop/chromium.nix b/modules/nixos/archetypes/collections/desktop/chromium.nix new file mode 100644 index 0000000..b4638f0 --- /dev/null +++ b/modules/nixos/archetypes/collections/desktop/chromium.nix @@ -0,0 +1,18 @@ +{ pkgs, lib, config, ... }: let + cfg = config._archetypes.collections.desktop.chromium; +in { + options._archetypes.collections.desktop.chromium = { + enable = lib.mkEnableOption "install chromium browser"; + package = lib.mkOption { + type = lib.types.package; + default = pkgs.ungoogled-chromium; + description = "chromium package to install"; + }; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ + cfg.package + ]; + }; +} diff --git a/modules/nixos/archetypes/collections/desktop/crypto.nix b/modules/nixos/archetypes/collections/desktop/crypto.nix new file mode 100644 index 0000000..f90919e --- /dev/null +++ b/modules/nixos/archetypes/collections/desktop/crypto.nix @@ -0,0 +1,13 @@ +{ pkgs, lib, config, ... }: let + cfg = config._archetypes.collections.desktop.crypto; +in { + options._archetypes.collections.desktop.crypto = { + enable = lib.mkEnableOption "install crypto wallets"; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + sparrow + ]; + }; +} diff --git a/modules/nixos/archetypes/collections/desktop/default.nix b/modules/nixos/archetypes/collections/desktop/default.nix new file mode 100644 index 0000000..bbca8df --- /dev/null +++ b/modules/nixos/archetypes/collections/desktop/default.nix @@ -0,0 +1,13 @@ +{ + imports = [ + ./cad.nix + ./chromium.nix + ./crypto.nix + ./extra.nix + ./firefox.nix + ./graphics.nix + ./office.nix + ./utilities.nix + ./xserver.nix + ]; +} diff --git a/modules/nixos/archetypes/collections/desktop/extra.nix b/modules/nixos/archetypes/collections/desktop/extra.nix new file mode 100644 index 0000000..699b20f --- /dev/null +++ b/modules/nixos/archetypes/collections/desktop/extra.nix @@ -0,0 +1,16 @@ +{ pkgs, lib, config, ... }: let + cfg = config._archetypes.collections.desktop.extraUtilities; +in { + options._archetypes.collections.desktop.extraUtilities = { + enable = lib.mkEnableOption "install extra desktop utilities"; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + jellyfin-mpv-shim + qbittorrent + qdirstat + remmina + ]; + }; +} diff --git a/modules/nixos/archetypes/collections/desktop/firefox.nix b/modules/nixos/archetypes/collections/desktop/firefox.nix new file mode 100644 index 0000000..02656f6 --- /dev/null +++ b/modules/nixos/archetypes/collections/desktop/firefox.nix @@ -0,0 +1,12 @@ +{ pkgs, lib, config, ... }: let + cfg = config._archetypes.collections.desktop.firefox; +in { + options._archetypes.collections.desktop.firefox = { + enable = lib.mkEnableOption "install firefox"; + }; + + config = lib.mkIf cfg.enable { + programs.firefox.enable = true; + }; +} + diff --git a/modules/nixos/archetypes/collections/desktop/graphics.nix b/modules/nixos/archetypes/collections/desktop/graphics.nix new file mode 100644 index 0000000..f4242d1 --- /dev/null +++ b/modules/nixos/archetypes/collections/desktop/graphics.nix @@ -0,0 +1,16 @@ +{ pkgs, lib, config, ... }: let + cfg = config._archetypes.collections.desktop.graphics; +in { + options._archetypes.collections.desktop.graphics = { + enable = lib.mkEnableOption "install graphic design software"; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + blender + geeqie + gimp3 + inkscape + ]; + }; +} diff --git a/modules/nixos/archetypes/collections/desktop/office.nix b/modules/nixos/archetypes/collections/desktop/office.nix new file mode 100644 index 0000000..23e6862 --- /dev/null +++ b/modules/nixos/archetypes/collections/desktop/office.nix @@ -0,0 +1,18 @@ +{ pkgs, lib, config, ... }: let + cfg = config._archetypes.collections.desktop.office; +in { + options._archetypes.collections.desktop.office = { + enable = lib.mkEnableOption "install office software"; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + hunspell # Spell checking in libreoffice + hunspellDicts.en_US + kdePackages.okular + libreoffice + pdfchain + thunderbird + ]; + }; +} diff --git a/modules/nixos/archetypes/collections/desktop/utilities.nix b/modules/nixos/archetypes/collections/desktop/utilities.nix new file mode 100644 index 0000000..43d4973 --- /dev/null +++ b/modules/nixos/archetypes/collections/desktop/utilities.nix @@ -0,0 +1,29 @@ +{ pkgs, lib, config, ... }: let + cfg = config._archetypes.collections.desktop.utilities; +in { + options._archetypes.collections.desktop.utilities = { + enable = lib.mkEnableOption "install basic desktop utilities"; + }; + + config = lib.mkIf cfg.enable { + environment.systemPackages = with pkgs; [ + arandr + dmenu + libnotify + lowbat + mpv + pavolctld + pavucontrol + pcmanfm + redshift + scrot + st + sxiv + wpa_supplicant_gui + zathura + ]; + + programs.localsend.enable = true; # Installs & opens firewall + services.gvfs.enable = true; # GVfs allows for mounting drives in a graphical file manager + }; +} diff --git a/modules/nixos/archetypes/collections/desktop/xserver.nix b/modules/nixos/archetypes/collections/desktop/xserver.nix new file mode 100644 index 0000000..4cbdae8 --- /dev/null +++ b/modules/nixos/archetypes/collections/desktop/xserver.nix @@ -0,0 +1,34 @@ +{ pkgs, lib, config, ... }: let + cfg = config._archetypes.collections.desktop.xserver; +in { + options._archetypes.collections.desktop.xserver = { + enable = lib.mkEnableOption "installs xserver"; + utilities.enable = lib.mkEnableOption "installs basic xserver utilities"; + }; + + config = lib.mkIf cfg.enable { + services.xserver.enable = true; + services.xserver.displayManager.startx.enable = true; + services.libinput.enable = true; # Enable touchpad support + + # Install basic X utilities + environment.systemPackages = with pkgs; lib.optionals cfg.utilities.enable [ + unclutter + xcape + xclip + xdotool + xorg.setxkbmap + xorg.xinput + xorg.xkill + xorg.xrandr + xorg.xset + xwallpaper + ]; + + # Enable TearFree option by default + # Not all video drivers support this option + services.xserver.deviceSection = '' + Option "TearFree" "true" + ''; + }; +} diff --git a/modules/nixos/archetypes/collections/development.nix b/modules/nixos/archetypes/collections/development.nix deleted file mode 100644 index d0c979f..0000000 --- a/modules/nixos/archetypes/collections/development.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ pkgs, lib, config, ... }: let - cfg = config._archetypes.collections.development; - hugoFirewallPort = 1313; -in { - options._archetypes.collections.development = { - utilities.enable = lib.mkEnableOption "install basic dev utilities"; - android.enable = lib.mkEnableOption "install android dev tools"; - c.enable = lib.mkEnableOption "install c dev tools"; - lua.enable = lib.mkEnableOption "install lua dev tools"; - web = { - hugo = { - enable = lib.mkEnableOption "install hugo"; - openFirewall = lib.mkEnableOption "open the port ${hugoFirewallPort} for viewing content from hugo serve on other devices"; - }; - node.enable = lib.mkEnableOption "install node"; - }; - }; - - config = { - environment.systemPackages = with pkgs; [ - git - python3 - ] ++ lib.optionals cfg.android.enable [ - #adb-sync - android-tools - ] ++ lib.optionals cfg.c.enable [ - gcc - git - gnumake - pkg-config - ] ++ lib.optionals cfg.lua.enable [ - lua - ] ++ lib.optionals cfg.web.hugo.enable [ - hugo - ] ++ lib.optionals cfg.web.node.enable [ - nodejs - ]; - - networking.firewall.allowedTCPPorts = lib.mkIf cfg.web.hugo.openFirewall [ hugoFirewallPort ]; - }; -} diff --git a/modules/nixos/archetypes/collections/development/default.nix b/modules/nixos/archetypes/collections/development/default.nix new file mode 100644 index 0000000..87fe2d2 --- /dev/null +++ b/modules/nixos/archetypes/collections/development/default.nix @@ -0,0 +1,45 @@ +{ pkgs, lib, config, ... }: let + cfg = config._archetypes.collections.development; + hugoFirewallPort = 1313; +in { + imports = [ + ./docker.nix + ]; + + options._archetypes.collections.development = { + utilities.enable = lib.mkEnableOption "install basic dev utilities"; + android.enable = lib.mkEnableOption "install android dev tools"; + c.enable = lib.mkEnableOption "install c dev tools"; + lua.enable = lib.mkEnableOption "install lua dev tools"; + web = { + hugo = { + enable = lib.mkEnableOption "install hugo"; + openFirewall = lib.mkEnableOption "open the port ${hugoFirewallPort} for viewing content from hugo serve on other devices"; + }; + node.enable = lib.mkEnableOption "install node"; + }; + }; + + config = { + environment.systemPackages = with pkgs; [ + git + python3 + ] ++ lib.optionals cfg.android.enable [ + #adb-sync + android-tools + ] ++ lib.optionals cfg.c.enable [ + gcc + git + gnumake + pkg-config + ] ++ lib.optionals cfg.lua.enable [ + lua + ] ++ lib.optionals cfg.web.hugo.enable [ + hugo + ] ++ lib.optionals cfg.web.node.enable [ + nodejs + ]; + + networking.firewall.allowedTCPPorts = lib.mkIf cfg.web.hugo.openFirewall [ hugoFirewallPort ]; + }; +} diff --git a/modules/nixos/archetypes/collections/development/docker.nix b/modules/nixos/archetypes/collections/development/docker.nix new file mode 100644 index 0000000..629dff3 --- /dev/null +++ b/modules/nixos/archetypes/collections/development/docker.nix @@ -0,0 +1,23 @@ +{ pkgs, lib, config, ... }: let + cfg = config._archetypes.collections.development.docker; +in { + options._archetypes.collections.development.docker = { + enable = lib.mkEnableOption "enables docker"; + btrfsSupport = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Changes docker storageDriver to btrfs."; + }; + }; + + config = lib.mkIf cfg.enable { + virtualisation.docker = { + enable = true; + storageDriver = lib.mkIf cfg.btrfsSupport "btrfs"; + }; + + environment.systemPackages = with pkgs; [ + docker-compose + ]; + }; +} diff --git a/modules/nixos/archetypes/collections/docker.nix b/modules/nixos/archetypes/collections/docker.nix deleted file mode 100644 index 629dff3..0000000 --- a/modules/nixos/archetypes/collections/docker.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ pkgs, lib, config, ... }: let - cfg = config._archetypes.collections.development.docker; -in { - options._archetypes.collections.development.docker = { - enable = lib.mkEnableOption "enables docker"; - btrfsSupport = lib.mkOption { - type = lib.types.bool; - default = true; - description = "Changes docker storageDriver to btrfs."; - }; - }; - - config = lib.mkIf cfg.enable { - virtualisation.docker = { - enable = true; - storageDriver = lib.mkIf cfg.btrfsSupport "btrfs"; - }; - - environment.systemPackages = with pkgs; [ - docker-compose - ]; - }; -} diff --git a/modules/nixos/archetypes/collections/xserver.nix b/modules/nixos/archetypes/collections/xserver.nix deleted file mode 100644 index 4cbdae8..0000000 --- a/modules/nixos/archetypes/collections/xserver.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ pkgs, lib, config, ... }: let - cfg = config._archetypes.collections.desktop.xserver; -in { - options._archetypes.collections.desktop.xserver = { - enable = lib.mkEnableOption "installs xserver"; - utilities.enable = lib.mkEnableOption "installs basic xserver utilities"; - }; - - config = lib.mkIf cfg.enable { - services.xserver.enable = true; - services.xserver.displayManager.startx.enable = true; - services.libinput.enable = true; # Enable touchpad support - - # Install basic X utilities - environment.systemPackages = with pkgs; lib.optionals cfg.utilities.enable [ - unclutter - xcape - xclip - xdotool - xorg.setxkbmap - xorg.xinput - xorg.xkill - xorg.xrandr - xorg.xset - xwallpaper - ]; - - # Enable TearFree option by default - # Not all video drivers support this option - services.xserver.deviceSection = '' - Option "TearFree" "true" - ''; - }; -} diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index ed21fdc..59364f7 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -1,13 +1,11 @@ { imports = [ ./archetypes/collections/bluetooth.nix - ./archetypes/collections/desktop.nix - ./archetypes/collections/development.nix - ./archetypes/collections/docker.nix + ./archetypes/collections/desktop + ./archetypes/collections/development ./archetypes/collections/fonts.nix ./archetypes/collections/utilities.nix ./archetypes/collections/virtualization.nix - ./archetypes/collections/xserver.nix ./archetypes/profiles/desktop ./archetypes/profiles/headless -- cgit v1.2.3