From 5f6012faf1024d054173e40c9b488704c0c6250f Mon Sep 17 00:00:00 2001 From: oddlama Date: Thu, 15 Dec 2022 17:46:53 +0100 Subject: [PATCH] feat: add some necessary plumbing --- core/default.nix | 16 +++--- core/inputrc.nix | 110 +++++++++++++++++++++++++++++++++++++ core/issue.nix | 7 +++ hosts/nom/default.nix | 1 + modules/sound-pipewire.nix | 2 +- users/common/default.nix | 7 +-- users/common/fish.nix | 47 ++++++++++++++++ users/common/git.nix | 38 +++++++++++++ users/common/nushell.nix | 5 -- 9 files changed, 213 insertions(+), 20 deletions(-) create mode 100644 core/inputrc.nix create mode 100644 core/issue.nix create mode 100644 users/common/fish.nix create mode 100644 users/common/git.nix delete mode 100644 users/common/nushell.nix diff --git a/core/default.nix b/core/default.nix index 69c499f..3e06fc4 100644 --- a/core/default.nix +++ b/core/default.nix @@ -9,22 +9,17 @@ ''; in { imports = [ + ./inputrc.nix + ./issue.nix ./nix.nix ./resolved.nix + ./ssh.nix ./tmux.nix ./xdg.nix - ./ssh.nix ]; boot.kernelParams = ["log_buf_len=10M"]; - - environment = { - etc."nixos/configuration.nix".source = dummyConfig; - systemPackages = with pkgs; [ - neovim - ]; - variables.EDITOR = "nvim"; - }; + environment.etc."nixos/configuration.nix".source = dummyConfig; # Disable unnecessary stuff from the nixos defaults. services.udisks2.enable = false; @@ -64,8 +59,11 @@ in { }; }; neovim = { + package = pkgs.neovim; enable = true; viAlias = true; + vimAlias = true; + defaultEditor = true; }; }; diff --git a/core/inputrc.nix b/core/inputrc.nix new file mode 100644 index 0000000..0238da2 --- /dev/null +++ b/core/inputrc.nix @@ -0,0 +1,110 @@ +{ + environment.etc."inputrc".text = '' + # /etc/inputrc: initialization file for readline + # + # For more information on how this file works, please see the + # INITIALIZATION FILE section of the readline(3) man page + # + # Quick dirty little note: + # To get the key sequence for binding, you can abuse bash. + # While running bash, hit CTRL+V, and then type the key sequence. + # So, typing 'ALT + left arrow' in Konsole gets you back: + # ^[[1;3D + # The readline entry to make this skip back a word will then be: + # "\e[1;3D" backward-word + # + # Customization note: + # You don't need to put all your changes in this file. You can create + # ~/.inputrc which starts off with the line: + # $include /etc/inputrc + # Then put all your own stuff after that. + # + + # do not bell on tab-completion + set bell-style none + + set history-size -1 + + set meta-flag on + set input-meta on + set convert-meta off + set output-meta on + + # dont output everything on first line + set horizontal-scroll-mode off + + + # append slash to completed directories & symlinked directories + set mark-directories on + set mark-symlinked-directories on + + # dont expand ~ in tab completion + set expand-tilde off + + # instead of ringing bell, show list of ambigious completions directly, also show up to 300 items before asking + set show-all-if-ambiguous on + set completion-query-items 300 + + + $if mode=emacs + + # for linux console and RH/Debian xterm + # allow the use of the Home/End keys + "\e[1~": beginning-of-line + "\e[4~": end-of-line + # map "page up" and "page down" to search history based on current cmdline + "\e[5~": history-search-backward + "\e[6~": history-search-forward + # allow the use of the Delete/Insert keys + "\e[3~": delete-char + "\e[2~": quoted-insert + + # gnome / others (escape + arrow key) + "\e[5C": forward-word + "\e[5D": backward-word + # konsole / xterm / rxvt (escape + arrow key) + "\e\e[C": forward-word + "\e\e[D": backward-word + # gnome / konsole / others (control + arrow key) + "\e[1;5C": forward-word + "\e[1;5D": backward-word + # aterm / eterm (control + arrow key) + "\eOc": forward-word + "\eOd": backward-word + + # konsole (alt + arrow key) + "\e[1;3C": forward-word + "\e[1;3D": backward-word + + # Chromebooks remap alt + backspace so provide alternative (alt + k) + "\ek": backward-kill-word + + $if term=rxvt + "\e[8~": end-of-line + + "\e[3^": kill-line + "\e[3@": backward-kill-line + $endif + + # for non RH/Debian xterm, can't hurt for RH/Debian xterm + "\eOH": beginning-of-line + "\eOF": end-of-line + + # for freebsd console + "\e[H": beginning-of-line + "\e[F": end-of-line + + # fix Home and End for German users + "\e[7~": beginning-of-line + "\e[8~": end-of-line + + # ctrl [+ shift] + del = kill line [backward] + "\e[3;5~": kill-line + "\e[3;6~": backward-kill-line + $endif + + # Up and Down should search history based on current cmdline + "\e[A": history-search-backward + "\e[B": history-search-forward + ''; +} diff --git a/core/issue.nix b/core/issue.nix new file mode 100644 index 0000000..c904960 --- /dev/null +++ b/core/issue.nix @@ -0,0 +1,7 @@ +{ + environment.etc."issue".text = '' + \d \t + This is \e{cyan}\n\e{reset} [\e{lightblue}\l\e{reset}] (\s \m \r) + ''; + environment.etc."issue.logo".text = environment.etc."issue".text; +} diff --git a/hosts/nom/default.nix b/hosts/nom/default.nix index 39780fd..0b79f75 100644 --- a/hosts/nom/default.nix +++ b/hosts/nom/default.nix @@ -13,6 +13,7 @@ ../../modules/efi.nix ../../modules/laptop.nix + ../../modules/sound-pipewire.nix ../../modules/yubikey.nix ../../modules/zfs.nix diff --git a/modules/sound-pipewire.nix b/modules/sound-pipewire.nix index a0043d4..88e90e5 100644 --- a/modules/sound-pipewire.nix +++ b/modules/sound-pipewire.nix @@ -3,7 +3,7 @@ pkgs, ... }: { - environment.systemPackages = with pkgs; [pulseaudio]; + environment.systemPackages = with pkgs; [pulseaudio pulsemixer]; hardware.pulseaudio.enable = lib.mkForce false; diff --git a/users/common/default.nix b/users/common/default.nix index 76290ab..034a933 100644 --- a/users/common/default.nix +++ b/users/common/default.nix @@ -5,11 +5,10 @@ #./atuin.nix #./bash.nix #./btop.nix - #./fish.nix - #./git.nix + ./fish.nix + ./git.nix ./htop.nix #./neovim - ./nushell.nix #./ssh.nix ./starship.nix #./tmux.nix @@ -23,7 +22,6 @@ bandwhich btop fd - kalker neofetch rclone ripgrep @@ -45,7 +43,6 @@ chmod = "chmod -c --preserve-root"; chown = "chown -c --preserve-root"; - vim = "nvim"; ip = "ip --color"; tmux = "tmux -2"; rg = "rg -S"; diff --git a/users/common/fish.nix b/users/common/fish.nix new file mode 100644 index 0000000..cc382aa --- /dev/null +++ b/users/common/fish.nix @@ -0,0 +1,47 @@ +{ + lib, + pkgs, + ... +}: { + programs = { + fish = { + enable = true; + interactiveShellInit = lib.mkMerge [ + (lib.mkBefore '' + set -g ATUIN_NOBIND true + set -g fish_escape_delay_ms 300 + set -g fish_greeting + '') + (lib.mkAfter '' + enable_ayu_theme_dark + ${pkgs.any-nix-shell}/bin/any-nix-shell fish | source + fish_vi_key_bindings insert + # atuin + bind -M insert \cr _atuin_search + # quickly open text file + bind -M insert \co 'fzf | xargs -r $VISUAL' + '') + ]; + plugins = [ + { + name = "ayu-theme.fish"; + src = pkgs.fetchFromGitHub { + owner = "edouard-lopez"; + repo = "ayu-theme.fish"; + rev = "d351d24263d87bef3a90424e0e9c74746673e383"; + hash = "sha256-rx9izD2pc3hLObOehuiMwFB4Ta5G1lWVv9Jdb+JHIz0="; + }; + } + { + name = "autopair.fish"; + src = pkgs.fetchFromGitHub { + owner = "jorgebucaran"; + repo = "autopair.fish"; + rev = "1.0.4"; + hash = "sha256-s1o188TlwpUQEN3X5MxUlD/2CFCpEkWu83U9O+wg3VU="; + }; + } + ]; + }; + }; +} diff --git a/users/common/git.nix b/users/common/git.nix new file mode 100644 index 0000000..ebee0cc --- /dev/null +++ b/users/common/git.nix @@ -0,0 +1,38 @@ +{ + lib, + pkgs, + ... +}: { + programs.gitui.enable = true; + programs.git = { + enable = true; + difftastic.enable = true; + lfs.enable = lib.mkDefault false; + extraConfig = { + #diff = { + # colorMoved = "default"; + # age.textconv = "${pkgs.rage}/bin/rage -i ~/.ssh/username --decrypt"; + #}; + difftool.prompt = true; + init.defaultBranch = "main"; + merge.conflictstyle = "diff3"; + mergetool.prompt = true; + }; + aliases = { + unstash = "stash pop"; + s = status; + tags = "tag -l"; + t = "tag -s -m ''"; + ci = "commit -v -S"; + cam = "commit -v -S --amend"; + }; + }; + + home.shellAliases = rec { + g = "gitui"; + gs = "git status"; + ga = "git add"; + gc = "git commit -v -S"; + gca = "${gci} --amend"; + }; +} diff --git a/users/common/nushell.nix b/users/common/nushell.nix deleted file mode 100644 index c314fa3..0000000 --- a/users/common/nushell.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ - programs.nushell = { - enable = true; - }; -}