From 8f10d3a6cf1cd8eaeb086621a6ab713a9b59add4 Mon Sep 17 00:00:00 2001 From: punkfairie Date: Sun, 25 May 2025 19:42:03 -0700 Subject: [PATCH] feat: profiles --- hosts/marleynet/default.nix | 9 +++- hosts/nyx/default.nix | 2 - layout.txt | 13 ++--- modules/nixos/default.nix | 2 + modules/nixos/profiles.nix | 49 +++++++++++++++++++ modules/nixos/programs/default.nix | 2 - modules/nixos/programs/lutris.nix | 18 ------- modules/nixos/programs/steam.nix | 24 --------- modules/nixos/shell/hyprlock.nix | 4 +- modules/nixos/shell/ly.nix | 4 +- modules/nixos/shell/niri.nix | 4 +- .../modules/nixos/bundles/desktop/default.nix | 42 ---------------- .../modules/nixos/bundles/server/default.nix | 31 ------------ 13 files changed, 71 insertions(+), 133 deletions(-) create mode 100644 modules/nixos/profiles.nix delete mode 100644 modules/nixos/programs/lutris.nix delete mode 100644 modules/nixos/programs/steam.nix delete mode 100644 snowflake/modules/nixos/bundles/desktop/default.nix delete mode 100644 snowflake/modules/nixos/bundles/server/default.nix diff --git a/hosts/marleynet/default.nix b/hosts/marleynet/default.nix index cc4b4a9..a7cde68 100644 --- a/hosts/marleynet/default.nix +++ b/hosts/marleynet/default.nix @@ -1,5 +1,10 @@ -{config, ...}: let +{ + config, + marleylib, + ... +}: let inherit (config.marleyos.my) name; + inherit (marleylib.module) enabled; in { imports = [./hardware-configuration.nix]; @@ -7,7 +12,7 @@ in { marleyos = { profiles.server = true; - # services.ddclient = enabled; + services.ddclient = enabled; }; users.users = { diff --git a/hosts/nyx/default.nix b/hosts/nyx/default.nix index 4efdf2a..c295402 100644 --- a/hosts/nyx/default.nix +++ b/hosts/nyx/default.nix @@ -21,8 +21,6 @@ in { hardware = { nvidia = enabled; }; - - mounts.babeshare = enabled; }; home-manager.users."${name}" = { diff --git a/layout.txt b/layout.txt index d233ccd..c65da0b 100644 --- a/layout.txt +++ b/layout.txt @@ -3,12 +3,13 @@ modules/${class}/default.nix # imported by easy-hosts.perClass.modules imports = [ ../base # common across all systems - ./base # common across all ${class} systems + ./base + ./hardware ./shell # WM/DE ./programs - # default.nix - turns on/off depending on profile - ./services - # default.nix - turns on/off depending on profile + ./services + + ./profiles.nix # enable/disable items ]; @@ -34,9 +35,9 @@ modules/home/default.nix # HOME MANAGER OPTIONS ONLY ./shell # WM/DE ./programs - # default.nix - turns on/off depending on profile # ${program}.nix - OS check here if needed ./services - # default.nix - turns on/off depending on profile # ${service}.nix - OS check here if needed + + ./profiles.nix # enable/disable items ]; diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 7b30537..4f52879 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -10,5 +10,7 @@ ./programs ./services + + ./profiles.nix ]; } diff --git a/modules/nixos/profiles.nix b/modules/nixos/profiles.nix new file mode 100644 index 0000000..ec83c62 --- /dev/null +++ b/modules/nixos/profiles.nix @@ -0,0 +1,49 @@ +{ + config, + marleylib, + lib, + ... +}: let + cfg = config.marleyos.profiles; + + inherit (marleylib.module) enabled; +in { + # + ### Universal ### + marleyos = + { + programs = { + fish = enabled; + nh = enabled; + }; + + services = { + docker = enabled; + openssh = enabled; # needed for agenix + }; + } + # + # + ### Graphical Desktop Profile ### + // (lib.optionalAttrs cfg.desktop { + mounts.babeshare = enabled; + + shell = { + ly = enabled; + niri = enabled; + }; + + services = { + mopidy = enabled; + protonmail-bridge = enabled; + }; + }) + # + # + ### Server Profile ### + // (lib.optionalAttrs cfg.server { + services = { + prometheus = enabled; + }; + }); +} diff --git a/modules/nixos/programs/default.nix b/modules/nixos/programs/default.nix index a7df97e..e4a4d1c 100644 --- a/modules/nixos/programs/default.nix +++ b/modules/nixos/programs/default.nix @@ -1,8 +1,6 @@ { imports = [ ./fish.nix - ./lutris.nix ./nh.nix - ./steam.nix ]; } diff --git a/modules/nixos/programs/lutris.nix b/modules/nixos/programs/lutris.nix deleted file mode 100644 index 127fcea..0000000 --- a/modules/nixos/programs/lutris.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: let - cfg = config.marleyos.programs.lutris; -in { - options.marleyos.programs.lutris.enable = lib.mkEnableOption "lutris"; - - config = lib.mkIf cfg.enable { - environment.systemPackages = with pkgs; [ - lutris - ]; - - programs.gamemode.enable = true; - }; -} diff --git a/modules/nixos/programs/steam.nix b/modules/nixos/programs/steam.nix deleted file mode 100644 index ce0d437..0000000 --- a/modules/nixos/programs/steam.nix +++ /dev/null @@ -1,24 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: let - cfg = config.marleyos.programs.steam; -in { - options.marleyos.programs.steam.enable = lib.mkEnableOption "steam"; - - config = lib.mkIf cfg.enable { - programs.steam = { - enable = true; - - extraCompatPackages = with pkgs; [ - proton-ge-bin - ]; - - protontricks.enable = true; - }; - - programs.gamemode.enable = true; - }; -} diff --git a/modules/nixos/shell/hyprlock.nix b/modules/nixos/shell/hyprlock.nix index 8fb261b..1ebfb9e 100644 --- a/modules/nixos/shell/hyprlock.nix +++ b/modules/nixos/shell/hyprlock.nix @@ -3,9 +3,9 @@ lib, ... }: let - cfg = config.marleyos.programs.hyprlock; + cfg = config.marleyos.shell.hyprlock; in { - options.marleyos.programs.hyprlock.enable = lib.mkEnableOption "hyprlock"; + options.marleyos.shell.hyprlock.enable = lib.mkEnableOption "hyprlock"; config = lib.mkIf cfg.enable { programs.hyprlock = { diff --git a/modules/nixos/shell/ly.nix b/modules/nixos/shell/ly.nix index 5077c39..49085fa 100644 --- a/modules/nixos/shell/ly.nix +++ b/modules/nixos/shell/ly.nix @@ -3,9 +3,9 @@ config, ... }: let - cfg = config.marleyos.services.ly; + cfg = config.marleyos.shell.ly; in { - options.marleyos.services.ly.enable = lib.mkEnableOption "ly"; + options.marleyos.shell.ly.enable = lib.mkEnableOption "ly"; config = lib.mkIf cfg.enable { services.displayManager.ly = { diff --git a/modules/nixos/shell/niri.nix b/modules/nixos/shell/niri.nix index 3f42caa..761c597 100644 --- a/modules/nixos/shell/niri.nix +++ b/modules/nixos/shell/niri.nix @@ -3,9 +3,9 @@ config, ... }: let - cfg = config.marleyos.wayland.niri; + cfg = config.marleyos.shell.niri; in { - options.marleyos.wayland.niri.enable = lib.mkEnableOption "niri"; + options.marleyos.shell.niri.enable = lib.mkEnableOption "niri"; config = lib.mkIf cfg.enable { programs.niri = { diff --git a/snowflake/modules/nixos/bundles/desktop/default.nix b/snowflake/modules/nixos/bundles/desktop/default.nix deleted file mode 100644 index cb926bf..0000000 --- a/snowflake/modules/nixos/bundles/desktop/default.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - lib, - config, - ... -}: let - cfg = config.marleyos.bundles.desktop; - - inherit (lib.marleyos) enabled disabled; -in { - options.marleyos.bundles.desktop.enable = lib.mkEnableOption "desktop"; - - config = lib.mkIf cfg.enable { - marleyos = { - isDesktop = lib.mkDefault true; - - mounts = { - automounts = enabled; - babeshare = enabled; - }; - - appearance = { - base = enabled; - }; - - programs = { - cli = enabled; - tui = enabled; - gui = enabled; - - lutris = lib.mkForce disabled; - steam = lib.mkForce disabled; - }; - - services = { - docker = enabled; - mopidy = enabled; - openssh = enabled; # Needed for agenix. - protonmail-bridge = enabled; - }; - }; - }; -} diff --git a/snowflake/modules/nixos/bundles/server/default.nix b/snowflake/modules/nixos/bundles/server/default.nix deleted file mode 100644 index 66ca284..0000000 --- a/snowflake/modules/nixos/bundles/server/default.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ - lib, - config, - ... -}: let - cfg = config.marleyos.bundles.server; - - inherit (lib.marleyos) enabled; -in { - options.marleyos.bundles.server.enable = lib.mkEnableOption "server"; - - config = lib.mkIf cfg.enable { - marleyos = { - isServer = lib.mkDefault true; - - appearance = { - base = enabled; - }; - - programs = { - cli = enabled; - tui = enabled; - }; - - services = { - docker = enabled; - openssh = enabled; - }; - }; - }; -}