aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/shells/zsh/oh-my-zsh
diff options
context:
space:
mode:
authorMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
committerMx Kookie <kookie@spacekookie.de>2020-10-31 19:35:09 +0100
commitc4625b175f8200f643fd6e11010932ea44c78433 (patch)
treebce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/shells/zsh/oh-my-zsh
parent49f735974dd103039ddc4cb576bb76555164a9e7 (diff)
parentd661aa56a8843e991261510c1bb28fdc2f6975ae (diff)
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7 git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/shells/zsh/oh-my-zsh')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/shells/zsh/oh-my-zsh/default.nix83
-rwxr-xr-xinfra/libkookie/nixpkgs/pkgs/shells/zsh/oh-my-zsh/update.sh19
2 files changed, 102 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/shells/zsh/oh-my-zsh/default.nix b/infra/libkookie/nixpkgs/pkgs/shells/zsh/oh-my-zsh/default.nix
new file mode 100644
index 000000000000..73fd6ceeb061
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/shells/zsh/oh-my-zsh/default.nix
@@ -0,0 +1,83 @@
+# This script was inspired by the ArchLinux User Repository package:
+#
+# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=oh-my-zsh-git
+{ stdenv, fetchFromGitHub }:
+
+stdenv.mkDerivation rec {
+ version = "2020-10-15";
+ pname = "oh-my-zsh";
+ rev = "5b717ab3e4bfb627a936d7c04367a39867734d63";
+
+ src = fetchFromGitHub {
+ inherit rev;
+ owner = "ohmyzsh";
+ repo = "ohmyzsh";
+ sha256 = "0qm0mdvcvf5s6ypbq7z1x286sdv6ii2yfqvv1dss7zqjbg5j08gz";
+ };
+
+ installPhase = ''
+ outdir=$out/share/oh-my-zsh
+ template=templates/zshrc.zsh-template
+
+ mkdir -p $outdir
+ cp -r * $outdir
+ cd $outdir
+
+ rm LICENSE.txt
+ rm -rf .git*
+
+ chmod -R +w templates
+
+ # Change the path to oh-my-zsh dir and disable auto-updating.
+ sed -i -e "s#ZSH=\$HOME/.oh-my-zsh#ZSH=$outdir#" \
+ -e 's/\# \(DISABLE_AUTO_UPDATE="true"\)/\1/' \
+ $template
+
+ chmod +w oh-my-zsh.sh
+
+ # Both functions expect oh-my-zsh to be in ~/.oh-my-zsh and try to
+ # modify the directory.
+ cat >> oh-my-zsh.sh <<- EOF
+
+ # Undefine functions that don't work on Nix.
+ unfunction uninstall_oh_my_zsh
+ unfunction upgrade_oh_my_zsh
+ EOF
+
+ # Look for .zsh_variables, .zsh_aliases, and .zsh_funcs, and source
+ # them, if found.
+ cat >> $template <<- EOF
+
+ # Load the variables.
+ if [ -f ~/.zsh_variables ]; then
+ . ~/.zsh_variables
+ fi
+
+ # Load the functions.
+ if [ -f ~/.zsh_funcs ]; then
+ . ~/.zsh_funcs
+ fi
+
+ # Load the aliases.
+ if [ -f ~/.zsh_aliases ]; then
+ . ~/.zsh_aliases
+ fi
+ EOF
+ '';
+
+ meta = with stdenv.lib; {
+ description = "A framework for managing your zsh configuration";
+ longDescription = ''
+ Oh My Zsh is a framework for managing your zsh configuration.
+
+ To copy the Oh My Zsh configuration file to your home directory, run
+ the following command:
+
+ $ cp -v $(nix-env -q --out-path oh-my-zsh | cut -d' ' -f3)/share/oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
+ '';
+ homepage = "https://ohmyz.sh/";
+ license = licenses.mit;
+ platforms = platforms.all;
+ maintainers = with maintainers; [ scolobb nequissimus ];
+ };
+}
diff --git a/infra/libkookie/nixpkgs/pkgs/shells/zsh/oh-my-zsh/update.sh b/infra/libkookie/nixpkgs/pkgs/shells/zsh/oh-my-zsh/update.sh
new file mode 100755
index 000000000000..738c0810737a
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/shells/zsh/oh-my-zsh/update.sh
@@ -0,0 +1,19 @@
+#!/usr/bin/env nix-shell
+#!nix-shell -i bash -p curl common-updater-scripts jq
+
+set -eu -o pipefail
+
+oldVersion="$(nix-instantiate --eval -E "with import ./. {}; lib.getVersion oh-my-zsh" | tr -d '"')"
+latestSha="$(curl -L -s https://api.github.com/repos/ohmyzsh/ohmyzsh/commits\?sha\=master\&since\=${oldVersion} | jq -r '.[0].sha')"
+
+if [ ! "null" = "${latestSha}" ]; then
+ latestDate="$(curl -L -s https://api.github.com/repos/ohmyzsh/ohmyzsh/commits/${latestSha} | jq '.commit.author.date' | sed 's|"\(.*\)T.*|\1|g')"
+ update-source-version oh-my-zsh "${latestSha}" --version-key=rev
+ update-source-version oh-my-zsh "${latestDate}" --ignore-same-hash
+ nixpkgs="$(git rev-parse --show-toplevel)"
+ default_nix="$nixpkgs/pkgs/shells/zsh/oh-my-zsh/default.nix"
+ git add "${default_nix}"
+ git commit -m "oh-my-zsh: ${oldVersion} -> ${latestDate}"
+else
+ echo "oh-my-zsh is already up-to-date"
+fi