♻️ refactor nix configs

This commit is contained in:
James Walker 2022-08-27 10:57:48 -04:00
parent 8e8ce37574
commit b919168c44
Signed by: walkah
GPG Key ID: 3C127179D6086E93
8 changed files with 248 additions and 160 deletions

View File

@ -23,11 +23,11 @@
"utils": "utils" "utils": "utils"
}, },
"locked": { "locked": {
"lastModified": 1660574517, "lastModified": 1661573386,
"narHash": "sha256-Lp5D2pAPrM3iAc1eeR0iGwz5rM+SYOWzVxI3p17nlrU=", "narHash": "sha256-pBEg8iY00Af/SAtU2dlmOAv+2x7kScaGlFRDjNoVJO8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "688e5c85b7537f308b82167c8eb4ecfb70a49861", "rev": "d89bdff445eadff03fe414e9c30486bc8166b72b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -38,11 +38,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1660639432, "lastModified": 1661336769,
"narHash": "sha256-2WDiboOCfB0LhvnDVMXOAr8ZLDfm3WdO54CkoDPwN1A=", "narHash": "sha256-5Sf9tMd1Jdm+lTBGspbQ4kEoYCDKpUhEVAZHRcm6mGU=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "6c6409e965a6c883677be7b9d87a95fab6c3472e", "rev": "03428dbaaa23d6bf458770907b0927b377c873a8",
"type": "github" "type": "github"
}, },
"original": { "original": {

156
home.nix
View File

@ -7,163 +7,11 @@
home.username = "walkah"; home.username = "walkah";
home.homeDirectory = if pkgs.stdenv.isDarwin then "/Users/walkah" else "/home/walkah"; home.homeDirectory = if pkgs.stdenv.isDarwin then "/Users/walkah" else "/home/walkah";
home.sessionPath = [ imports = [
"$HOME/.cargo/bin" ./modules
"$HOME/.deno/bin"
"$HOME/.emacs.d/bin"
"$HOME/.go/bin"
"$HOME/.local/bin"
]; ];
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 = { 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; }; vim = { enable = true; };
}; };

11
modules/default.nix Normal file
View File

@ -0,0 +1,11 @@
{ config, lib, pkgs, ... }:
{
imports = [
./dev.nix
./emacs.nix
./git.nix
./tmux.nix
./zsh.nix
];
}

78
modules/dev.nix Normal file
View File

@ -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"
];
}

31
modules/emacs.nix Normal file
View File

@ -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 ];
};
};
}

30
modules/git.nix Normal file
View File

@ -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;
};
};
};
}

29
modules/tmux.nix Normal file
View File

@ -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";
};
};
}

61
modules/zsh.nix Normal file
View File

@ -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)@"; };
};
};
};
}