From 7f49c289d51a9dadc7cf96749e2de602d7035395 Mon Sep 17 00:00:00 2001 From: Grey Jones Date: Sat, 29 Aug 2026 13:48:20 +0100 Subject: [PATCH] all application options will adapt to environment when used either with nixos (no home-manager) or home-manager standalone, `features.applications..enable` options still perform some functionality, rather than assuming a full nixos + home-manager setup like before --- modules/components/shells/noctalia.nix | 32 ++-- modules/components/window-managers/niri.nix | 14 +- .../features/applications/cli/fastfetch.nix | 16 ++ modules/features/applications/gui/equibop.nix | 6 +- modules/features/applications/gui/floorp.nix | 17 +- modules/features/applications/gui/fluxer.nix | 165 +++++++++++------- modules/features/applications/gui/kitty.nix | 6 +- .../features/applications/gui/nautilus.nix | 10 +- modules/features/applications/gui/remmina.nix | 19 ++ modules/features/applications/gui/spotify.nix | 30 +++- modules/features/applications/gui/vscode.nix | 19 +- modules/features/nixos/home-manager.nix | 8 + modules/features/nixos/stylix.nix | 11 +- modules/features/shells/zsh.nix | 10 +- modules/global/global.nix | 9 +- modules/global/helpers.nix | 21 +++ modules/hosts/kitagawa/kitagawa.nix | 23 ++- 17 files changed, 265 insertions(+), 151 deletions(-) diff --git a/modules/components/shells/noctalia.nix b/modules/components/shells/noctalia.nix index 23fc36b..a3949c5 100644 --- a/modules/components/shells/noctalia.nix +++ b/modules/components/shells/noctalia.nix @@ -7,25 +7,23 @@ programs.noctalia.enable = true; - home-manager.sharedModules = [ - ({ lib, config, ... }: { - home.activation = { - symlinkNoctaliaState = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { - target = ".local/state/noctalia/settings.toml"; - source = "dotfiles/${config.info.hostName}/noctalia/settings.toml"; - }); + home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) ({ lib, config, ... }: { + home.activation = { + symlinkNoctaliaState = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { + target = ".local/state/noctalia/settings.toml"; + source = "dotfiles/${config.info.hostName}/noctalia/settings.toml"; + }); - symlinkNoctaliaStatePlugins = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { - target = ".local/state/noctalia/plugins"; - source = "dotfiles/${config.info.hostName}/noctalia/plugins"; - isDir = true; - }); - }; + symlinkNoctaliaStatePlugins = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { + target = ".local/state/noctalia/plugins"; + source = "dotfiles/${config.info.hostName}/noctalia/plugins"; + isDir = true; + }); + }; - xdg.configFile."noctalia/settings.toml".source = "${self}/dotfiles/${config.info.hostName}/noctalia/settings.toml"; - xdg.configFile."noctalia/plugins".source = "${self}/dotfiles/${config.info.hostName}/noctalia/plugins"; - }) - ]; + xdg.configFile."noctalia/settings.toml".source = "${self}/dotfiles/${config.info.hostName}/noctalia/settings.toml"; + xdg.configFile."noctalia/plugins".source = "${self}/dotfiles/${config.info.hostName}/noctalia/plugins"; + }); }; }; } \ No newline at end of file diff --git a/modules/components/window-managers/niri.nix b/modules/components/window-managers/niri.nix index b1e0cc1..632f968 100644 --- a/modules/components/window-managers/niri.nix +++ b/modules/components/window-managers/niri.nix @@ -37,14 +37,12 @@ )); }; - home-manager.sharedModules = [ - ({ lib, config, ... }: { - home.activation.symlinkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { - target = ".config/niri/config.kdl"; - source = "dotfiles/${config.info.hostName}/niri.kdl"; - }); - }) - ]; + home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) ({ lib, config, ... }: { + home.activation.symlinkNiriConfig = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { + target = ".config/niri/config.kdl"; + source = "dotfiles/${config.info.hostName}/niri.kdl"; + }); + }); }; }; } \ No newline at end of file diff --git a/modules/features/applications/cli/fastfetch.nix b/modules/features/applications/cli/fastfetch.nix index 9239e54..a731cc4 100644 --- a/modules/features/applications/cli/fastfetch.nix +++ b/modules/features/applications/cli/fastfetch.nix @@ -1,4 +1,20 @@ { inputs, self, ... }: { + flake.nixosModules.global = { pkgs, lib, config, ... }: { + options.features.applications.cli.fastfetch.enable = lib.mkEnableOption "fastfetch"; + + config = let + mkIfElse = with lib; p: yes: no: + mkMerge [ + (mkIf p yes) + (mkIf (!p) no) + ]; + in lib.mkIf (config.features.applications.cli.fastfetch.enable) (mkIfElse (config.features.nixos.home-manager.enable) { + home-manager.users.grey.features.applications.cli.fastfetch.enable = lib.mkDefault true; + } { + environment.systemPackages = [ pkgs.fastfetch ]; + }); + }; + flake.homeModules.global = { pkgs, lib, config, ... }: { options.features.applications.cli.fastfetch.enable = lib.mkEnableOption "fastfetch"; diff --git a/modules/features/applications/gui/equibop.nix b/modules/features/applications/gui/equibop.nix index 7d1d42c..fb3028f 100644 --- a/modules/features/applications/gui/equibop.nix +++ b/modules/features/applications/gui/equibop.nix @@ -8,11 +8,7 @@ (mkIf (!p) no) ]; in lib.mkIf (config.features.applications.gui.equibop.enable) (mkIfElse (config.features.nixos.home-manager.enable) { - home-manager.sharedModules = [ - { - features.applications.gui.equibop.enable = lib.mkDefault true; - } - ]; + home-manager.users.grey.features.applications.gui.equibop.enable = lib.mkDefault true; } { environment.systemPackages = [ pkgs.equibop ]; }); diff --git a/modules/features/applications/gui/floorp.nix b/modules/features/applications/gui/floorp.nix index 2bf10da..0365c6d 100644 --- a/modules/features/applications/gui/floorp.nix +++ b/modules/features/applications/gui/floorp.nix @@ -1,10 +1,17 @@ { inputs, self, ... }: { flake.nixosModules.graphics = { pkgs, lib, config, ... }: { - home-manager.sharedModules = lib.mkIf (config.features.nixos.stylix.enable) [ - ({ config, lib, ... }: { - stylix.targets.floorp.profileNames = lib.mkIf (config.features.applications.gui.floorp.enable) [ "default" ]; - }) - ]; + options.features.applications.gui.floorp.enable = lib.mkEnableOption "floorp"; + + config = let + mkIfElse = with lib; p: yes: no: mkMerge [ + (mkIf p yes) + (mkIf (!p) no) + ]; + in lib.mkIf (config.features.applications.gui.floorp.enable) (mkIfElse (config.features.nixos.home-manager.enable) { + home-manager.users.grey.features.applications.gui.floorp.enable = lib.mkDefault true; + } { + environment.systemPackages = [ pkgs.floorp-bin ]; + }); }; flake.homeModules.graphics = { pkgs, lib, config, ... }: { diff --git a/modules/features/applications/gui/fluxer.nix b/modules/features/applications/gui/fluxer.nix index b97cae7..e2007a7 100644 --- a/modules/features/applications/gui/fluxer.nix +++ b/modules/features/applications/gui/fluxer.nix @@ -1,78 +1,109 @@ -{ inputs, self, ... }: { +{ inputs, self, lib, ... }: let + fluxer-package = { appimageTools, fetchurl, lib, pkgs, ... }: + let + pname = "fluxer"; + version = "0.0.8"; + + src = fetchurl { + url = "https://api.fluxer.app/dl/desktop/stable/linux/x64/latest/appimage"; + sha256 = "sha256-GdoBK+Z/d2quEIY8INM4IQy5tzzIBBM+3CgJXQn0qAw="; + }; + + appimageContents = appimageTools.extract { inherit pname version src; }; + in + appimageTools.wrapType2 rec { + inherit pname version src; + + extraInstallCommands = '' + install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop + + install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png + + substituteInPlace $out/share/applications/${pname}.desktop \ + --replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname} %U' + ''; + + meta = with lib; { + description = "Open-source, self-hosted alternative to Discord"; + homepage = "https://fluxer.app/"; + license = licenses.agpl3Only; + maintainers = [ ]; + platforms = [ "x86_64-linux" ]; + }; + }; + fluxer-canary-package = { appimageTools, fetchurl, lib, pkgs, ... }: + let + pname = "fluxer-canary"; + version = "2026.827.132039"; + + src = fetchurl { + url = "https://api.canary.fluxer.app/dl/desktop/canary/linux/x64/latest/appimage"; + sha256 = "sha256-eRR9JZa4LPuUtjdDO+JvzaOLxQeDgVziLrFr5iIgr1Q="; + }; + + appimageContents = appimageTools.extract { inherit pname version src; }; + in + appimageTools.wrapType2 rec { + inherit pname version src; + + extraInstallCommands = '' + install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop + + install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png + + substituteInPlace $out/share/applications/${pname}.desktop \ + --replace 'Exec=AppRun %U' 'Exec=${pname} %U' + ''; + + meta = with lib; { + description = "Open-source, self-hosted alternative to Discord"; + homepage = "https://fluxer.app/"; + license = licenses.agpl3Only; + maintainers = [ ]; + platforms = [ "x86_64-linux" ]; + }; + }; + mkIfElse = with lib; p: yes: no: + mkMerge [ + (mkIf p yes) + (mkIf (!p) no) + ]; +in { flake.nixosModules.graphics = { pkgs, config, lib, ... }: { options.features.applications.gui = { fluxer.enable = lib.mkEnableOption "fluxer"; fluxer-canary.enable = lib.mkEnableOption "fluxer-canary"; }; - config = { - environment.systemPackages = (if config.features.applications.gui.fluxer.enable then [ - (pkgs.callPackage ({ appimageTools, fetchurl, lib, pkgs, ... }: - let - pname = "fluxer"; - version = "0.0.8"; + config = lib.mkIf (config.features.applications.gui.fluxer.enable) (mkIfElse (config.features.nixos.home-manager.enable) { + home-manager.users.grey.features.applications.gui.fluxer.enable = lib.mkDefault true; + } { + environment.systemPackages = [ + (pkgs.callPackage (fluxer-package) {}) + ]; + }) // lib.mkIf (config.features.applications.gui.fluxer-canary.enable) (mkIfElse (config.features.nixos.home-manager.enable) { + home-manager.users.grey.features.applications.gui.fluxer-canary.enable = lib.mkDefault true; + } { + environment.systemPackages = [ + (pkgs.callPackage (fluxer-canary-package) {}) + ]; + }); + }; - src = fetchurl { - url = "https://api.fluxer.app/dl/desktop/stable/linux/x64/latest/appimage"; - sha256 = "sha256-GdoBK+Z/d2quEIY8INM4IQy5tzzIBBM+3CgJXQn0qAw="; - }; + flake.homeModules.graphics = { pkgs, config, lib, ... }: { + options.features.applications.gui = { + fluxer.enable = lib.mkEnableOption "fluxer"; + fluxer-canary.enable = lib.mkEnableOption "fluxer-canary"; + }; - appimageContents = appimageTools.extract { inherit pname version src; }; - in - appimageTools.wrapType2 rec { - inherit pname version src; - - extraInstallCommands = '' - install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop - - install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png - - substituteInPlace $out/share/applications/${pname}.desktop \ - --replace 'Exec=AppRun --no-sandbox %U' 'Exec=${pname} %U' - ''; - - meta = with lib; { - description = "Open-source, self-hosted alternative to Discord"; - homepage = "https://fluxer.app/"; - license = licenses.agpl3Only; - maintainers = [ ]; - platforms = [ "x86_64-linux" ]; - }; - }) {}) - ] else []) ++ (if config.features.applications.gui.fluxer-canary.enable then [ - (pkgs.callPackage ({ appimageTools, fetchurl, lib, pkgs, ... }: - let - pname = "fluxer-canary"; - version = "2026.827.132039"; - - src = fetchurl { - url = "https://api.canary.fluxer.app/dl/desktop/canary/linux/x64/latest/appimage"; - sha256 = "sha256-eRR9JZa4LPuUtjdDO+JvzaOLxQeDgVziLrFr5iIgr1Q="; - }; - - appimageContents = appimageTools.extract { inherit pname version src; }; - in - appimageTools.wrapType2 rec { - inherit pname version src; - - extraInstallCommands = '' - install -m 444 -D ${appimageContents}/${pname}.desktop $out/share/applications/${pname}.desktop - - install -m 444 -D ${appimageContents}/${pname}.png $out/share/icons/hicolor/512x512/apps/${pname}.png - - substituteInPlace $out/share/applications/${pname}.desktop \ - --replace 'Exec=AppRun %U' 'Exec=${pname} %U' - ''; - - meta = with lib; { - description = "Open-source, self-hosted alternative to Discord"; - homepage = "https://fluxer.app/"; - license = licenses.agpl3Only; - maintainers = [ ]; - platforms = [ "x86_64-linux" ]; - }; - }) {}) - ] else []); + config = lib.mkIf (config.features.applications.gui.fluxer.enable) { + home.packages = [ + (pkgs.callPackage (fluxer-package) {}) + ]; + } // lib.mkIf (config.features.applications.gui.fluxer-canary.enable) { + home.packages = [ + (pkgs.callPackage (fluxer-canary-package) {}) + ]; }; }; } \ No newline at end of file diff --git a/modules/features/applications/gui/kitty.nix b/modules/features/applications/gui/kitty.nix index c7e4144..cce4fc0 100644 --- a/modules/features/applications/gui/kitty.nix +++ b/modules/features/applications/gui/kitty.nix @@ -8,11 +8,7 @@ (mkIf (!p) no) ]; in lib.mkIf (config.features.applications.gui.kitty.enable) (mkIfElse (config.features.nixos.home-manager.enable) { - home-manager.sharedModules = [ - { - features.applications.gui.kitty.enable = lib.mkDefault true; - } - ]; + home-manager.users.grey.features.applications.gui.kitty.enable = lib.mkDefault true; } { environment.systemPackages = [ pkgs.kitty ]; }); diff --git a/modules/features/applications/gui/nautilus.nix b/modules/features/applications/gui/nautilus.nix index e447af4..2e2bb1a 100644 --- a/modules/features/applications/gui/nautilus.nix +++ b/modules/features/applications/gui/nautilus.nix @@ -17,11 +17,9 @@ terminal = "kitty"; }; - home-manager.sharedModules = [ - { - features.applications.gui.nautilus.enable = true; - } - ]; + home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) { + features.applications.gui.nautilus.enable = true; + }; }; }; @@ -29,6 +27,8 @@ options.features.applications.gui.nautilus.enable = lib.mkEnableOption "nautilus"; config = lib.mkIf (config.features.applications.gui.nautilus.enable) { + home.packages = lib.mkIf (config.info.isStandalone) [ pkgs.nautilus ]; + gtk.gtk3.bookmarks = [ "file://${config.info.rootPath} NixOS" "file:///home/grey/Downloads Downloads" diff --git a/modules/features/applications/gui/remmina.nix b/modules/features/applications/gui/remmina.nix index dded089..fc596d6 100644 --- a/modules/features/applications/gui/remmina.nix +++ b/modules/features/applications/gui/remmina.nix @@ -1,4 +1,23 @@ { inputs, self, ... }: { + flake.nixosModules.graphics = { pkgs, config, lib, ... }: { + options.features.applications.gui.remmina.enable = lib.mkEnableOption "remmina"; + + config = let + mkIfElse = with lib; p: yes: no: + mkMerge [ + (mkIf p yes) + (mkIf (!p) no) + ]; + in lib.mkIf (config.features.applications.gui.remmina.enable) (mkIfElse (config.features.nixos.home-manager.enable) { + home-manager.users.grey.features.applications.gui.remmina.enable = lib.mkDefault true; + } { + environment.systemPackages = with pkgs; [ + remmina + freerdp + ]; + }); + }; + flake.homeModules.graphics = { pkgs, config, lib, ... }: { options.features.applications.gui.remmina.enable = lib.mkEnableOption "remmina"; diff --git a/modules/features/applications/gui/spotify.nix b/modules/features/applications/gui/spotify.nix index 1025c91..894b1f1 100644 --- a/modules/features/applications/gui/spotify.nix +++ b/modules/features/applications/gui/spotify.nix @@ -1,4 +1,26 @@ { inputs, self, ... }: { + flake.nixosModules.graphics = { pkgs, config, lib, ... }: { + options.features.applications.gui.spotify = { + enable = lib.mkEnableOption "spotify"; + spicetify.enable = lib.mkEnableOption "spicetify"; + }; + + config = let + mkIfElse = with lib; p: yes: no: + mkMerge [ + (mkIf p yes) + (mkIf (!p) no) + ]; + in lib.mkIf (config.features.applications.gui.spotify.enable) (mkIfElse (config.features.nixos.home-manager.enable) { + home-manager.users.grey.features.applications.gui.spotify = { + enable = lib.mkDefault true; + spicetify.enable = lib.mkDefault config.features.applications.gui.spotify.spicetify.enable; + }; + } { + environment.systemPackages = [ pkgs.spotify ]; + }); + }; + flake.homeModules.graphics = { pkgs, config, lib, ... }: { options.features.applications.gui.spotify = { enable = lib.mkEnableOption "spotify"; @@ -9,15 +31,13 @@ inputs.spicetify.homeManagerModules.default ]; - config = { - home.packages = lib.mkIf (with config.features.applications.gui.spotify; enable && !spicetify.enable) (with pkgs; [ - spotify - ]); + config = lib.mkIf (config.features.applications.gui.spotify.enable) { + home.packages = lib.mkIf (!config.features.applications.gui.spotify.spicetify.enable) [ pkgs.spotify ]; programs.spicetify = let spicePkgs = inputs.spicetify.legacyPackages.${pkgs.stdenv.hostPlatform.system}; - in lib.mkIf (with config.features.applications.gui.spotify; enable && spicetify.enable) { + in lib.mkIf (config.features.applications.gui.spotify.spicetify.enable) { enable = true; enabledExtensions = with spicePkgs.extensions; [ hidePodcasts diff --git a/modules/features/applications/gui/vscode.nix b/modules/features/applications/gui/vscode.nix index b11989a..b8c7b39 100644 --- a/modules/features/applications/gui/vscode.nix +++ b/modules/features/applications/gui/vscode.nix @@ -2,22 +2,23 @@ flake.nixosModules.graphics = { config, pkgs, lib, ... }: { options.features.applications.gui.vscode.enable = lib.mkEnableOption "vscode"; - config = { - environment.systemPackages = [ pkgs.vscode ]; - - home-manager.sharedModules = lib.mkIf (config.features.applications.gui.vscode.enable) [ - { - features.applications.gui.vscode.enable = lib.mkDefault true; - } + config = let + mkIfElse = with lib; p: yes: no: mkMerge [ + (mkIf p yes) + (mkIf (!p) no) ]; - }; + in lib.mkIf (config.features.applications.gui.vscode.enable) (mkIfElse (config.features.nixos.home-manager.enable) { + home-manager.users.grey.features.applications.gui.vscode.enable = lib.mkDefault true; + } { + environment.systemPackages = [ pkgs.vscode ]; + }); }; flake.homeModules.graphics = { config, pkgs, lib, ... }: { options.features.applications.gui.vscode.enable = lib.mkEnableOption "vscode"; config = lib.mkIf (config.features.applications.gui.vscode.enable) { - home.packages = lib.mkIf (config.info.isStandalone) [ pkgs.vscode ]; + home.packages = [ pkgs.vscode ]; home.activation = { linkVsCodeConfigSettings = lib.hm.dag.entryAfter ["writeBoundary"] (config.helpers.mkSymlinkActivationScript { diff --git a/modules/features/nixos/home-manager.nix b/modules/features/nixos/home-manager.nix index b3516a4..c128aa6 100644 --- a/modules/features/nixos/home-manager.nix +++ b/modules/features/nixos/home-manager.nix @@ -15,6 +15,14 @@ useUserPackages = true; backupFileExtension = "bak"; users.grey = self.homeModules.${config.info.hostName}; + sharedModules = [ + { features.nixos.stylix.enable = lib.mkDefault config.features.nixos.stylix.enable; } + ( lib.mkIf (config.features.nixos.stylix.enable) + ( if (config.features.applications.gui.floorp.enable) then { + stylix.targets.floorp.profileNames = [ "default" ]; + } else {}) + ) + ]; }; }; } \ No newline at end of file diff --git a/modules/features/nixos/stylix.nix b/modules/features/nixos/stylix.nix index 8155263..57e3da5 100644 --- a/modules/features/nixos/stylix.nix +++ b/modules/features/nixos/stylix.nix @@ -6,10 +6,19 @@ options.features.nixos.stylix.enable = lib.mkEnableOption "stylix"; - config = lib.mkIf (config.features.nixos.stylix.enable) { + config = let + mkIfElse = with lib; p: yes: no: mkMerge [ + (mkIf p yes) + (mkIf (!p) no) + ]; + in lib.mkIf (config.features.nixos.stylix.enable) { stylix.enable = true; stylix.image = builtins.path { path = "${self}/modules/hosts/${config.info.hostName}/wallpaper.jpg"; }; stylix.polarity = "dark"; }; }; + + flake.homeModules.graphics = { pkgs, lib, config, ... }: { + options.features.nixos.stylix.enable = lib.mkEnableOption "stylix"; + }; } \ No newline at end of file diff --git a/modules/features/shells/zsh.nix b/modules/features/shells/zsh.nix index 56e4eca..fa1661b 100644 --- a/modules/features/shells/zsh.nix +++ b/modules/features/shells/zsh.nix @@ -10,12 +10,10 @@ users.defaultUserShell = pkgs.zsh; users.users."grey".shell = pkgs.zsh; - home-manager.sharedModules = [ - { - features.shells.zsh.enable = true; - features.shells.zsh.antidote.enable = lib.mkIf (config.features.shells.zsh.antidote.enable) true; - } - ]; + home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) { + features.shells.zsh.enable = lib.mkDefault true; + features.shells.zsh.antidote.enable = lib.mkDefault config.features.shells.zsh.antidote.enable; + }; }; }; diff --git a/modules/global/global.nix b/modules/global/global.nix index 18417e7..9df5264 100644 --- a/modules/global/global.nix +++ b/modules/global/global.nix @@ -82,10 +82,9 @@ powerOnBoot = false; }; - home-manager.sharedModules = [ - ({ config, ... }: { - info.isStandalone = false; - }) - ]; + home-manager.users.grey = lib.mkIf (config.features.nixos.home-manager.enable) { + info.isStandalone = lib.mkDefault false; + # home.stateVersion = lib.mkDefault config.info.stateVersion; + }; }; } \ No newline at end of file diff --git a/modules/global/helpers.nix b/modules/global/helpers.nix index 7bcde01..5e88113 100644 --- a/modules/global/helpers.nix +++ b/modules/global/helpers.nix @@ -28,6 +28,27 @@ lib.attrsets.attrByPath (lib.strings.splitString "." strPath) null set; readOnly = true; }; + + homeManagerInheritEnableOptionElse = lib.mkOption { + # type = lib.types.functionTo lib.types.attrs; + default = optionName: systemAttrs: let + mkIfElse = with lib; p: yes: no: mkMerge [ + (mkIf p yes) + (mkIf (!p) no) + ]; + + attrByStrPath = strPath: set: + lib.attrsets.attrByPath (lib.strings.splitString "." strPath) null set; + + setAttrByStrPath = strPath: value: + lib.attrsets.setAttrByPath (lib.strings.splitString "." strPath) value; + in builtins.trace "hi" lib.mkIf (attrByStrPath optionName config) (mkIfElse (config.features.nixos.home-manager.enable) { + home-manager.sharedModules = [ + ({ lib, ... }: (setAttrByStrPath optionName (lib.mkDefault true))) + ]; + } (systemAttrs)); + readOnly = true; + }; }; }; diff --git a/modules/hosts/kitagawa/kitagawa.nix b/modules/hosts/kitagawa/kitagawa.nix index 50db8b2..4a56858 100644 --- a/modules/hosts/kitagawa/kitagawa.nix +++ b/modules/hosts/kitagawa/kitagawa.nix @@ -36,6 +36,16 @@ kitty.enable = true; vscode.enable = true; equibop.enable = true; + floorp.enable = true; + remmina.enable = true; + spotify = { + enable = true; + spicetify.enable = true; + }; + }; + + cli = { + fastfetch.enable = true; }; extraPackages = with pkgs; [ @@ -93,19 +103,6 @@ features = { applications = { - cli = { - fastfetch.enable = true; - }; - - gui = { - floorp.enable = true; - remmina.enable = true; - spotify = { - enable = true; - spicetify.enable = true; - }; - }; - extraPackages = with pkgs; [ obsidian thunderbird