From 8f9cf5f747690d2ac83bedbec736483ed094db08 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 16 Oct 2024 16:40:02 +0900 Subject: [PATCH 01/14] Add sequoia-sq for an option of OpenPGP implementation --- flake.nix | 1 + home-manager/common.nix | 2 +- home-manager/packages.nix | 2 +- home-manager/{gpg.nix => pgp.nix} | 17 +++++++++++++++-- 4 files changed, 18 insertions(+), 4 deletions(-) rename home-manager/{gpg.nix => pgp.nix} (93%) diff --git a/flake.nix b/flake.nix index 7931e24a7..96c0fea42 100644 --- a/flake.nix +++ b/flake.nix @@ -92,6 +92,7 @@ # https://github.com/numtide/treefmt/pull/250 treefmt2 markdownlint-cli2 + sequoia-sq # TODO: Remove after applied in home-manager. This devshell entry only used for development phase. ]) ++ (with homemade-pkgs; [ nix-hash-url ]); }; diff --git a/home-manager/common.nix b/home-manager/common.nix index b96f8af45..5ba9ccb36 100644 --- a/home-manager/common.nix +++ b/home-manager/common.nix @@ -12,7 +12,7 @@ ./bash.nix ./zsh.nix ./fish.nix - ./gpg.nix + ./pgp.nix ./ssh.nix ./git.nix ./editors.nix diff --git a/home-manager/packages.nix b/home-manager/packages.nix index f2fdd79a5..55a2ea406 100644 --- a/home-manager/packages.nix +++ b/home-manager/packages.nix @@ -44,8 +44,8 @@ gh ghq - # GPG gnupg + edge-pkgs.sequoia-sq # Alt `gpg` - nixos-24.05 does not backport recent versions and the older requires to rebuild. https://github.com/NixOS/nixpkgs/pull/331099 pass diff --git a/home-manager/gpg.nix b/home-manager/pgp.nix similarity index 93% rename from home-manager/gpg.nix rename to home-manager/pgp.nix index 002ef5519..25a49d9ad 100644 --- a/home-manager/gpg.nix +++ b/home-manager/pgp.nix @@ -1,6 +1,16 @@ { config, pkgs, ... }: -# ## FAQ - GPG +# # FAQ +# +# ## sequoia-sq and gpg +# +# See GH-830 +# +# ## sequoia-sq +# +# TODO: +# +# ## GPG # # - How to list keys? # - 1. `gpg --list-secret-keys --keyid-format=long` # The `sec` first section displays same text as `pub` by `gpg --list-keys --keyid-format=long` @@ -23,6 +33,10 @@ let day = 60 * 60 * 24; in { + sessionVariables = { + SEQUOIA_HOME = "${config.xdg.dataHome}/sequoia"; + }; + # https://github.com/nix-community/home-manager/blob/release-24.05/modules/services/gpg-agent.nix services.gpg-agent = { enable = pkgs.stdenv.isLinux; @@ -42,7 +56,6 @@ in }; # https://github.com/nix-community/home-manager/blob/release-24.05/modules/programs/gpg.nix - programs.gpg = { enable = true; From ac767e3a21ae76c0e58e7cb2ccf8c28a08f0fd47 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 16 Oct 2024 16:58:27 +0900 Subject: [PATCH 02/14] Fix attr namespace --- home-manager/pgp.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/home-manager/pgp.nix b/home-manager/pgp.nix index 25a49d9ad..bd9ea0b48 100644 --- a/home-manager/pgp.nix +++ b/home-manager/pgp.nix @@ -33,7 +33,7 @@ let day = 60 * 60 * 24; in { - sessionVariables = { + home.sessionVariables = { SEQUOIA_HOME = "${config.xdg.dataHome}/sequoia"; }; From 11b7406cc1f731fc079acd56ebe55323f12191c8 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Wed, 16 Oct 2024 17:04:13 +0900 Subject: [PATCH 03/14] Remove unfit SEQUOIA_HOME --- home-manager/pgp.nix | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/home-manager/pgp.nix b/home-manager/pgp.nix index bd9ea0b48..05c447612 100644 --- a/home-manager/pgp.nix +++ b/home-manager/pgp.nix @@ -33,9 +33,8 @@ let day = 60 * 60 * 24; in { - home.sessionVariables = { - SEQUOIA_HOME = "${config.xdg.dataHome}/sequoia"; - }; + # Don't set $SEQUOIA_HOME, it unified config and data, cache to one directory as same as gpg era. + # Use default $HOME instead, it respects XDG Base Directory Specification # https://github.com/nix-community/home-manager/blob/release-24.05/modules/services/gpg-agent.nix services.gpg-agent = { From 799ce064e3ef0cf2936dd7f4e7e1dfadb2fc5d32 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Fri, 18 Oct 2024 22:26:48 +0900 Subject: [PATCH 04/14] Replace "gnupg + gpg-agent + pass" with "sequoia-chameleon-gnupg + gpg-agent + gopass" --- config/powershell/Profile.ps1 | 2 +- flake.nix | 5 +++++ home-manager/common.nix | 4 ++-- home-manager/git.nix | 4 +++- home-manager/packages.nix | 5 ++++- home-manager/pgp.nix | 19 ++++++++++++++++++- home-manager/ssh.nix | 4 ++-- pkgs/default.nix | 4 +++- pkgs/gpg-alias-with-sq/default.nix | 7 +++++++ pkgs/gpg-alias-with-sq/gpg.bash | 1 + 10 files changed, 46 insertions(+), 9 deletions(-) create mode 100644 pkgs/gpg-alias-with-sq/default.nix create mode 100644 pkgs/gpg-alias-with-sq/gpg.bash diff --git a/config/powershell/Profile.ps1 b/config/powershell/Profile.ps1 index ccb4f4ac9..b0ae7bf2f 100644 --- a/config/powershell/Profile.ps1 +++ b/config/powershell/Profile.ps1 @@ -21,7 +21,7 @@ function la { # https://github.com/microsoft/winget-cli/issues/2498#issuecomment-1553863082 $env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User") # Specify `bash -i` to run the bash as interactive mode -[Environment]::SetEnvironmentVariable("RCLONE_PASSWORD_COMMAND", 'wsl.exe --exec bash -ic "pass show rclone"') +[Environment]::SetEnvironmentVariable("RCLONE_PASSWORD_COMMAND", 'wsl.exe --exec bash -ic "gopass show rclone"') Invoke-Expression (&starship init powershell) Invoke-Expression (& { (zoxide init powershell | Out-String) }) diff --git a/flake.nix b/flake.nix index d8893021a..13dd88c90 100644 --- a/flake.nix +++ b/flake.nix @@ -64,6 +64,8 @@ TYPOS_LSP_PATH = pkgs.lib.getExe pkgs.typos-lsp; # For vscode typos extension + GOPASS_GPG_BINARY = "${pkgs.lib.getBin edge-pkgs.sequoia-chameleon-gnupg}/bin/gpg-sq"; + buildInputs = (with pkgs; [ # https://github.com/NixOS/nix/issues/730#issuecomment-162323824 @@ -93,6 +95,8 @@ treefmt2 markdownlint-cli2 sequoia-sq # TODO: Remove after applied in home-manager. This devshell entry only used for development phase. + sequoia-chameleon-gnupg # TODO: Remove after applied in home-manager. This devshell entry only used for development phase. + gopass ]) ++ (with homemade-pkgs; [ nix-hash-url ]); }; @@ -124,6 +128,7 @@ "la" "lat" "zed" + "gpg-alias-with-sq" "ghqf" "git-delete-merged-branches" "git-log-fzf" diff --git a/home-manager/common.nix b/home-manager/common.nix index 5ba9ccb36..b8fbddd0e 100644 --- a/home-manager/common.nix +++ b/home-manager/common.nix @@ -65,8 +65,8 @@ STACK_XDG = "https://github.com/commercialhaskell/stack/blob/72f0a1273dd1121740501a159988fc23df2fb362/doc/stack_root.md?plain=1#L7-L11"; - # Don't add needless quotation in the arguments. For example `pass show 'rclone'` does not work. It should be `pass show rclone`. - RCLONE_PASSWORD_COMMAND = "${lib.getExe pkgs.pass} show rclone"; + # Don't add needless quotation in the arguments. For example `gopass show 'rclone'` does not work. It should be `gopass show rclone`. + RCLONE_PASSWORD_COMMAND = "${lib.getExe pkgs.gopass} show rclone"; }; sessionPath = [ diff --git a/home-manager/git.nix b/home-manager/git.nix index 503eae4b2..f5f613d51 100644 --- a/home-manager/git.nix +++ b/home-manager/git.nix @@ -57,9 +57,11 @@ }; gpg = { - # I prefer GPG sign rather than SSH key to consider revocation and expiration usecase. + # I prefer PGP sign rather than SSH key to consider revocation and expiration usecase. # See https://github.com/kachick/dotfiles/issues/289 for detail. format = "openpgp"; + + program = "${lib.getBin pkgs.sequoia-chameleon-gnupg}/gpg-sq"; # GH-830 }; commit = { diff --git a/home-manager/packages.nix b/home-manager/packages.nix index 55a2ea406..a090b9dfb 100644 --- a/home-manager/packages.nix +++ b/home-manager/packages.nix @@ -46,8 +46,10 @@ gnupg edge-pkgs.sequoia-sq # Alt `gpg` - nixos-24.05 does not backport recent versions and the older requires to rebuild. https://github.com/NixOS/nixpkgs/pull/331099 + edge-pkgs.sequoia-chameleon-gnupg - pass + gopass # Alt `pass` for password-store. Other candidates: prs + # Do not use ripasso-cursive for now. It only provides TUI, not a replacement of CLI. And currently unstable on my NixOS. # Do not specify vim and the plugins at here, it made collisions from home-manager vim module. # See following issues @@ -179,4 +181,5 @@ prs gredit preview + gpg-alias-with-sq ]) diff --git a/home-manager/pgp.nix b/home-manager/pgp.nix index ceb61778d..c31f854d1 100644 --- a/home-manager/pgp.nix +++ b/home-manager/pgp.nix @@ -1,4 +1,9 @@ -{ config, pkgs, ... }: +{ + config, + pkgs, + edge-pkgs, + ... +}: # # FAQ # @@ -6,6 +11,10 @@ # # See GH-830 # +# If you faced to decrypt error with gpg-sq, check it with `sq decrypt`. It displays error details. +# For example, `1: AEAD Encrypted Data Packet v1 is not considered secure` +# This is caused by encrypted non configured gpg for the AEAD. Disable it with showpref/setpref if you still use gpg. +# # ## sequoia-sq # # TODO: @@ -54,15 +63,22 @@ in enableSshSupport = false; }; + home.sessionVariables = { + GOPASS_GPG_BINARY = "${pkgs.lib.getBin edge-pkgs.sequoia-chameleon-gnupg}/bin/gpg-sq"; + }; + # https://github.com/nix-community/home-manager/blob/release-24.05/modules/programs/gpg.nix programs.gpg = { enable = true; + package = edge-pkgs.sequoia-chameleon-gnupg; # TODO: Consider to set pkgs.emptyDirectory # Preferring XDG_DATA_HOME rather than XDG_CONFIG_HOME from following examples # - https://wiki.archlinux.org/title/XDG_Base_Directory # - https://github.com/nix-community/home-manager/blob/5171f5ef654425e09d9c2100f856d887da595437/modules/programs/gpg.nix#L192 homedir = "${config.xdg.dataHome}/gnupg"; + # Used for `gpg.conf`. I don't know how to specify `gpgconf` with this. + # TODO: Set gpg binary as sequoia-chameleon-gnupg. AFAIK I don't actually need it for now, because I'm not using dependent tools. However it is ideal config. # - How to read `--list-keys` - https://unix.stackexchange.com/questions/613839/help-understanding-gpg-list-keys-output # - Ed448 in GitHub is not yet supported - https://github.com/orgs/community/discussions/45937 settings = { @@ -76,5 +92,6 @@ in # https://github.com/nix-community/home-manager/blob/release-24.05/modules/programs/password-store.nix programs.password-store = { enable = true; + package = pkgs.gopass; }; } diff --git a/home-manager/ssh.nix b/home-manager/ssh.nix index 6206243c9..fc2be6791 100644 --- a/home-manager/ssh.nix +++ b/home-manager/ssh.nix @@ -24,9 +24,9 @@ in SSH_ASKPASS = pkgs.lib.getExe ( pkgs.writeShellApplication { name = "ssh-ask-pass"; - text = "pass show ssh-pass"; + text = "gopass show ssh-pass"; meta.description = "GH-714. Required to be wrapped with one command because of SSH_ASKPASS does not accept arguments."; - runtimeInputs = with pkgs; [ pass ]; + runtimeInputs = with pkgs; [ gopass ]; } ); }; diff --git a/pkgs/default.nix b/pkgs/default.nix index d62e6956c..3b8749409 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,6 +1,6 @@ { pkgs, edge-pkgs, ... }: -{ +rec { bump_completions = import ./bump_completions { inherit pkgs edge-pkgs; }; bump_gomod = import ./bump_gomod { inherit pkgs; }; @@ -20,6 +20,8 @@ zed = import ./zed { inherit pkgs edge-pkgs; }; + gpg-alias-with-sq = import ./gpg-alias-with-sq { inherit pkgs edge-pkgs; }; + walk = import ./walk { inherit pkgs; }; ir = pkgs.callPackage ./ir { }; diff --git a/pkgs/gpg-alias-with-sq/default.nix b/pkgs/gpg-alias-with-sq/default.nix new file mode 100644 index 000000000..82d500517 --- /dev/null +++ b/pkgs/gpg-alias-with-sq/default.nix @@ -0,0 +1,7 @@ +{ pkgs, edge-pkgs, ... }: +pkgs.writeShellApplication rec { + name = "gpg"; # This will be the alias. + text = builtins.readFile ./${name}.bash; + runtimeInputs = [ edge-pkgs.sequoia-chameleon-gnupg ]; + meta.description = "See GH-830"; +} diff --git a/pkgs/gpg-alias-with-sq/gpg.bash b/pkgs/gpg-alias-with-sq/gpg.bash new file mode 100644 index 000000000..36887decd --- /dev/null +++ b/pkgs/gpg-alias-with-sq/gpg.bash @@ -0,0 +1 @@ +gpg-sq "$@" From 016a8df1d1d3d6578266fa3f80c56aefe6d7a518 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Fri, 18 Oct 2024 22:30:14 +0900 Subject: [PATCH 05/14] Remove temporal code used in early development phase --- flake.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/flake.nix b/flake.nix index 13dd88c90..2193fdb2d 100644 --- a/flake.nix +++ b/flake.nix @@ -64,8 +64,6 @@ TYPOS_LSP_PATH = pkgs.lib.getExe pkgs.typos-lsp; # For vscode typos extension - GOPASS_GPG_BINARY = "${pkgs.lib.getBin edge-pkgs.sequoia-chameleon-gnupg}/bin/gpg-sq"; - buildInputs = (with pkgs; [ # https://github.com/NixOS/nix/issues/730#issuecomment-162323824 @@ -94,9 +92,6 @@ # https://github.com/numtide/treefmt/pull/250 treefmt2 markdownlint-cli2 - sequoia-sq # TODO: Remove after applied in home-manager. This devshell entry only used for development phase. - sequoia-chameleon-gnupg # TODO: Remove after applied in home-manager. This devshell entry only used for development phase. - gopass ]) ++ (with homemade-pkgs; [ nix-hash-url ]); }; From f9421e4e1fc8124fff101aeccaeeeed64bb676f8 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Fri, 18 Oct 2024 22:34:30 +0900 Subject: [PATCH 06/14] Remove gnupg, just a missing commit --- home-manager/packages.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home-manager/packages.nix b/home-manager/packages.nix index a090b9dfb..6af3f3c52 100644 --- a/home-manager/packages.nix +++ b/home-manager/packages.nix @@ -44,7 +44,6 @@ gh ghq - gnupg edge-pkgs.sequoia-sq # Alt `gpg` - nixos-24.05 does not backport recent versions and the older requires to rebuild. https://github.com/NixOS/nixpkgs/pull/331099 edge-pkgs.sequoia-chameleon-gnupg From 9c5c251ea56aa4b080496ac704d3c391174e1de4 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Fri, 18 Oct 2024 22:38:35 +0900 Subject: [PATCH 07/14] Fix gpg-sq path as same as I did in gopass --- home-manager/git.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/home-manager/git.nix b/home-manager/git.nix index f5f613d51..b7de3e37e 100644 --- a/home-manager/git.nix +++ b/home-manager/git.nix @@ -1,6 +1,7 @@ { pkgs, homemade-pkgs, + edge-pkgs, lib, ... }: @@ -61,7 +62,7 @@ # See https://github.com/kachick/dotfiles/issues/289 for detail. format = "openpgp"; - program = "${lib.getBin pkgs.sequoia-chameleon-gnupg}/gpg-sq"; # GH-830 + program = "${pkgs.lib.getBin edge-pkgs.sequoia-chameleon-gnupg}/bin/gpg-sq"; # GH-830 }; commit = { From 20417ce3cc5017ae69849c948f63e6bba1ca2118 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Fri, 18 Oct 2024 22:38:46 +0900 Subject: [PATCH 08/14] Remove unused rec now --- pkgs/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/default.nix b/pkgs/default.nix index 3b8749409..471daab97 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,6 +1,6 @@ { pkgs, edge-pkgs, ... }: -rec { +{ bump_completions = import ./bump_completions { inherit pkgs edge-pkgs; }; bump_gomod = import ./bump_gomod { inherit pkgs; }; From f967b062206ac3f6d1c46f5ff20085f906916d10 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Sun, 20 Oct 2024 14:38:07 +0900 Subject: [PATCH 09/14] Update comment --- home-manager/packages.nix | 3 ++- home-manager/pgp.nix | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/home-manager/packages.nix b/home-manager/packages.nix index 7dfdf1cac..bb427276a 100644 --- a/home-manager/packages.nix +++ b/home-manager/packages.nix @@ -47,7 +47,8 @@ edge-pkgs.sequoia-sq # Alt `gpg` - nixos-24.05 does not backport recent versions and the older requires to rebuild. https://github.com/NixOS/nixpkgs/pull/331099 edge-pkgs.sequoia-chameleon-gnupg - gopass # Alt `pass` for password-store. Other candidates: prs + # Alt `pass` for password-store. Candidates: gopass, prs + gopass # They will respect pass comaptibility: https://github.com/gopasspw/gopass/issues/1365#issuecomment-719655627 # Do not use ripasso-cursive for now. It only provides TUI, not a replacement of CLI. And currently unstable on my NixOS. # Do not specify vim and the plugins at here, it made collisions from home-manager vim module. diff --git a/home-manager/pgp.nix b/home-manager/pgp.nix index c31f854d1..8b52fe0df 100644 --- a/home-manager/pgp.nix +++ b/home-manager/pgp.nix @@ -70,7 +70,7 @@ in # https://github.com/nix-community/home-manager/blob/release-24.05/modules/programs/gpg.nix programs.gpg = { enable = true; - package = edge-pkgs.sequoia-chameleon-gnupg; # TODO: Consider to set pkgs.emptyDirectory + package = edge-pkgs.sequoia-chameleon-gnupg; # Also will be respected in gpg-agent: https://github.com/nix-community/home-manager/blob/5171f5ef654425e09d9c2100f856d887da595437/modules/services/gpg-agent.nix#L8C3-L8C9 # Preferring XDG_DATA_HOME rather than XDG_CONFIG_HOME from following examples # - https://wiki.archlinux.org/title/XDG_Base_Directory From e7dfe0c4be439aed4a54744e4008450ecc182432 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Sun, 20 Oct 2024 15:52:16 +0900 Subject: [PATCH 10/14] Remove gpg-sq alias for gpg, keep original gpg now now --- flake.nix | 1 - home-manager/packages.nix | 2 +- home-manager/pgp.nix | 5 +++-- pkgs/default.nix | 2 -- pkgs/gpg-alias-with-sq/default.nix | 7 ------- pkgs/gpg-alias-with-sq/gpg.bash | 1 - 6 files changed, 4 insertions(+), 14 deletions(-) delete mode 100644 pkgs/gpg-alias-with-sq/default.nix delete mode 100644 pkgs/gpg-alias-with-sq/gpg.bash diff --git a/flake.nix b/flake.nix index bb6c9e1fe..f8400aee0 100644 --- a/flake.nix +++ b/flake.nix @@ -123,7 +123,6 @@ "la" "lat" "zed" - "gpg-alias-with-sq" "ghqf" "git-delete-merged-branches" "git-log-fzf" diff --git a/home-manager/packages.nix b/home-manager/packages.nix index bb427276a..3ba985337 100644 --- a/home-manager/packages.nix +++ b/home-manager/packages.nix @@ -46,6 +46,7 @@ edge-pkgs.sequoia-sq # Alt `gpg` - nixos-24.05 does not backport recent versions and the older requires to rebuild. https://github.com/NixOS/nixpkgs/pull/331099 edge-pkgs.sequoia-chameleon-gnupg + gnupg # Also keep original GPG for now. sequoia-chameleon-gnupg does not support some crucial toolset. etc: `gpg --edit-key`, `gpgconf` # Alt `pass` for password-store. Candidates: gopass, prs gopass # They will respect pass comaptibility: https://github.com/gopasspw/gopass/issues/1365#issuecomment-719655627 @@ -180,5 +181,4 @@ archive-home-files gredit preview - gpg-alias-with-sq ]) diff --git a/home-manager/pgp.nix b/home-manager/pgp.nix index 8b52fe0df..65a7ab162 100644 --- a/home-manager/pgp.nix +++ b/home-manager/pgp.nix @@ -70,7 +70,8 @@ in # https://github.com/nix-community/home-manager/blob/release-24.05/modules/programs/gpg.nix programs.gpg = { enable = true; - package = edge-pkgs.sequoia-chameleon-gnupg; # Also will be respected in gpg-agent: https://github.com/nix-community/home-manager/blob/5171f5ef654425e09d9c2100f856d887da595437/modules/services/gpg-agent.nix#L8C3-L8C9 + # package = edge-pkgs.sequoia-chameleon-gnupg; # Also will be respected in gpg-agent: https://github.com/nix-community/home-manager/blob/5171f5ef654425e09d9c2100f856d887da595437/modules/services/gpg-agent.nix#L8C3-L8C9 + # However I prefer original gnupg for now, sequoia-chameleon-gnupg does not support crucial features for GPG toolset (etc. `gpg --edit-key`, `gpgconf`) # Preferring XDG_DATA_HOME rather than XDG_CONFIG_HOME from following examples # - https://wiki.archlinux.org/title/XDG_Base_Directory @@ -92,6 +93,6 @@ in # https://github.com/nix-community/home-manager/blob/release-24.05/modules/programs/password-store.nix programs.password-store = { enable = true; - package = pkgs.gopass; + package = pkgs.gopass; # Setting package is not a aliasing command, however I would try this for now. https://github.com/gopasspw/gopass/blob/70c56f9102999661b54e28c28fa2d63fa5fc813b/docs/setup.md?plain=1#L292-L298 }; } diff --git a/pkgs/default.nix b/pkgs/default.nix index e4959c84d..0a5b7f585 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -20,8 +20,6 @@ zed = import ./zed { inherit pkgs edge-pkgs; }; - gpg-alias-with-sq = import ./gpg-alias-with-sq { inherit pkgs edge-pkgs; }; - walk = import ./walk { inherit pkgs; }; ir = pkgs.callPackage ./ir { }; diff --git a/pkgs/gpg-alias-with-sq/default.nix b/pkgs/gpg-alias-with-sq/default.nix deleted file mode 100644 index 82d500517..000000000 --- a/pkgs/gpg-alias-with-sq/default.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, edge-pkgs, ... }: -pkgs.writeShellApplication rec { - name = "gpg"; # This will be the alias. - text = builtins.readFile ./${name}.bash; - runtimeInputs = [ edge-pkgs.sequoia-chameleon-gnupg ]; - meta.description = "See GH-830"; -} diff --git a/pkgs/gpg-alias-with-sq/gpg.bash b/pkgs/gpg-alias-with-sq/gpg.bash deleted file mode 100644 index 36887decd..000000000 --- a/pkgs/gpg-alias-with-sq/gpg.bash +++ /dev/null @@ -1 +0,0 @@ -gpg-sq "$@" From 091e96a7bc4cc325a75398ce6ae31b2e017c99b8 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Sun, 20 Oct 2024 16:23:48 +0900 Subject: [PATCH 11/14] Extract zcompdump path with zsh only variable --- home-manager/zsh.nix | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/home-manager/zsh.nix b/home-manager/zsh.nix index 97ea1be55..e4f46c3e8 100644 --- a/home-manager/zsh.nix +++ b/home-manager/zsh.nix @@ -27,11 +27,14 @@ # https://github.com/nix-community/home-manager/blob/8c731978f0916b9a904d67a0e53744ceff47882c/modules/programs/zsh.nix#L25C3-L25C10 dotDir = ".config/zsh"; - localVariables = { + localVariables = rec { # This is a minimum note for home-manager dead case such as https://github.com/kachick/dotfiles/issues/680#issuecomment-2353820508 PROMPT = '' %~ %? %# > ''; + + ZCOMPDUMP_CACHE_DIR = "${config.xdg.cacheHome}/zsh"; + ZCOMPDUMP_CACHE_PATH = "${ZCOMPDUMP_CACHE_DIR}/zcompdump-${pkgs.zsh.version}"; }; history = { @@ -127,19 +130,17 @@ # speed - https://gist.github.com/ctechols/ca1035271ad134841284 # both - https://github.com/kachick/dotfiles/pull/155 _compinit_with_interval() { - local -r dump_dir="${config.xdg.cacheHome}/zsh" - local -r dump_path="$dump_dir/zcompdump-$ZSH_VERSION" # seconds * minutes * hours local -r threshold="$((60 * 60 * 3))" - if [ -e "$dump_path" ] && [ "$(_elapsed_seconds_for "$dump_path")" -le "$threshold" ]; then + if [ -e "$ZCOMPDUMP_CACHE_PATH" ] && [ "$(_elapsed_seconds_for "$ZCOMPDUMP_CACHE_PATH")" -le "$threshold" ]; then # https://zsh.sourceforge.io/Doc/Release/Completion-System.html#Use-of-compinit # -C omit to check new functions - compinit -C -d "$dump_path" + compinit -C -d "$ZCOMPDUMP_CACHE_PATH" else - ${lib.getBin pkgs.coreutils}/bin/mkdir -p "$dump_dir" - compinit -d "$dump_path" - ${lib.getBin pkgs.coreutils}/bin/touch "$dump_path" # Ensure to update timestamp + ${lib.getBin pkgs.coreutils}/bin/mkdir -p "$ZCOMPDUMP_CACHE_DIR" + compinit -d "$ZCOMPDUMP_CACHE_PATH" + ${lib.getBin pkgs.coreutils}/bin/touch "$ZCOMPDUMP_CACHE_PATH" # Ensure to update timestamp fi } ''; From ed362ed3a205d54fb8ba351f7c94c8d9ac081c49 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Sun, 20 Oct 2024 16:34:32 +0900 Subject: [PATCH 12/14] Remove ZCOMPDUMP_CACHE in each home-manager activation Without this, no completion changes after packages changes, it makes much confusion --- home-manager/zsh.nix | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/home-manager/zsh.nix b/home-manager/zsh.nix index e4f46c3e8..14287d818 100644 --- a/home-manager/zsh.nix +++ b/home-manager/zsh.nix @@ -6,6 +6,10 @@ ... }: +let + ZCOMPDUMP_CACHE_DIR = "${config.xdg.cacheHome}/zsh"; + ZCOMPDUMP_CACHE_PATH = "${ZCOMPDUMP_CACHE_DIR}/zcompdump-${pkgs.zsh.version}"; +in { services.gpg-agent.enableZshIntegration = true; programs.starship.enableZshIntegration = true; @@ -15,6 +19,12 @@ # Avoid nested zellij in host and remote login as container programs.zellij.enableZshIntegration = false; + home.activation.refreshZcompdumpCache = config.lib.dag.entryAnywhere '' + if [[ -v oldGenPath ]]; then + run ${lib.getExe pkgs.zsh} --interactive -c 'compinit -C -d "${ZCOMPDUMP_CACHE_PATH}"' + fi + ''; + # https://nixos.wiki/wiki/Zsh # https://zsh.sourceforge.io/Doc/Release/Options.html # https://github.com/nix-community/home-manager/blob/release-24.05/modules/programs/zsh.nix @@ -27,14 +37,13 @@ # https://github.com/nix-community/home-manager/blob/8c731978f0916b9a904d67a0e53744ceff47882c/modules/programs/zsh.nix#L25C3-L25C10 dotDir = ".config/zsh"; - localVariables = rec { + localVariables = { + inherit ZCOMPDUMP_CACHE_DIR ZCOMPDUMP_CACHE_PATH; + # This is a minimum note for home-manager dead case such as https://github.com/kachick/dotfiles/issues/680#issuecomment-2353820508 PROMPT = '' %~ %? %# > ''; - - ZCOMPDUMP_CACHE_DIR = "${config.xdg.cacheHome}/zsh"; - ZCOMPDUMP_CACHE_PATH = "${ZCOMPDUMP_CACHE_DIR}/zcompdump-${pkgs.zsh.version}"; }; history = { From d6a50575eee6f4f4e9aa377ade70ffbade520df0 Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Sun, 20 Oct 2024 16:42:36 +0900 Subject: [PATCH 13/14] Fix to handle cache --- home-manager/zsh.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/home-manager/zsh.nix b/home-manager/zsh.nix index 14287d818..df97b851e 100644 --- a/home-manager/zsh.nix +++ b/home-manager/zsh.nix @@ -21,7 +21,7 @@ in home.activation.refreshZcompdumpCache = config.lib.dag.entryAnywhere '' if [[ -v oldGenPath ]]; then - run ${lib.getExe pkgs.zsh} --interactive -c 'compinit -C -d "${ZCOMPDUMP_CACHE_PATH}"' + run ${lib.getExe pkgs.zsh} --interactive -c 'compinit -d "${ZCOMPDUMP_CACHE_PATH}"' fi ''; @@ -147,6 +147,8 @@ in # -C omit to check new functions compinit -C -d "$ZCOMPDUMP_CACHE_PATH" else + # For refreshing the cache + ${lib.getBin pkgs.coreutils}/bin/mkdir -p "$ZCOMPDUMP_CACHE_DIR" compinit -d "$ZCOMPDUMP_CACHE_PATH" ${lib.getBin pkgs.coreutils}/bin/touch "$ZCOMPDUMP_CACHE_PATH" # Ensure to update timestamp From b578278091b9d4a898b33c9cf127015d41c2c96f Mon Sep 17 00:00:00 2001 From: Kenichi Kamiya Date: Sun, 20 Oct 2024 16:46:14 +0900 Subject: [PATCH 14/14] As same as in zsh code --- home-manager/zsh.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home-manager/zsh.nix b/home-manager/zsh.nix index df97b851e..83a7be76b 100644 --- a/home-manager/zsh.nix +++ b/home-manager/zsh.nix @@ -21,7 +21,9 @@ in home.activation.refreshZcompdumpCache = config.lib.dag.entryAnywhere '' if [[ -v oldGenPath ]]; then + run ${lib.getBin pkgs.coreutils}/bin/mkdir -p '${ZCOMPDUMP_CACHE_DIR}' run ${lib.getExe pkgs.zsh} --interactive -c 'compinit -d "${ZCOMPDUMP_CACHE_PATH}"' + run ${lib.getBin pkgs.coreutils}/bin/touch '${ZCOMPDUMP_CACHE_PATH}' # Ensure to update timestamp fi '';