diff options
Diffstat (limited to 'accounts/gkleen@skadhi/zsh/default.nix')
| -rw-r--r-- | accounts/gkleen@skadhi/zsh/default.nix | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/accounts/gkleen@skadhi/zsh/default.nix b/accounts/gkleen@skadhi/zsh/default.nix new file mode 100644 index 00000000..ddc69f0d --- /dev/null +++ b/accounts/gkleen@skadhi/zsh/default.nix | |||
| @@ -0,0 +1,106 @@ | |||
| 1 | { pkgs, lib, config, sysConfig, flakeInputs, ... }: | ||
| 2 | let | ||
| 3 | zshrc = pkgs.resholve.mkDerivation { | ||
| 4 | pname = "zshrc"; | ||
| 5 | version = "0.0.0"; | ||
| 6 | |||
| 7 | src = ./zshrc; | ||
| 8 | |||
| 9 | dontUnpack = true; | ||
| 10 | dontConfigure = true; | ||
| 11 | dontBuild = true; | ||
| 12 | |||
| 13 | installPhase = '' | ||
| 14 | mkdir -p $out/share | ||
| 15 | install "$src" $out/share/zshrc | ||
| 16 | ''; | ||
| 17 | |||
| 18 | solutions = { | ||
| 19 | default = { | ||
| 20 | scripts = [ "share/zshrc" ]; | ||
| 21 | interpreter = "none"; | ||
| 22 | inputs = with pkgs; [ | ||
| 23 | coreutils | ||
| 24 | rpm | ||
| 25 | binutils | ||
| 26 | squashfsTools | ||
| 27 | unzip | ||
| 28 | config.programs.git.package | ||
| 29 | magickWrapped | ||
| 30 | curl | ||
| 31 | file | ||
| 32 | gnutar | ||
| 33 | cpio | ||
| 34 | magic-wormhole | ||
| 35 | config.programs.zsh.package | ||
| 36 | util-linux | ||
| 37 | findutils | ||
| 38 | qrencode | ||
| 39 | tty-clock | ||
| 40 | config.programs.jq.package | ||
| 41 | eza | ||
| 42 | less | ||
| 43 | sysConfig.systemd.package | ||
| 44 | sysConfig.programs.ssh.package | ||
| 45 | gnused | ||
| 46 | miniserve | ||
| 47 | p7zip | ||
| 48 | ]; | ||
| 49 | execer = with pkgs; [ | ||
| 50 | "cannot:${lib.getExe' rpm "rpm2cpio"}" | ||
| 51 | "cannot:${lib.getExe' squashfsTools "unsquashfs"}" | ||
| 52 | "cannot:${lib.getExe' unzip "unzip"}" | ||
| 53 | "cannot:${lib.getExe config.programs.git.package}" | ||
| 54 | "cannot:${lib.getExe cpio}" | ||
| 55 | "cannot:${lib.getExe' magic-wormhole "wormhole"}" | ||
| 56 | "cannot:${lib.getExe' fuse "fusermount"}" | ||
| 57 | "cannot:${lib.getExe less}" | ||
| 58 | "cannot:${lib.getExe' sysConfig.systemd.package "systemctl"}" | ||
| 59 | "cannot:${lib.getExe sysConfig.programs.ssh.package}" | ||
| 60 | "cannot:${lib.getExe' p7zip "7z"}" | ||
| 61 | ]; | ||
| 62 | wrapper = with pkgs; [ | ||
| 63 | "${lib.getExe' magickWrapped "magick"}:${lib.getExe' imagemagick "magick"}" | ||
| 64 | ]; | ||
| 65 | fake = { | ||
| 66 | builtin = ["print"]; | ||
| 67 | external = lib.mapAttrsToList (_: cfg: cfg.program) sysConfig.security.wrappers; | ||
| 68 | }; | ||
| 69 | }; | ||
| 70 | }; | ||
| 71 | }; | ||
| 72 | magickWrapped = pkgs.symlinkJoin { | ||
| 73 | inherit (pkgs.imagemagick) name; | ||
| 74 | paths = [ pkgs.imagemagick ]; | ||
| 75 | |||
| 76 | buildInputs = with pkgs; [ makeWrapper ]; | ||
| 77 | postBuild = '' | ||
| 78 | wrapProgram $out/bin/magick \ | ||
| 79 | --prefix PATH : ${lib.makeBinPath (with pkgs; [ ghostscript ])} | ||
| 80 | ''; | ||
| 81 | }; | ||
| 82 | in { | ||
| 83 | config = { | ||
| 84 | programs.zsh.initContent = '' | ||
| 85 | source ${zshrc}/share/zshrc | ||
| 86 | ''; | ||
| 87 | programs.zsh.dirHashes = let | ||
| 88 | flakeHashes = lib.mapAttrs' (n: v: lib.nameValuePair (inputNames.${n} or n) (toString v)) flakeInputs; | ||
| 89 | inputNames = { | ||
| 90 | self = "nixos"; | ||
| 91 | }; | ||
| 92 | in flakeHashes // { | ||
| 93 | docs = "$HOME/documents"; | ||
| 94 | dl = "$HOME/Downloads"; | ||
| 95 | scrot = "$HOME/screenshots"; | ||
| 96 | media = "$HOME/media"; | ||
| 97 | }; | ||
| 98 | programs.starship.settings = { | ||
| 99 | directory.substitutions = lib.mapAttrs' (name: value: let | ||
| 100 | value' = builtins.unsafeDiscardStringContext value; | ||
| 101 | value'' = if lib.hasPrefix "$HOME/" value' then "~" + lib.removePrefix "$HOME" value' else value'; | ||
| 102 | in lib.nameValuePair value'' "~${name}" | ||
| 103 | ) config.programs.zsh.dirHashes; | ||
| 104 | }; | ||
| 105 | }; | ||
| 106 | } | ||
