diff options
-rw-r--r-- | bashrc.d/shellrc | 5 | ||||
-rw-r--r-- | flake.lock | 25 | ||||
-rw-r--r-- | flake.nix | 71 | ||||
-rwxr-xr-x | install | 19 | ||||
-rw-r--r-- | shellrc-desktop.d/desktop (renamed from shellrc.d-desktop/desktop) | 0 | ||||
-rw-r--r-- | shellrc-desktop.d/shortcuts (renamed from shellrc.d-desktop/shortcuts) | 0 | ||||
-rw-r--r-- | shellrc-desktop.d/ssh (renamed from shellrc.d-desktop/ssh) | 0 | ||||
-rw-r--r-- | shellrc-desktop.d/sway (renamed from shellrc.d-desktop/sway) | 0 | ||||
-rw-r--r-- | shellrc-desktop.d/xorg (renamed from shellrc.d-desktop/xorg) | 0 | ||||
-rw-r--r-- | zshrc | 5 | ||||
-rw-r--r-- | zshrc.d/prompt | 3 | ||||
-rw-r--r-- | zshrc.d/shellrc | 5 |
12 files changed, 116 insertions, 17 deletions
diff --git a/bashrc.d/shellrc b/bashrc.d/shellrc deleted file mode 100644 index e938444..0000000 --- a/bashrc.d/shellrc +++ /dev/null @@ -1,5 +0,0 @@ -# vim: ft=sh - -for sh in /usr/share/shellrc/*; do - [ -r "$sh" ] && . "$sh" -done diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..6ad3dfd --- /dev/null +++ b/flake.lock @@ -0,0 +1,25 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 1648219316, + "narHash": "sha256-Ctij+dOi0ZZIfX5eMhgwugfvB+WZSrvVNAyAuANOsnQ=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "30d3d79b7d3607d56546dd2a6b49e156ba0ec634", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..ec21822 --- /dev/null +++ b/flake.nix @@ -0,0 +1,71 @@ +{ + description = "Cynerd's shell configuration"; + + outputs = { self, nixpkgs }: { + + nixosModule = { config, lib, pkgs, ... }: + with lib; + let + zsh-completion = pkgs.stdenv.mkDerivation rec { + name = "shellrc-completion"; + src = ./.; + nativeBuildInputs = [ pkgs.installShellFiles ]; + installPhase = '' + for comp in bash-completion/*; do + installShellCompletion --bash --name "$${comp##*/}.bash" "$comp" + done + for comp in zsh-completion/*; do + installShellCompletion --zsh --name "$${comp##*/}" "$comp" + done + ''; + }; + in { + + options = { + programs.shellrc = { + enable = mkOption { + type = types.bool; + default = false; + description = "If shellrc should be enabled."; + }; + desktop = mkOption { + type = types.bool; + default = false; + description = "If shellrc's desktop specific files should be used."; + }; + }; + }; + + config = mkIf config.programs.shellrc.enable { + environment.loginShellInit = '' + for sh in ${./shellrc.d}/*; do + [ -r "$sh" ] && . "$sh" + done + '' + optionalString config.programs.shellrc.desktop '' + for sh in ${./shellrc-desktop.d}/*; do + [ -r "$sh" ] && . "$sh" + done + ''; + + programs.bash.loginShellInit = '' + for sh in ${./bashrc.d}/*; do + [ -r "$sh" ] && . "$sh" + done + ''; + + programs.zsh.loginShellInit = mkIf config.programs.zsh.enable '' + for sh in ${./zshrc.d}/*; do + [ -r "$sh" ] && . "$sh" + done + ''; + + environment.systemPackages = [ + zsh-completion + ]; + + }; + + }; + + }; +} @@ -60,20 +60,35 @@ fi if $U_DESKTOP; then mkdir -p "$I_PREFIX/usr/share/shellrc" - cp -r shellrc.d-desktop/. "$I_PREFIX/usr/share/shellrc/" + cp -r shellrc-desktop.d/. "$I_PREFIX/usr/share/shellrc/" fi if $U_BASH; then mkdir -p "$I_PREFIX/etc/bash" cp -r bashrc.d/. "$I_PREFIX/etc/bash/bashrc.d" + cat >"$I_PREFIX/etc/bash/bashrc.d/shellrc" <<-"EOF" + for sh in /usr/share/shellrc/*; do + [ -r "$sh" ] && . "$sh" + done + EOF mkdir -p "$I_PREFIX/usr/share/bash-completion/completions" cp -r bash-completion/. "$I_PREFIX/usr/share/bash-completion/completions/" fi if $U_ZSH; then mkdir -p "$I_PREFIX/etc/zsh" - cp zshrc "$I_PREFIX/etc/zsh/zshrc" + cat >"$I_PREFIX/etc/zsh/zshrc" <<-"EOF" + [[ -o interactive ]] || return # skip on initialization if not interactive + for sh in /etc/zsh/zshrc.d/*; do + [ -r "$sh" ] && . "$sh" + done + EOF cp -r zshrc.d/. "$I_PREFIX/etc/zsh/zshrc.d" + cat >"$I_PREFIX/etc/zsh/zshrc.d/shellrc" <<-"EOF" + for sh in /usr/share/shellrc/*; do + [ -r "$sh" ] && . "$sh" + done + EOF mkdir -p "$I_PREFIX/usr/share/zsh/site-functions" cp -r zsh-completion/. "$I_PREFIX/usr/share/zsh/site-functions" fi diff --git a/shellrc.d-desktop/desktop b/shellrc-desktop.d/desktop index 64f0431..64f0431 100644 --- a/shellrc.d-desktop/desktop +++ b/shellrc-desktop.d/desktop diff --git a/shellrc.d-desktop/shortcuts b/shellrc-desktop.d/shortcuts index 4be240a..4be240a 100644 --- a/shellrc.d-desktop/shortcuts +++ b/shellrc-desktop.d/shortcuts diff --git a/shellrc.d-desktop/ssh b/shellrc-desktop.d/ssh index 7a1b71f..7a1b71f 100644 --- a/shellrc.d-desktop/ssh +++ b/shellrc-desktop.d/ssh diff --git a/shellrc.d-desktop/sway b/shellrc-desktop.d/sway index 1032a91..1032a91 100644 --- a/shellrc.d-desktop/sway +++ b/shellrc-desktop.d/sway diff --git a/shellrc.d-desktop/xorg b/shellrc-desktop.d/xorg index 91c9f07..91c9f07 100644 --- a/shellrc.d-desktop/xorg +++ b/shellrc-desktop.d/xorg @@ -1,5 +0,0 @@ -[[ -o interactive ]] || return # skip on initialization if not interactive - -for sh in /etc/zsh/zshrc.d/*; do - [ -r "$sh" ] && . "$sh" -done diff --git a/zshrc.d/prompt b/zshrc.d/prompt index 08e7ad1..72cbf44 100644 --- a/zshrc.d/prompt +++ b/zshrc.d/prompt @@ -1,5 +1,8 @@ # vim: ft=zsh +# Disable default prompt +command -v prompt >/dev/null && prompt off + [ $UID -eq 0 ] && NCOLOR="red" || NCOLOR="green" PROMPT="%(?..%{$fg_bold[yellow]%}EXIT: %? )%{$fg_bold[$NCOLOR]%}%n@%m:%{$fg_bold[blue]%}%1~%{$fg_bold[$NCOLOR]%}%(!.#.$)%{$reset_color%} " diff --git a/zshrc.d/shellrc b/zshrc.d/shellrc deleted file mode 100644 index 049e5fc..0000000 --- a/zshrc.d/shellrc +++ /dev/null @@ -1,5 +0,0 @@ -# vim: ft=zsh - -for sh in /usr/share/shellrc/*; do - [ -r "$sh" ] && . "$sh" -done |