From b919168c449a890c29aacaad8412229873678d65 Mon Sep 17 00:00:00 2001 From: James Walker Date: Sat, 27 Aug 2022 10:57:48 -0400 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor=20nix=20configs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- flake.lock | 12 ++-- home.nix | 156 +------------------------------------------- modules/default.nix | 11 ++++ modules/dev.nix | 78 ++++++++++++++++++++++ modules/emacs.nix | 31 +++++++++ modules/git.nix | 30 +++++++++ modules/tmux.nix | 29 ++++++++ modules/zsh.nix | 61 +++++++++++++++++ 8 files changed, 248 insertions(+), 160 deletions(-) create mode 100644 modules/default.nix create mode 100644 modules/dev.nix create mode 100644 modules/emacs.nix create mode 100644 modules/git.nix create mode 100644 modules/tmux.nix create mode 100644 modules/zsh.nix diff --git a/flake.lock b/flake.lock index 5576a2b..4142283 100644 --- a/flake.lock +++ b/flake.lock @@ -23,11 +23,11 @@ "utils": "utils" }, "locked": { - "lastModified": 1660574517, - "narHash": "sha256-Lp5D2pAPrM3iAc1eeR0iGwz5rM+SYOWzVxI3p17nlrU=", + "lastModified": 1661573386, + "narHash": "sha256-pBEg8iY00Af/SAtU2dlmOAv+2x7kScaGlFRDjNoVJO8=", "owner": "nix-community", "repo": "home-manager", - "rev": "688e5c85b7537f308b82167c8eb4ecfb70a49861", + "rev": "d89bdff445eadff03fe414e9c30486bc8166b72b", "type": "github" }, "original": { @@ -38,11 +38,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1660639432, - "narHash": "sha256-2WDiboOCfB0LhvnDVMXOAr8ZLDfm3WdO54CkoDPwN1A=", + "lastModified": 1661336769, + "narHash": "sha256-5Sf9tMd1Jdm+lTBGspbQ4kEoYCDKpUhEVAZHRcm6mGU=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6c6409e965a6c883677be7b9d87a95fab6c3472e", + "rev": "03428dbaaa23d6bf458770907b0927b377c873a8", "type": "github" }, "original": { diff --git a/home.nix b/home.nix index 035e595..6e7e8be 100644 --- a/home.nix +++ b/home.nix @@ -7,163 +7,11 @@ home.username = "walkah"; home.homeDirectory = if pkgs.stdenv.isDarwin then "/Users/walkah" else "/home/walkah"; - home.sessionPath = [ - "$HOME/.cargo/bin" - "$HOME/.deno/bin" - "$HOME/.emacs.d/bin" - "$HOME/.go/bin" - "$HOME/.local/bin" + imports = [ + ./modules ]; - home.packages = with pkgs; [ - btop - cachix - direnv - drone-cli - exa - fd - git - gh - htop - jq - mr - nixpkgs-fmt - nixfmt - ripgrep - rnix-lsp - tea - wakatime - ]; - - home.file.".doom.d" = { - onChange = '' - #!/bin/sh - DOOM=$HOME/.emacs.d - if [ ! -d $DOOM ]; then - git clone --depth 1 https://github.com/hlissner/doom-emacs $DOOM - fi - $DOOM/bin/doom sync - ''; - source = ./config/.doom.d; - recursive = true; - }; - - home.file.".ghci".text = '' - :set prompt "λ> " - ''; - programs = { - zsh = { - enable = true; - enableAutosuggestions = true; - enableCompletion = true; - oh-my-zsh = { - enable = true; - plugins = [ - "bundler" - "direnv" - "docker" - "docker-compose" - "git" - "golang" - "mix" - "rails" - "ssh-agent" - "tmux" - ]; - }; - sessionVariables = { - EDITOR = "vim"; - GOPATH = "$HOME/.go"; - }; - shellAliases = { - ls = "exa --git"; - ll = "exa -lh --git"; - }; - }; - starship = { - enable = true; - enableZshIntegration = true; - settings = { - character = { - success_symbol = "[»](bold green) "; - error_symbol = "[✗](bold red) "; - }; - directory = { - fish_style_pwd_dir_length = 1; - truncation_length = 1; - }; - hostname = { - ssh_only = false; - format = "[$hostname]($style):"; - }; - gcloud = { disabled = true; }; - kubernetes = { disabled = false; }; - username = { format = "[$user]($style)@"; }; - }; - }; - - bat.enable = true; - fzf = { - enable = true; - fileWidgetOptions = [ "--preview 'bat --color always {}'" ]; - }; - - git = { - enable = true; - userName = "James Walker"; - userEmail = "walkah@walkah.net"; - - aliases = { - lg = - "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; - st = "status -s"; - undo = "reset HEAD~1 --mixed"; - }; - - extraConfig = { - github.user = "walkah"; - init.defaultBranch = "main"; - pull.rebase = true; - rebase.autoStash = true; - }; - - signing = { - key = "8896FEC44D47A81C"; - signByDefault = true; - }; - }; - - tmux = { - enable = true; - clock24 = true; - plugins = with pkgs.tmuxPlugins; [ - sensible - yank - { - plugin = dracula; - extraConfig = '' - set -g @dracula-show-battery true - set -g @dracula-show-fahrenheit false - set -g @dracula-show-left-icon session - set -g @dracula-show-powerline true - set -g @dracula-refresh-rate 10 - ''; - } - ]; - extraConfig = '' - set -g set-titles on - set -g set-titles-string "[#S] #W@#h (#I)" - ''; - shortcut = "o"; - }; - - emacs = { - enable = true; - package = pkgs.emacs-nox; - extraPackages = epkgs: [ epkgs.vterm ]; - }; - vim = { enable = true; }; }; diff --git a/modules/default.nix b/modules/default.nix new file mode 100644 index 0000000..65e7eb3 --- /dev/null +++ b/modules/default.nix @@ -0,0 +1,11 @@ +{ config, lib, pkgs, ... }: + +{ + imports = [ + ./dev.nix + ./emacs.nix + ./git.nix + ./tmux.nix + ./zsh.nix + ]; +} diff --git a/modules/dev.nix b/modules/dev.nix new file mode 100644 index 0000000..af4ce4c --- /dev/null +++ b/modules/dev.nix @@ -0,0 +1,78 @@ +{ config, lib, pkgs, ... }: + +{ + home.packages = with pkgs; [ + # General + btop + cmake + drone-cli + tea + + # Git + git + gh + mr + + # Elixir + elixir + + # Golang + go + gomodifytags + gotests + gore + + # Haskell + haskellPackages.haskell-language-server + # haskellPackages.cabal + haskellPackages.hoogle + stack + + # Javascript/Typescript + deno + jq + nodejs + yarn + + # Nix + cachix + niv + nixfmt + nixpkgs-fmt + rnix-lsp + + # Python + black + isort + pipenv + python39 + python39Packages.pyflakes + python39Packages.nose + python39Packages.pytest + + # Rust + rustup + rust-analyzer + + # Shell + shfmt + shellcheck + + # Web + nodePackages.stylelint + nodePackages.js-beautify + ]; + + home.file.".ghci".text = '' + :set prompt "λ> " + ''; + + home.sessionPath = [ + "$HOME/.cargo/bin" + "$HOME/.deno/bin" + "$HOME/.emacs.d/bin" + "$HOME/.go/bin" + "$HOME/.local/bin" + ]; + +} diff --git a/modules/emacs.nix b/modules/emacs.nix new file mode 100644 index 0000000..efff7e6 --- /dev/null +++ b/modules/emacs.nix @@ -0,0 +1,31 @@ +{ config, lib, pkgs, ... }: + +{ + home.packages = with pkgs; [ + # Doom requirements + fd + ripgrep + wakatime + ]; + + home.file.".doom.d" = { + onChange = '' + #!/bin/sh + DOOM=$HOME/.emacs.d + if [ ! -d $DOOM ]; then + git clone --depth 1 https://github.com/hlissner/doom-emacs $DOOM + fi + $DOOM/bin/doom sync + ''; + source = ../config/.doom.d; + recursive = true; + }; + + programs = { + emacs = { + enable = true; + package = pkgs.emacs-nox; + extraPackages = epkgs: [ epkgs.vterm ]; + }; + }; +} diff --git a/modules/git.nix b/modules/git.nix new file mode 100644 index 0000000..f3b0b64 --- /dev/null +++ b/modules/git.nix @@ -0,0 +1,30 @@ +{ config, lib, pkgs, ... }: + +{ + programs = { + git = { + enable = true; + userName = "James Walker"; + userEmail = "walkah@walkah.net"; + + aliases = { + lg = + "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"; + st = "status -s"; + undo = "reset HEAD~1 --mixed"; + }; + + extraConfig = { + github.user = "walkah"; + init.defaultBranch = "main"; + pull.rebase = true; + rebase.autoStash = true; + }; + + signing = { + key = "8896FEC44D47A81C"; + signByDefault = true; + }; + }; + }; +} diff --git a/modules/tmux.nix b/modules/tmux.nix new file mode 100644 index 0000000..bc383da --- /dev/null +++ b/modules/tmux.nix @@ -0,0 +1,29 @@ +{ config, lib, pkgs, ... }: + +{ + programs = { + tmux = { + enable = true; + clock24 = true; + plugins = with pkgs.tmuxPlugins; [ + sensible + yank + { + plugin = dracula; + extraConfig = '' + set -g @dracula-show-battery true + set -g @dracula-show-fahrenheit false + set -g @dracula-show-left-icon session + set -g @dracula-show-powerline true + set -g @dracula-refresh-rate 10 + ''; + } + ]; + extraConfig = '' + set -g set-titles on + set -g set-titles-string "[#S] #W@#h (#I)" + ''; + shortcut = "o"; + }; + }; +} diff --git a/modules/zsh.nix b/modules/zsh.nix new file mode 100644 index 0000000..9115744 --- /dev/null +++ b/modules/zsh.nix @@ -0,0 +1,61 @@ +{ config, lib, pkgs, ... }: + +{ + programs = { + bat.enable = true; + direnv.enable = true; + exa.enable = true; + fzf = { + enable = true; + fileWidgetOptions = [ "--preview 'bat --color always {}'" ]; + }; + + zsh = { + enable = true; + enableAutosuggestions = true; + enableCompletion = true; + oh-my-zsh = { + enable = true; + plugins = [ + "bundler" + "direnv" + "docker" + "docker-compose" + "git" + "golang" + "mix" + "rails" + "ssh-agent" + "tmux" + ]; + }; + sessionVariables = { + EDITOR = "vim"; + GOPATH = "$HOME/.go"; + }; + }; + + starship = { + enable = true; + enableZshIntegration = true; + settings = { + character = { + success_symbol = "[»](bold green) "; + error_symbol = "[✗](bold red) "; + }; + directory = { + fish_style_pwd_dir_length = 1; + truncation_length = 1; + }; + hostname = { + ssh_only = false; + format = "[$hostname]($style):"; + }; + gcloud = { disabled = true; }; + kubernetes = { disabled = false; }; + username = { format = "[$user]($style)@"; }; + }; + }; + + }; +}