From fa62ba2b8c73ea7244fd1a3950a26a2a0f4cc74e Mon Sep 17 00:00:00 2001 From: OlivierChiasson Date: Mon, 22 Jun 2026 12:29:16 -0300 Subject: [PATCH] Refactor desktop home configuration and introduce caching module - Simplified `desktop-home-base.nix` by removing legacy git and application settings, delegating them to a new `desktop-home-defaults.nix` module for better organization. - Added a caching configuration for `chiasson.system.caching.attic` in `desktop-home-base.nix`, enabling caching features with customizable options. - Updated host-specific configurations to remove direct caching settings, ensuring a cleaner and more modular setup. --- modules/hosts/14900k/configuration.nix | 9 --- modules/hosts/desktop-home-base.nix | 93 ++++-------------------- modules/hosts/desktop-home-defaults.nix | 77 ++++++++++++++++++++ modules/hosts/ideapad/configuration.nix | 11 --- modules/hosts/t2mbp/configuration.nix | 11 --- modules/hosts/uConsole/configuration.nix | 10 --- 6 files changed, 90 insertions(+), 121 deletions(-) create mode 100644 modules/hosts/desktop-home-defaults.nix diff --git a/modules/hosts/14900k/configuration.nix b/modules/hosts/14900k/configuration.nix index f117141..40e2354 100644 --- a/modules/hosts/14900k/configuration.nix +++ b/modules/hosts/14900k/configuration.nix @@ -47,15 +47,6 @@ LIBVA_DRM_DEVICE = "/dev/dri/renderD128"; }; - chiasson.system.caching.attic = { - enable = true; - cacheName = "nixos-new"; - endpoint = "http://192.168.2.238:8080/"; - publicKey = "nixos-new:8NySIcT0HP7KvGQKgBRWoWESxxRA8BVYo8S85UNpNX0="; - tokenFile = config.sops.secrets."caching/attic/token".path; - push.enable = true; - userCli.enable = true; - }; chiasson.desktop = { niri.enable = true; diff --git a/modules/hosts/desktop-home-base.nix b/modules/hosts/desktop-home-base.nix index ffc7330..f55a32c 100644 --- a/modules/hosts/desktop-home-base.nix +++ b/modules/hosts/desktop-home-base.nix @@ -1,93 +1,26 @@ # Shared Home Manager selection for all desktop hosts (14900k, t2mbp, ideapad, uConsole). # Wisdom slices resolved here (NixOS has `self`); toggles select what actually installs. -{ self, inputs, ... }: +{ self, ... }: { flake.nixosModules.desktopHomeBase = - { self, lib, pkgs, ... }: + { config, lib, ... }: { chiasson.system.chromiumHevc.enable = lib.mkDefault true; + chiasson.system.caching.attic = lib.mkDefault { + enable = true; + cacheName = "nixos-new"; + endpoint = "http://192.168.2.238:8080/"; + publicKey = "nixos-new:8NySIcT0HP7KvGQKgBRWoWESxxRA8BVYo8S85UNpNX0="; + tokenFile = config.sops.secrets."caching/attic/token".path; + push.enable = true; + userCli.enable = true; + }; + chiasson.users.extraModules.olivier = self.lib.wisdomCatalogExtraModules self ++ [ - ( - { lib, pkgs, ... }: - let - aarch64 = pkgs.stdenv.hostPlatform.isAarch64; - in - { - programs.git = { - enable = lib.mkDefault true; - settings.user = { - name = "OlivierChiasson"; - email = "olivierchiasson@hotmail.fr"; - }; - }; - - #TODO[epic=Moderate] Check if git-crypt should belong in desktop-home-base. - home.packages = [ pkgs.git-crypt ]; - - chiasson.home = { - # Catalog of `chiasson.home.*` toggles — host `home.nix` sets `enable = true` to override `mkDefault false`. - shell = { - fish.enable = lib.mkDefault true; - ohMyPosh.enable = lib.mkDefault true; - yazi.enable = lib.mkDefault true; - }; - - terminals.kitty.enable = lib.mkDefault true; - - filebrowsers.nemo.enable = lib.mkDefault true; - - browsers = { - chrome.enable = lib.mkDefault false; - chromiumHevc = { - enable = lib.mkDefault true; - packages = lib.mkDefault ( - if aarch64 then - [ "chromium" ] - else - [ "google-chrome" ] - ); - } // lib.optionalAttrs (!aarch64) { - # Chromium + NVIDIA VA-API → frame pool errors in Jellyfin; gecko may fare better on NVIDIA. - vaapi.gpu = lib.mkDefault "intel"; - }; - edge.enable = lib.mkDefault false; - flow.enable = lib.mkDefault false; - orion.enable = lib.mkDefault false; - zen.enable = lib.mkDefault false; - }; - - editors = { - cursor.enable = lib.mkDefault true; - kate.enable = lib.mkDefault false; - obsidian.enable = lib.mkDefault true; - }; - - apps = { - discord.enable = lib.mkDefault false; - localsend.enable = lib.mkDefault true; - pokeclicker.enable = lib.mkDefault false; - spotify = { - enable = lib.mkDefault false; - openDiscoveryFirewall = lib.mkDefault false; - }; - }; - - desktop = { - screenshot = { - enable = lib.mkDefault true; - swiftshareApiKeyFile = "/run/secrets/swiftshare/API_KEY"; #TODO[epic=sops] redo this by passing sops file output directly - }; - # WhiteSur GTK/icons, Phinger cursor, DMS matugen for GTK (+ qt6ct for Qt apps). - theming.enable = lib.mkDefault true; - }; - - hardware.uconsoleGamepad.enable = lib.mkDefault false; - }; - } - ) + self.homeManagerModules.desktopHomeDefaults ]; }; } diff --git a/modules/hosts/desktop-home-defaults.nix b/modules/hosts/desktop-home-defaults.nix new file mode 100644 index 0000000..a8ffc52 --- /dev/null +++ b/modules/hosts/desktop-home-defaults.nix @@ -0,0 +1,77 @@ +# Shared HM defaults for desktop hosts (git identity, wisdom catalog toggles). +{ ... }: { + flake.homeManagerModules.desktopHomeDefaults = + { lib, pkgs, ... }: + let + aarch64 = pkgs.stdenv.hostPlatform.isAarch64; + in + { + programs.git = { + enable = lib.mkDefault true; + settings.user = { + name = "OlivierChiasson"; + email = "olivierchiasson@hotmail.fr"; + }; + }; + + #TODO[epic=Moderate] Check if git-crypt should belong in desktop-home-base. + home.packages = [ pkgs.git-crypt ]; + + chiasson.home = { + shell = { + fish.enable = lib.mkDefault true; + ohMyPosh.enable = lib.mkDefault true; + yazi.enable = lib.mkDefault true; + }; + + terminals.kitty.enable = lib.mkDefault true; + + filebrowsers.nemo.enable = lib.mkDefault true; + + browsers = { + chrome.enable = lib.mkDefault false; + chromiumHevc = { + enable = lib.mkDefault true; + packages = lib.mkDefault ( + if aarch64 then + [ "chromium" ] + else + [ "google-chrome" ] + ); + } // lib.optionalAttrs (!aarch64) { + vaapi.gpu = lib.mkDefault "intel"; + }; + edge.enable = lib.mkDefault false; + flow.enable = lib.mkDefault false; + orion.enable = lib.mkDefault false; + zen.enable = lib.mkDefault false; + }; + + editors = { + cursor.enable = lib.mkDefault true; + kate.enable = lib.mkDefault false; + obsidian.enable = lib.mkDefault true; + }; + + apps = { + discord.enable = lib.mkDefault false; + localsend.enable = lib.mkDefault true; + pokeclicker.enable = lib.mkDefault false; + spotify = { + enable = lib.mkDefault false; + openDiscoveryFirewall = lib.mkDefault false; + }; + }; + + desktop = { + screenshot = { + enable = lib.mkDefault true; + swiftshareApiKeyFile = "/run/secrets/swiftshare/API_KEY"; #TODO[epic=sops] redo this by passing sops file output directly + }; + theming.enable = lib.mkDefault true; + }; + + hardware.uconsoleGamepad.enable = lib.mkDefault false; + }; + }; +} diff --git a/modules/hosts/ideapad/configuration.nix b/modules/hosts/ideapad/configuration.nix index 0114167..a10b276 100644 --- a/modules/hosts/ideapad/configuration.nix +++ b/modules/hosts/ideapad/configuration.nix @@ -51,17 +51,6 @@ hardware.firmware = [ pkgs.chromeos-sc7180-unredistributable-firmware ]; hardware.enableRedistributableFirmware = true; - # ─────────────────────── Attic (substitution + push + CLI token) ─────── - chiasson.system.caching.attic = { - enable = true; - cacheName = "nixos-new"; - endpoint = "http://192.168.2.238:8080/"; - publicKey = "nixos-new:8NySIcT0HP7KvGQKgBRWoWESxxRA8BVYo8S85UNpNX0="; - tokenFile = config.sops.secrets."caching/attic/token".path; - push.enable = true; - userCli.enable = true; - }; - # ─────────────────────── System bits ─────────────────────── chiasson.system = { audio.enable = true; diff --git a/modules/hosts/t2mbp/configuration.nix b/modules/hosts/t2mbp/configuration.nix index 4f803fb..20b7bc6 100644 --- a/modules/hosts/t2mbp/configuration.nix +++ b/modules/hosts/t2mbp/configuration.nix @@ -54,17 +54,6 @@ # Dynamic function row on the Touch Bar (`tiny-dfr`; needs `DRM_APPLETBDRM` — see t2linux kernel opts). hardware.apple.touchBar.enable = true; - # ─────────────────────── Attic (pull + push + CLI token) ──────────────────── - chiasson.system.caching.attic = { - enable = true; - cacheName = "nixos-new"; - endpoint = "http://192.168.2.238:8080/"; - publicKey = "nixos-new:8NySIcT0HP7KvGQKgBRWoWESxxRA8BVYo8S85UNpNX0="; - tokenFile = config.sops.secrets."caching/attic/token".path; - push.enable = true; - userCli.enable = true; - }; - # ─────────────────────── Display Server & Desktop ────────────────────────── chiasson.desktop = { niri = { diff --git a/modules/hosts/uConsole/configuration.nix b/modules/hosts/uConsole/configuration.nix index 06408ac..4db2f47 100644 --- a/modules/hosts/uConsole/configuration.nix +++ b/modules/hosts/uConsole/configuration.nix @@ -45,16 +45,6 @@ chiasson.system.librepods.enable = true; chiasson.system.palera1n.enable = true; - # ─────────────────────── Attic (pull + push + CLI token) ──────────────────── - chiasson.system.caching.attic = { - enable = true; - cacheName = "nixos-new"; - endpoint = "http://192.168.2.238:8080/"; - publicKey = "nixos-new:8NySIcT0HP7KvGQKgBRWoWESxxRA8BVYo8S85UNpNX0="; - tokenFile = config.sops.secrets."caching/attic/token".path; - push.enable = true; - userCli.enable = true; - }; # ─────────────────────── Display Server & Desktop ────────────────────────── chiasson.desktop = {