{ inputs, lib, pkgs, pkgs-unstable, config, ... }: let completion = pkgs.stdenv.mkDerivation { name = "dnote-completion"; phases = [ "unpackPhase" "installPhase" ]; src = inputs.dnote; installPhase = '' mkdir -p $out/lib/dnote/zsh-completion/completions cp pkg/cli/dnote-completion.zsh $out/lib/dnote/zsh-completion/completions/_dnote ''; }; client = pkgs.stdenv.mkDerivation { name = "dnote-client"; phases = [ "installPhase" ]; installPhase = '' mkdir -p $out/bin cp ${pkgs-unstable.dnote}/bin/dnote-cli $out/bin/dnote ''; }; cfg = config.programs.dnote; in { options.programs.dnote = { enable = pkgs.lib.mkEnableOption "Enable dnote"; }; config = lib.mkIf cfg.enable { home.packages = [ client ]; home.shellAliases.dn = "dnote"; programs.zsh.initContent = '' fpath=(${completion}/lib/dnote/zsh-completion/completions $fpath) ''; }; }