diff --git a/modules/user/chn/default.nix b/modules/user/chn/default.nix index f4fcf891..c53b3f22 100644 --- a/modules/user/chn/default.nix +++ b/modules/user/chn/default.nix @@ -14,7 +14,6 @@ inputs: }; home-manager.users.chn = { - imports = [ "${inputs.topInputs.impermanence}/home-manager.nix" ]; config = { programs = @@ -82,65 +81,39 @@ inputs: )) ) ]; - persistence = - { - "/nix/persistent/home/chn" = - { - directories = - [ - # common things - "bin" "Desktop" "Documents" "Downloads" "Music" "Pictures" "repo" "share" "Public" "Videos" - ".config" ".local/share" - # xmuvpn - ".ecdata" - # firefox - ".mozilla/firefox/default" - # ssh - ".ssh" - # steam - ".steam" # ".local/share/Steam" - # vscode - ".vscode" # ".config/Code" ".config/grammarly-languageserver" - # zotero - ".zotero" "Zotero" - ]; - allowOther = true; - }; - "/nix/rootfs/current/home/chn".allowOther = true; - }; }; pam.yubico.authorizedYubiKeys.ids = [ "cccccbgrhnub" ]; }; }; - # environment.persistence = - # let inherit (inputs.config.nixos.system) impermanence; in inputs.lib.mkIf impermanence.enable - # { - # # TODO: make copy or soft link of files - # "${impermanence.persistence}".users.chn = - # { - # directories = builtins.map - # (dir: { directory = dir.dir or dir; user = "chn"; group = "chn"; mode = dir.mode or "0755"; }) - # [ - # # common things - # "bin" "Desktop" "Documents" "Downloads" "Music" "Pictures" "repo" "share" "Public" "Videos" - # ".config" ".local/share" - # # # gnome - # # { dir = ".config/dconf"; mode = "0700"; } ".config/gtk-2.0" ".config/gtk-3.0" ".config/gtk-4.0" - # # ".config/libaccounts-glib" - # # # android - # # { dir = ".android"; mode = "0750";} - # # xmuvpn - # ".ecdata" - # # firefox - # { dir = ".mozilla/firefox/default"; mode = "0700"; } - # # ssh - # { dir = ".ssh"; mode = "0700"; } - # # steam - # ".steam" # ".local/share/Steam" - # # vscode - # ".vscode" # ".config/Code" ".config/grammarly-languageserver" - # # zotero - # ".zotero" "Zotero" + environment.persistence = + let inherit (inputs.config.nixos.system) impermanence; in inputs.lib.mkIf impermanence.enable + { + # TODO: make copy or soft link of files + "${impermanence.persistence}".users.chn = + { + directories = builtins.map + (dir: { directory = dir.dir or dir; user = "chn"; group = "chn"; mode = dir.mode or "0755"; }) + [ + # common things + "bin" "Desktop" "Documents" "Downloads" "Music" "Pictures" "repo" "share" "Public" "Videos" + ".config" ".local/share" + # # gnome + # { dir = ".config/dconf"; mode = "0700"; } ".config/gtk-2.0" ".config/gtk-3.0" ".config/gtk-4.0" + # ".config/libaccounts-glib" + # # android + # { dir = ".android"; mode = "0750";} + # xmuvpn + ".ecdata" + # firefox + { dir = ".mozilla/firefox/default"; mode = "0700"; } + # ssh + { dir = ".ssh"; mode = "0700"; } + # steam + ".steam" # ".local/share/Steam" + # vscode + ".vscode" # ".config/Code" ".config/grammarly-languageserver" + # zotero + ".zotero" "Zotero" # 百度网盘 # ".config/BaiduPCS-Go" # # bitwarden @@ -223,7 +196,7 @@ inputs: # ".local/share/waydroid" # # zsh # ".local/share/zsh" - # ]; + ]; # TODO: create file if not exist # files = builtins.map # (file: { inherit file; parentDirectory = { user = "chn"; group = "chn"; mode = "0755"; }; }) @@ -239,5 +212,7 @@ inputs: # # age TODO: use sops to storage # ".config/sops/age/keys.txt" # ]; + }; + }; }; } diff --git a/modules/user/chn/plasma/autostart.nix b/modules/user/chn/plasma/autostart.nix index a7bbff1b..b8de3129 100644 --- a/modules/user/chn/plasma/autostart.nix +++ b/modules/user/chn/plasma/autostart.nix @@ -2,72 +2,74 @@ inputs: { config = inputs.lib.mkIf inputs.config.nixos.system.gui.enable { - home-manager.users.chn.config.home = - { - file = - let - programs = + home-manager.users.chn.config.home.file = + let + programs = + { + nheko = rec { - nheko = rec - { - fileName = "nheko.desktop"; - path = "${inputs.pkgs.nheko}/share/applications/${fileName}"; - }; - kclockd = rec - { - fileName = "org.kde.kclockd-autostart.desktop"; - path = "${inputs.pkgs.kdePackages.kdeGear.kclock}/etc/xdg/autostart/${fileName}"; - }; - yakuake = rec - { - fileName = "org.kde.yakuake.desktop"; - path = "${inputs.pkgs.yakuake}/share/applications/${fileName}"; - }; - telegram = rec - { - fileName = "org.telegram.desktop.desktop"; - path = inputs.pkgs.writeText fileName (builtins.replaceStrings - [ "Exec=telegram-desktop -- %u" ] [ "Exec=telegram-desktop -autostart" ] - (builtins.readFile "${inputs.pkgs.telegram-desktop}/share/applications/${fileName}")); - }; - element = rec - { - fileName = "element-desktop.desktop"; - path = inputs.pkgs.writeText fileName (builtins.replaceStrings - [ "Exec=element-desktop %u" ] [ "Exec=element-desktop --hidden" ] - (builtins.readFile "${inputs.pkgs.element-desktop.desktopItem}/share/applications/${fileName}")); - }; - kmail = rec - { - fileName = "org.kde.kmail2.desktop"; - path = "${inputs.pkgs.kmail}/share/applications/${fileName}"; - }; - discord = rec - { - fileName = "discord.desktop"; - path = inputs.pkgs.writeText fileName (builtins.replaceStrings - [ "Exec=Discord" ] [ "Exec=Discord --start-minimized" ] - (builtins.readFile "${inputs.pkgs.discord.desktopItem}/share/applications/${fileName}")); - }; - crow-translate = rec - { - fileName = "io.crow_translate.CrowTranslate.desktop"; - path = "${inputs.pkgs.crow-translate}/share/applications/${fileName}"; - }; + fileName = "nheko.desktop"; + path = "${inputs.pkgs.nheko}/share/applications/${fileName}"; }; - devices = + kclockd = rec { - pc = [ "nheko" "kclockd" "yakuake" "telegram" "element" "kmail" "discord" "crow-translate" ]; - surface = [ "kclockd" "yakuake" "telegram" "element" "crow-translate" ]; + fileName = "org.kde.kclockd-autostart.desktop"; + path = "${inputs.pkgs.kdePackages.kdeGear.kclock}/etc/xdg/autostart/${fileName}"; }; - in builtins.listToAttrs (builtins.map + yakuake = rec + { + fileName = "org.kde.yakuake.desktop"; + path = "${inputs.pkgs.yakuake}/share/applications/${fileName}"; + }; + telegram = rec + { + fileName = "org.telegram.desktop.desktop"; + path = inputs.pkgs.writeText fileName (builtins.replaceStrings + [ "Exec=telegram-desktop -- %u" ] [ "Exec=telegram-desktop -autostart" ] + (builtins.readFile "${inputs.pkgs.telegram-desktop}/share/applications/${fileName}")); + }; + element = rec + { + fileName = "element-desktop.desktop"; + path = inputs.pkgs.writeText fileName (builtins.replaceStrings + [ "Exec=element-desktop %u" ] [ "Exec=element-desktop --hidden" ] + (builtins.readFile "${inputs.pkgs.element-desktop.desktopItem}/share/applications/${fileName}")); + }; + kmail = rec + { + fileName = "org.kde.kmail2.desktop"; + path = "${inputs.pkgs.kmail}/share/applications/${fileName}"; + }; + discord = rec + { + fileName = "discord.desktop"; + path = inputs.pkgs.writeText fileName (builtins.replaceStrings + [ "Exec=Discord" ] [ "Exec=Discord --start-minimized" ] + (builtins.readFile "${inputs.pkgs.discord.desktopItem}/share/applications/${fileName}")); + }; + crow-translate = rec + { + fileName = "io.crow_translate.CrowTranslate.desktop"; + path = "${inputs.pkgs.crow-translate}/share/applications/${fileName}"; + }; + }; + devices = + { + pc = [ "nheko" "kclockd" "yakuake" "telegram" "element" "kmail" "discord" "crow-translate" ]; + surface = [ "kclockd" "yakuake" "telegram" "element" "crow-translate" ]; + }; + in builtins.listToAttrs (builtins.map (file: { name = ".config/autostart/${programs.${file}.fileName}"; value.source = programs.${file}.path; }) (devices.${inputs.config.nixos.system.networking.hostname} or [])); - persistence."/nix/rootfs/current/home/chn".directories = [ ".config/autostart" ]; - }; + environment.persistence = + let impermanence = inputs.config.nixos.system.impermanence; + in inputs.lib.mkIf impermanence.enable + { + "${impermanence.root}".users.chn.directories = [ ".config/autostart" ]; + }; }; } diff --git a/modules/user/chn/plasma/konsole.nix b/modules/user/chn/plasma/konsole.nix index 02c7f501..51717c89 100644 --- a/modules/user/chn/plasma/konsole.nix +++ b/modules/user/chn/plasma/konsole.nix @@ -63,13 +63,12 @@ inputs: "Terminal Features".BlinkingCursorEnabled.value = true; }; }; - home = - { - file.".local/share/konsole/Breeze.colorscheme".text = builtins.replaceStrings - [ "Opacity=1" ] [ "Opacity=0.9\nBlur=true" ] - (builtins.readFile "${inputs.pkgs.konsole}/share/konsole/Breeze.colorscheme"); - persistence."/nix/rootfs/current/home/chn".directories = [ ".local/share/konsole" ".local/share/yakuake" ]; - }; + home.file.".local/share/konsole/Breeze.colorscheme".text = builtins.replaceStrings + [ "Opacity=1" ] [ "Opacity=0.9\nBlur=true" ] + (builtins.readFile "${inputs.pkgs.konsole}/share/konsole/Breeze.colorscheme"); }; + environment.persistence = + let impermanence = inputs.config.nixos.system.impermanence; in inputs.lib.mkIf impermanence.enable + { "${impermanence.root}".users.chn.directories = [ ".local/share/konsole" ".local/share/yakuake" ]; }; }; }