aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatharina Fey <kookie@spacekookie.de>2019-10-05 22:10:04 +0000
committerKatharina Fey <kookie@spacekookie.de>2019-10-05 22:10:04 +0000
commitf700d4b0404169f7e4beab940890a53de4cb79ba (patch)
tree9b0286f1dbb5515eafd178040282db60e0d26054
parentc04d9504fa2ae8f447ef05a1e7ddb3b21ed06af9 (diff)
Adding nix and base modules
-rw-r--r--modules/base/default.nix8
-rw-r--r--modules/base/fish/alias.fish19
-rw-r--r--modules/base/fish/binds.fish1
-rw-r--r--modules/base/fish/config.fish28
-rw-r--r--modules/base/fish/config.nix29
-rw-r--r--modules/base/fish/default.nix10
-rw-r--r--modules/base/fish/functions/__fancy_history.fish5
-rw-r--r--modules/base/fish/functions/__history_previous_command.fish8
-rw-r--r--modules/base/fish/functions/__history_previous_command_arguments.fish9
-rw-r--r--modules/base/fish/functions/__kakoune.fish28
-rw-r--r--modules/base/fish/functions/__skim_cd.fish6
-rw-r--r--modules/base/fish/functions/e.fish12
-rw-r--r--modules/base/fish/functions/fish_prompt.fish34
-rw-r--r--modules/base/fish/functions/fish_right_prompt.fish1
-rw-r--r--modules/base/fish/functions/fish_user_key_bindings.fish6
-rw-r--r--modules/base/fish/functions/gen-shell.fish22
-rw-r--r--modules/base/fish/functions/k.fish18
-rw-r--r--modules/base/fish/functions/nrepl.fish7
-rw-r--r--modules/base/fish/functions/nxs.fish12
-rw-r--r--modules/base/fish/functions/restart.fish3
-rw-r--r--modules/base/fish/functions/rvm.fish40
-rw-r--r--modules/base/fish/functions/search.fish4
-rw-r--r--modules/base/user.nix24
-rw-r--r--modules/nix/default.nix17
24 files changed, 351 insertions, 0 deletions
diff --git a/modules/base/default.nix b/modules/base/default.nix
new file mode 100644
index 00000000000..3c135ad5f30
--- /dev/null
+++ b/modules/base/default.nix
@@ -0,0 +1,8 @@
+{ config, ... }:
+
+{
+ imports = [
+ ./fish
+ ./user.nix
+ ];
+}
diff --git a/modules/base/fish/alias.fish b/modules/base/fish/alias.fish
new file mode 100644
index 00000000000..f309b1764ae
--- /dev/null
+++ b/modules/base/fish/alias.fish
@@ -0,0 +1,19 @@
+# Useful
+alias todo="void /home/.local/todo.db"
+alias debug="env RUST_BACKTRACE=1"
+alias stalk="watch -n 0.1"
+alias hib="systemctl hibernate"
+
+# alias nxs="nix run -f '<nixpkgs>'"
+alias hm="home-manager -f $HOME/sys/nixcfg/home.nix"
+
+alias c="cargo"
+alias g="git"
+alias e="emacs"
+alias em="emacs (fzf --height=15 --reverse)"
+alias skcd="cd (sk ~)"
+
+# Jokes
+alias nb="man"
+alias woman="man"
+alias acetrace="ranger"
diff --git a/modules/base/fish/binds.fish b/modules/base/fish/binds.fish
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/modules/base/fish/binds.fish
@@ -0,0 +1 @@
+
diff --git a/modules/base/fish/config.fish b/modules/base/fish/config.fish
new file mode 100644
index 00000000000..633ccbca4fc
--- /dev/null
+++ b/modules/base/fish/config.fish
@@ -0,0 +1,28 @@
+# source $HOME/.cargo/env
+set -gx PATH $HOME/.cargo/bin $PATH
+set -gx PATH $HOME/.local/bin $PATH
+set -gx PATH /usr/sbin $PATH
+set -gx GRAAL_HOME ~/.local/share/graalvm/
+
+# The o bit is a bit of a hack
+# umask u=rw,g=rw,o-rwx
+
+# direnv hook fish | source
+
+# gnome-keyring insists on setting this to itself, even if ssh support is disabled
+set -x SSH_AUTH_SOCK "/run/user/1000/gnupg/S.gpg-agent.ssh"
+
+# Fix some utf-8 errors
+set -x LC_ALL en_GB.utf8
+
+# Include the nix environment
+# fenv source /home/spacekookie/.nix-profile/etc/profile.d/nix.sh
+
+# Better nix-shell support!
+any-nix-shell fish --info-right | source
+
+# Make git use emacs
+set -x EDITOR kak
+
+# tuuuuuuuurbofish!
+set fish_greeting 'Welcome to the '(set_color FF66CC)'::<>' (set_color normal)'...'
diff --git a/modules/base/fish/config.nix b/modules/base/fish/config.nix
new file mode 100644
index 00000000000..85c1c259920
--- /dev/null
+++ b/modules/base/fish/config.nix
@@ -0,0 +1,29 @@
+
+{ pkgs }:
+''
+set fish_function_path ${pkgs.fish-foreign-env}/share/fish-foreign-env/functions $fish_function_path
+
+
+${builtins.readFile ./functions/__fancy_history.fish }
+
+${builtins.readFile ./config.fish }
+${builtins.readFile ./alias.fish }
+
+${builtins.readFile ./functions/fish_prompt.fish }
+${builtins.readFile ./functions/fish_right_prompt.fish }
+${builtins.readFile ./functions/fish_user_key_bindings.fish }
+${builtins.readFile ./functions/gen-shell.fish }
+${builtins.readFile ./functions/__history_previous_command_arguments.fish }
+${builtins.readFile ./functions/__history_previous_command.fish }
+${builtins.readFile ./functions/__kakoune.fish }
+${builtins.readFile ./functions/e.fish }
+${builtins.readFile ./functions/k.fish }
+${builtins.readFile ./functions/nrepl.fish }
+${builtins.readFile ./functions/nxs.fish }
+${builtins.readFile ./functions/restart.fish }
+${builtins.readFile ./functions/rvm.fish }
+${builtins.readFile ./functions/search.fish }
+${builtins.readFile ./functions/__skim_cd.fish }
+
+${builtins.readFile ./binds.fish}
+''
diff --git a/modules/base/fish/default.nix b/modules/base/fish/default.nix
new file mode 100644
index 00000000000..dcf16afaf61
--- /dev/null
+++ b/modules/base/fish/default.nix
@@ -0,0 +1,10 @@
+{ pkgs, ... }:
+
+{
+ home-manager.users.spacekookie = { ... }: {
+ programs.fish.enable = true;
+ programs.fish.shellInit = import ./config.nix { inherig pkgs; };
+ };
+
+ programs.fish.enable = true;
+}
diff --git a/modules/base/fish/functions/__fancy_history.fish b/modules/base/fish/functions/__fancy_history.fish
new file mode 100644
index 00000000000..7ea5a12d417
--- /dev/null
+++ b/modules/base/fish/functions/__fancy_history.fish
@@ -0,0 +1,5 @@
+function __fancy_history --description "history(1) but cool!"
+ set __queried_cmd (history | fzf --height=15 --reverse)
+ commandline -t $__queried_cmd
+ commandline -f repaint
+end
diff --git a/modules/base/fish/functions/__history_previous_command.fish b/modules/base/fish/functions/__history_previous_command.fish
new file mode 100644
index 00000000000..40555452230
--- /dev/null
+++ b/modules/base/fish/functions/__history_previous_command.fish
@@ -0,0 +1,8 @@
+function __history_previous_command
+ switch (commandline -t)
+ case "!"
+ commandline -t $history[1]; commandline -f repaint
+ case "*"
+ commandline -i !
+ end
+end
diff --git a/modules/base/fish/functions/__history_previous_command_arguments.fish b/modules/base/fish/functions/__history_previous_command_arguments.fish
new file mode 100644
index 00000000000..adc8fbd273d
--- /dev/null
+++ b/modules/base/fish/functions/__history_previous_command_arguments.fish
@@ -0,0 +1,9 @@
+function __history_previous_command_arguments
+ switch (commandline -t)
+ case "!"
+ commandline -t ""
+ commandline -f history-token-search-backward
+ case "*"
+ commandline -i '$'
+ end
+end
diff --git a/modules/base/fish/functions/__kakoune.fish b/modules/base/fish/functions/__kakoune.fish
new file mode 100644
index 00000000000..2515edaa00a
--- /dev/null
+++ b/modules/base/fish/functions/__kakoune.fish
@@ -0,0 +1,28 @@
+function __kakoune --description "Wrapper around starting and re-attaching to kakoune sessions"
+ set server_name (basename (pwd) | sed 's/\./-/g')
+ set socket_file (kak -l | grep $server_name)
+ set seek_point $argv[1]
+
+ if test -n ! $seek_point
+ return 130
+ end
+
+ if test -z $socket_file
+ kak -d -s $server_name
+ end
+
+ kak -e "edit $seek_point" -c $server_name
+end
+
+function __kakoune_get_file_list --description "Get list of files to consider for fzf"
+ git status ^ /dev/null > /dev/null
+ if test $status -eq 0
+ git ls-files -oc --exclude-standard
+ else
+ find .
+ end
+end
+
+function __kakoune_get_folder_list --description "Get list of folder to consider for fzf"
+ find . -type d
+end
diff --git a/modules/base/fish/functions/__skim_cd.fish b/modules/base/fish/functions/__skim_cd.fish
new file mode 100644
index 00000000000..b4ae4234bed
--- /dev/null
+++ b/modules/base/fish/functions/__skim_cd.fish
@@ -0,0 +1,6 @@
+function __skim_cd --description "run fzf to find a directory to `cd` into"
+ set directory (find . -type d | fzf --reverse --height=15)
+ if test $status -eq 0
+ cd $directory
+ end
+end
diff --git a/modules/base/fish/functions/e.fish b/modules/base/fish/functions/e.fish
new file mode 100644
index 00000000000..cb3f2d6aaf4
--- /dev/null
+++ b/modules/base/fish/functions/e.fish
@@ -0,0 +1,12 @@
+# Spawn an emacs daemon for a project directory
+function e --description='Setup emacs server and open emacsclient'
+ set session (basename (pwd))
+
+ ps x | grep emacs | grep $session > /dev/null
+
+ if test $status != 0
+ emacs --daemon=$session
+ end
+
+ emacsclient -c -s $session --eval '(fzf)' ^ /dev/null > /dev/null &
+end
diff --git a/modules/base/fish/functions/fish_prompt.fish b/modules/base/fish/functions/fish_prompt.fish
new file mode 100644
index 00000000000..b6280bfbda6
--- /dev/null
+++ b/modules/base/fish/functions/fish_prompt.fish
@@ -0,0 +1,34 @@
+function fish_prompt --description 'Write out the prompt'
+ # Save our status
+ set -l last_status $status
+
+ set -l last_status_string ""
+ if [ $last_status -ne 0 ]
+ printf "%s(%d)%s " (set_color red --bold) $last_status (set_color normal)
+ end
+
+ if not set -q __hostname
+ set -g __hostname (hostname|cut -d . -f 1)
+ end
+
+ set -l color_cwd
+ set -l suffix
+ set -l CLOSEBRAC ]
+ set -l OPENBRAC [
+
+ switch $USER
+ case root toor
+ if set -q fish_color_cwd_root
+ set color_cwd $fish_color_cwd_root
+ else
+ set color_cwd $fish_color_cwd
+ end
+ set suffix '#'
+ case '*'
+ set color_cwd $fish_color_cwd
+ set suffix '>'
+ end
+
+ echo -n -s (set_color FF66CC) ' ❤ ' (set_color normal) '(' "$__hostname" ') ' (set_color $color_cwd) (prompt_pwd) (set_color normal) "$suffix "
+ # echo -n -s (set_color FF66CC) ' I love you Kookie <3 Alyssa ' (set_color normal) '(' "$__hostname" ') ' (set_color $color_cwd) (prompt_pwd) (set_color normal) "$suffix "
+end
diff --git a/modules/base/fish/functions/fish_right_prompt.fish b/modules/base/fish/functions/fish_right_prompt.fish
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/modules/base/fish/functions/fish_right_prompt.fish
@@ -0,0 +1 @@
+
diff --git a/modules/base/fish/functions/fish_user_key_bindings.fish b/modules/base/fish/functions/fish_user_key_bindings.fish
new file mode 100644
index 00000000000..9799d461120
--- /dev/null
+++ b/modules/base/fish/functions/fish_user_key_bindings.fish
@@ -0,0 +1,6 @@
+function fish_user_key_bindings
+ # Make `!!` and `!$` work
+ bind ! __history_previous_command
+ bind '$' __history_previous_command_arguments
+ bind \cr __fancy_history
+end
diff --git a/modules/base/fish/functions/gen-shell.fish b/modules/base/fish/functions/gen-shell.fish
new file mode 100644
index 00000000000..0c48fe2a5c3
--- /dev/null
+++ b/modules/base/fish/functions/gen-shell.fish
@@ -0,0 +1,22 @@
+function gen-shell
+ if not test $argv[1]
+ echo "Usage: gen-shell <name>"
+ return 1
+ end
+
+ if test -e default.nix
+ echo "Refusing to override existing `default.nix`!"
+ return 1
+ end
+
+ set name $argv[1]
+ echo "with import <nixpkgs> {};
+
+stdenv.mkDerivation {
+ name = \"$name\";
+ buildInputs = with pkgs; [
+ # Hier könnte Ihre Werbung stehen
+ ];
+}" > default.nix
+ bat default.nix
+end
diff --git a/modules/base/fish/functions/k.fish b/modules/base/fish/functions/k.fish
new file mode 100644
index 00000000000..55b43ad5107
--- /dev/null
+++ b/modules/base/fish/functions/k.fish
@@ -0,0 +1,18 @@
+# Spawn a kak daemon in a project directory and fuzzy open a file
+function k --description='Open kakoune via fzf'
+ # Select a file with `fzf`
+ set file (__kakoune_get_file_list | fzf --height=25 --reverse)
+
+ # Open the file
+ __kakoune $file
+end
+
+function ksm --description "Open a file at an exact line of code"
+ set file (sk --ansi -c 'rg --color=always --line-number "{}"')
+ set entry (echo $file | sed 's/\(\:[0-9]*\).*/\1/' | tr ':' ' ')
+
+ echo $entry
+
+ # Then open the file!
+ __kakoune $entry
+end
diff --git a/modules/base/fish/functions/nrepl.fish b/modules/base/fish/functions/nrepl.fish
new file mode 100644
index 00000000000..75febe575e4
--- /dev/null
+++ b/modules/base/fish/functions/nrepl.fish
@@ -0,0 +1,7 @@
+function nrepl
+ if test $argv[1]
+ nix repl $argv
+ else
+ nix repl '<nixpkgs>'
+ end
+end
diff --git a/modules/base/fish/functions/nxs.fish b/modules/base/fish/functions/nxs.fish
new file mode 100644
index 00000000000..a3fd915bbcc
--- /dev/null
+++ b/modules/base/fish/functions/nxs.fish
@@ -0,0 +1,12 @@
+function nxs
+ if test $argv[1]
+ nix run -f '<nixpkgs>' $argv
+ else
+ if test -e default.nix
+ nix-shell
+ else
+ echo "No `default.nix`"
+ return 1
+ end
+ end
+end
diff --git a/modules/base/fish/functions/restart.fish b/modules/base/fish/functions/restart.fish
new file mode 100644
index 00000000000..191fe791e81
--- /dev/null
+++ b/modules/base/fish/functions/restart.fish
@@ -0,0 +1,3 @@
+function restart
+ clear; exec fish
+end
diff --git a/modules/base/fish/functions/rvm.fish b/modules/base/fish/functions/rvm.fish
new file mode 100644
index 00000000000..834e73e5f75
--- /dev/null
+++ b/modules/base/fish/functions/rvm.fish
@@ -0,0 +1,40 @@
+function rvm --description='Ruby enVironment Manager'
+ # run RVM and capture the resulting environment
+ set --local env_file (mktemp -t rvm.fish.XXXXXXXXXX)
+ # This finds where RVM's root directory is and sources scripts/rvm from within it. Then loads RVM in a clean environment and dumps the environment variables it generates out for us to use.
+ bash -c 'PATH=$GEM_HOME/bin:$PATH;RVMA=$(which rvm);RVMB=$(whereis rvm | sed "s/rvm://");source $(if test $RVMA;then echo $RVMA | sed "s/\/bin\//\/scripts\//";elif test $RVMB; then echo $RVMB | sed "s/rvm/rvm\/scripts\/rvm/"; else echo ~/.rvm/scripts/rvm; fi); rvm "$@"; status=$?; env > "$0"; exit $status' $env_file $argv
+
+ # apply rvm_* and *PATH variables from the captured environment
+ and eval (grep -E '^rvm|^PATH|^GEM_PATH|^GEM_HOME' $env_file | grep -v '_clr=' | sed '/^[^=]*PATH/s/:/" "/g; s/^/set -xg /; s/=/ "/; s/$/" ;/; s/(//; s/)//')
+ # needed under fish >= 2.2.0
+ and set -xg GEM_PATH (echo $GEM_PATH | sed 's/ /:/g')
+
+ # clean up
+ rm -f $env_file
+end
+
+function __handle_rvmrc_stuff --on-variable PWD
+ # Source a .rvmrc file in a directory after changing to it, if it exists.
+ # To disable this feature, set rvm_project_rvmrc=0 in $HOME/.rvmrc
+ if test "$rvm_project_rvmrc" != 0
+ set -l cwd $PWD
+ while true
+ if contains $cwd "" $HOME "/"
+ if test "$rvm_project_rvmrc_default" = 1
+ rvm default 1>/dev/null 2>&1
+ end
+ break
+ else
+ if test -e .rvmrc -o -e .ruby-version -o -e .ruby-gemset
+ eval "rvm reload" > /dev/null
+ eval "rvm rvmrc load" >/dev/null
+ break
+ else
+ set cwd (dirname "$cwd")
+ end
+ end
+ end
+
+ set -e cwd
+ end
+end
diff --git a/modules/base/fish/functions/search.fish b/modules/base/fish/functions/search.fish
new file mode 100644
index 00000000000..11c89dc575d
--- /dev/null
+++ b/modules/base/fish/functions/search.fish
@@ -0,0 +1,4 @@
+function search --description "Finding some code with sk(1) and rg(1)"
+ set SELECTED (sk --ansi -c 'rg --color=always --line-number \"{}\"')
+ echo (cat $SELECTED | sed 's/\(\:[0-9]*\).*/\1/' | tr ':' ' ')
+end
diff --git a/modules/base/user.nix b/modules/base/user.nix
new file mode 100644
index 00000000000..b437ea32be9
--- /dev/null
+++ b/modules/base/user.nix
@@ -0,0 +1,24 @@
+{ pkgs, lib, ... }:
+
+let
+ mkDefault = lib.mkOverride ((lib.mkDefault null).priority - 1);
+in
+{
+ users.mutableUsers = false;
+ users.groups.spacekookie = {};
+ users.users.spacekookie = {
+ createHome = true;
+ description = "Katharina Fey";
+ home = mkDefault "/home";
+ uid = mkDefault 1000;
+ group = "qyliss";
+ extraGroups = [ "wheel" ];
+ shell = lib.mkDefault pkgs.fish;
+ };
+
+ home.spacekookie = {
+ permissions = "770";
+ group = "spacekookie";
+ };
+}
+
diff --git a/modules/nix/default.nix b/modules/nix/default.nix
new file mode 100644
index 00000000000..e26bab577a7
--- /dev/null
+++ b/modules/nix/default.nix
@@ -0,0 +1,17 @@
+{ config, pkgs, ... }:
+
+{
+ nix.trustedUsers = [ "@wheel" ];
+
+ nix.nixPath = [
+ "home-manager=/run/current-system/libkookie/home-manager"
+ "nixos-config=/run/current-system/libkookie/configuration.nix"
+ "nixpkgs-overlays=/run/current-system/libkookie/overlays"
+ "nixpkgs=/run/current-system/libkookie/nixpkgs"
+ ];
+
+ system.extraSystemBuilderCmds = ''
+ ln -s ${lib.cleanSource ../..} $out/libkookie
+ '';
+
+}