diff --git a/devices/ideapad-slim-5/configuration.nix b/devices/ideapad-slim-5/configuration.nix index 16c2066..bea3938 100755 --- a/devices/ideapad-slim-5/configuration.nix +++ b/devices/ideapad-slim-5/configuration.nix @@ -81,12 +81,42 @@ in bluetooth.enable = true; flatpak.enable = true; - symlink = { - "SteamApps" = ".local/share/Steam/steamapps"; - "Development/Quickshell" = ".config/quickshell"; - # "Development/KDE-Widget" = ".local/share/plasma/plasmoids"; - # "Development/SplashScreen" = ".local/share/plasma/look-and-feel"; - # "Development/DesktopEffects" = ".local/share/kwin/effects"; + files = { + force = { + ".config/dolphinrc" = true; + }; + + mkForce = { + ".mozilla/firefox/default/search.json.mozlz4" = true; + }; + + source = { + ".config/qt5ct/colors/Catppuccin-Mocha.conf" = + "${pkgs.catppuccin-qt5ct}/share/qt5ct/colors/catppuccin-mocha-sapphire.conf"; + ".config/qt6ct/colors/Catppuccin-Mocha.conf" = + "${pkgs.catppuccin-qt5ct}/share/qt6ct/colors/catppuccin-mocha-sapphire.conf"; + + ".config/dolphinrc" = libs.root "/configs/dolphinrc"; + + ".local/share/kio/servicemenus/copy-server-public-url.desktop" = + libs.root "/configs/services-menu/copy-server-public-url.desktop"; + ".local/share/kio/servicemenus/open-with-code.desktop" = + libs.root "/configs/services-menu/open-with-code.desktop"; + ".local/share/kio/servicemenus/open-with-nvim.desktop" = + libs.root "/configs/services-menu/open-with-nvim.desktop"; + ".local/share/kio/servicemenus/open-with-antigravity.desktop" = + libs.root "/configs/services-menu/open-with-antigravity.desktop"; + ".local/share/kio/servicemenus/open-ghostty-here.desktop" = + libs.root "/configs/services-menu/open-ghostty-here.desktop"; + }; + + symlink = { + "SteamApps" = ".local/share/Steam/steamapps"; + "Development/Quickshell" = ".config/quickshell"; + # "Development/KDE-Widget" = ".local/share/plasma/plasmoids"; + # "Development/SplashScreen" = ".local/share/plasma/look-and-feel"; + # "Development/DesktopEffects" = ".local/share/kwin/effects"; + }; }; programs = { diff --git a/home/asakiyuki/modules/files.nix b/home/asakiyuki/modules/files.nix index 64fe073..bcb5945 100644 --- a/home/asakiyuki/modules/files.nix +++ b/home/asakiyuki/modules/files.nix @@ -1,35 +1,50 @@ -{ pkgs, lib, osconfig, config, ... }: { - home.file = { - ".config/qt5ct/colors/Catppuccin-Mocha.conf".source = "${pkgs.catppuccin-qt5ct}/share/qt5ct/colors/catppuccin-mocha-sapphire.conf"; - ".config/qt6ct/colors/Catppuccin-Mocha.conf".source = "${pkgs.catppuccin-qt5ct}/share/qt6ct/colors/catppuccin-mocha-sapphire.conf"; + pkgs, + lib, + osconfig, + config, + ... +}: +{ + home.file = lib.mkMerge [ + (builtins.mapAttrs (_: path: { + source = path; + }) osconfig.device.files.source) - ".local/share/kio/servicemenus/copy-server-public-url.desktop".source = ../../../configs/services-menu/copy-server-public-url.desktop; + (builtins.mapAttrs (_: path: { + source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/${path}"; + }) osconfig.device.files.symlink) - ".local/share/kio/servicemenus/open-with-code.desktop".source = ../../../configs/services-menu/open-with-code.desktop; - ".local/share/kio/servicemenus/open-with-nvim.desktop".source = ../../../configs/services-menu/open-with-nvim.desktop; - ".local/share/kio/servicemenus/open-with-antigravity.desktop".source = ../../../configs/services-menu/open-with-antigravity.desktop; - ".local/share/kio/servicemenus/open-ghostty-here.desktop".source = ../../../configs/services-menu/open-ghostty-here.desktop; + (lib.mkMerge ( + builtins.map (name: lib.setAttrByPath [ name "force" ] true) ( + builtins.attrNames osconfig.device.files.force + ) + )) - ".mozilla/firefox/default/search.json.mozlz4".force = lib.mkForce true; - ".config/dolphinrc" = { - force = true; - source = ../../../configs/dolphinrc; - }; - } // builtins.mapAttrs (key: path: { source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/${path}"; }) osconfig.device.symlink; + (lib.mkMerge ( + builtins.map (name: lib.setAttrByPath [ name "force" ] (lib.mkForce true)) ( + builtins.attrNames osconfig.device.files.mkForce + ) + )) + ]; - xdg.configFile = { - kdeglobals.text = builtins.readFile ((pkgs.catppuccin-kde.override { flavour = ["mocha"]; accents = ["sapphire"]; }) + "/share/color-schemes/CatppuccinMochaSapphire.colors") + - '' + xdg.configFile.kdeglobals.text = + builtins.readFile ( + (pkgs.catppuccin-kde.override { + flavour = [ "mocha" ]; + accents = [ "sapphire" ]; + }) + + "/share/color-schemes/CatppuccinMochaSapphire.colors" + ) + + '' - [UiSettings] - ColorScheme=qt6ct - - [General] - TerminalApplication=${osconfig.device.programs.terminal} + [UiSettings] + ColorScheme=qt6ct - [Icons] - Theme=Papirus - ''; - }; -} \ No newline at end of file + [General] + TerminalApplication=${osconfig.device.programs.terminal} + + [Icons] + Theme=Papirus + ''; +} diff --git a/options/common/default.nix b/options/common/default.nix index f725b20..b473cd7 100644 --- a/options/common/default.nix +++ b/options/common/default.nix @@ -1,6 +1,9 @@ { lib, ... }: { - imports = [ ./programs.nix ]; + imports = [ + ./programs.nix + ./file.nix + ]; options.device = { flatpak.enable = lib.mkEnableOption "flatpak"; diff --git a/options/common/file.nix b/options/common/file.nix new file mode 100644 index 0000000..1f4e476 --- /dev/null +++ b/options/common/file.nix @@ -0,0 +1,24 @@ +{ lib, ... }: +{ + options.device.files = { + symlink = lib.mkOption { + default = { }; + type = lib.types.attrsOf lib.types.str; + }; + + source = lib.mkOption { + default = { }; + type = lib.types.attrsOf lib.types.path; + }; + + force = lib.mkOption { + default = { }; + type = lib.types.attrsOf lib.types.bool; + }; + + mkForce = lib.mkOption { + default = { }; + type = lib.types.attrsOf lib.types.bool; + }; + }; +} diff --git a/options/desktop/default.nix b/options/desktop/default.nix index 2c25632..9bd723d 100644 --- a/options/desktop/default.nix +++ b/options/desktop/default.nix @@ -1,18 +1,18 @@ -{ lib, ... }: { - imports = [ - ../common/default.nix +{ lib, ... }: +{ + imports = [ + ../common/default.nix - ./environment.nix - ./programs.nix - ./hardware.nix - ./file.nix - ]; + ./environment.nix + ./programs.nix + ./hardware.nix + ]; - options.device = { - cursors = lib.mkOption { - type = lib.types.str; - default = "aemeath"; - description = "Cursor theme to use for the desktop"; - }; + options.device = { + cursors = lib.mkOption { + type = lib.types.str; + default = "aemeath"; + description = "Cursor theme to use for the desktop"; }; -} \ No newline at end of file + }; +} diff --git a/options/desktop/file.nix b/options/desktop/file.nix deleted file mode 100644 index 472b56c..0000000 --- a/options/desktop/file.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ lib, ... }: { - options.device = { - symlink = lib.mkOption { - default = {}; - type = lib.types.attrsOf lib.types.str; - }; - }; -} \ No newline at end of file