diff --git a/flake.nix b/flake.nix index f5fa68a..386ebfd 100644 --- a/flake.nix +++ b/flake.nix @@ -37,6 +37,7 @@ inherit user fullName font; }; modules = [ + home-manager.nixosModules.home-manager ./nixos/configuration.nix ./nixos/hardware-configuration.nix ./nixos/home.nix @@ -45,27 +46,12 @@ ./modules/gaming ./modules/services/keybase.nix ./modules/applications/firefox.nix - home-manager.nixosModules.home-manager - { - home-manager = { - useGlobalPkgs = true; - useUserPackages = true; - extraSpecialArgs = { - gui = true; - inherit user fullName font; - }; - users.${user} = { - imports = [ - ./modules/applications/alacritty.nix - ./modules/shell/fish.nix - ./modules/shell/utilities.nix - ./modules/shell/git.nix - ./modules/shell/github.nix - ./modules/editor/neovim.nix - ]; - }; - }; - } + ./modules/applications/alacritty.nix + ./modules/shell/fish.nix + ./modules/shell/utilities.nix + ./modules/shell/git.nix + ./modules/shell/github.nix + ./modules/editor/neovim.nix ]; }; }; diff --git a/modules/applications/alacritty.nix b/modules/applications/alacritty.nix index fb24f68..a811d6f 100644 --- a/modules/applications/alacritty.nix +++ b/modules/applications/alacritty.nix @@ -1,71 +1,74 @@ -{ pkgs, config, font, ... }: { - programs.alacritty = { - enable = true; - settings = { - window = { - dimensions = { - columns = 85; - lines = 30; +{ pkgs, user, font, ... }: { + + home-manager.users.${user} = { + programs.alacritty = { + enable = true; + settings = { + window = { + dimensions = { + columns = 85; + lines = 30; + }; + padding = { + x = 20; + y = 20; + }; }; - padding = { - x = 20; - y = 20; + scrolling.history = 10000; + font = { + size = 14.0; + normal = { family = font.name; }; }; + key_bindings = [ + { + key = "L"; + mods = "Control|Shift"; + chars = "\\x1F"; + } + { + key = "K"; + mods = "Control"; + mode = "~Vi"; + action = "ToggleViMode"; + } + { + key = "Return"; + mode = "Vi"; + action = "ToggleViMode"; + } + ]; + colors = { + primary = { + background = "0x1d2021"; + foreground = "0xd5c4a1"; + }; + cursor = { + text = "0x1d2021"; + cursor = "0xd5c4a1"; + }; + normal = { + black = "0x1d2021"; + red = "0xfb4934"; + green = "0xb8bb26"; + yellow = "0xfabd2f"; + blue = "0x83a598"; + magenta = "0xd3869b"; + cyan = "0x8ec07c"; + white = "0xd5c4a1"; + }; + bright = { + black = "0x665c54"; + red = "0xfe8019"; + green = "0x3c3836"; + yellow = "0x504945"; + blue = "0xbdae93"; + magenta = "0xebdbb2"; + cyan = "0xd65d0e"; + white = "0xfbf1c7"; + }; + }; + draw_bold_text_with_bright_colors = false; }; - scrolling.history = 10000; - font = { - size = 14.0; - normal = { family = font.name; }; - }; - key_bindings = [ - { - key = "L"; - mods = "Control|Shift"; - chars = "\\x1F"; - } - { - key = "K"; - mods = "Control"; - mode = "~Vi"; - action = "ToggleViMode"; - } - { - key = "Return"; - mode = "Vi"; - action = "ToggleViMode"; - } - ]; - colors = { - primary = { - background = "0x1d2021"; - foreground = "0xd5c4a1"; - }; - cursor = { - text = "0x1d2021"; - cursor = "0xd5c4a1"; - }; - normal = { - black = "0x1d2021"; - red = "0xfb4934"; - green = "0xb8bb26"; - yellow = "0xfabd2f"; - blue = "0x83a598"; - magenta = "0xd3869b"; - cyan = "0x8ec07c"; - white = "0xd5c4a1"; - }; - bright = { - black = "0x665c54"; - red = "0xfe8019"; - green = "0x3c3836"; - yellow = "0x504945"; - blue = "0xbdae93"; - magenta = "0xebdbb2"; - cyan = "0xd65d0e"; - white = "0xfbf1c7"; - }; - }; - draw_bold_text_with_bright_colors = false; }; }; } diff --git a/modules/editor/neovim.nix b/modules/editor/neovim.nix index 9fe7cbd..4e36acb 100644 --- a/modules/editor/neovim.nix +++ b/modules/editor/neovim.nix @@ -1,13 +1,19 @@ -{ config, pkgs, ... }: { +{ pkgs, user, ... }: { - home.packages = with pkgs; [ - neovim - gcc # for tree-sitter - ]; + home-manager.users.${user} = { - xdg.configFile = { "nvim/init.lua".source = ../../nvim.configlink/init.lua; }; + home.packages = with pkgs; [ + neovim + gcc # for tree-sitter + ]; - programs.git.extraConfig.core.editor = "nvim"; - home.sessionVariables = { EDITOR = "nvim"; }; + xdg.configFile = { + "nvim/init.lua".source = ../../nvim.configlink/init.lua; + }; + + programs.git.extraConfig.core.editor = "nvim"; + home.sessionVariables = { EDITOR = "nvim"; }; + + }; } diff --git a/modules/services/keybase.nix b/modules/services/keybase.nix index a9ff9e1..2c70643 100644 --- a/modules/services/keybase.nix +++ b/modules/services/keybase.nix @@ -3,7 +3,16 @@ services.keybase.enable = true; services.kbfs.enable = true; - home-manager.users.${user}.home.packages = - [ (lib.mkIf gui pkgs.keybase-gui) ]; + home-manager.users.${user} = { + home.packages = [ (lib.mkIf gui pkgs.keybase-gui) ]; + home.file = let + ignorePatterns = '' + keybase/ + kbfs/''; + in { + ".rgignore".text = ignorePatterns; + ".fdignore".text = ignorePatterns; + }; + }; } diff --git a/modules/shell/fish.nix b/modules/shell/fish.nix index 5c1a10f..2e23cc1 100644 --- a/modules/shell/fish.nix +++ b/modules/shell/fish.nix @@ -1,115 +1,117 @@ -{ pkgs, ... }: { +{ pkgs, user, ... }: { - programs.fish = { - enable = true; - functions = { }; - interactiveShellInit = ""; - loginShellInit = ""; - shellAliases = { - vim = "nvim"; - sudo = "doas"; + home-manager.users.${user} = { + programs.fish = { + enable = true; + functions = { }; + interactiveShellInit = ""; + loginShellInit = ""; + shellAliases = { + vim = "nvim"; + sudo = "doas"; + }; + shellAbbrs = { + + # Directory aliases + l = "ls"; + lh = "ls -lh"; + ll = "ls -alhF"; + la = "ls -a"; + lf = "ls -lh | fzf"; + c = "cd"; + "-" = "cd -"; + mkd = "mkdir -pv"; + + # System + s = "sudo"; + sc = "systemctl"; + scs = "systemctl status"; + reb = "nixos-rebuild switch -I nixos-config=${ + builtins.toString ../../nixos/. + }/configuration.nix"; + + # Tmux + ta = "tmux attach-session"; + tan = "tmux attach-session -t noah"; + tnn = "tmux new-session -s noah"; + + # Vim + v = "vim"; + vl = "vim -c 'normal! `0'"; + vll = "vim -c 'Telescope oldfiles'"; + vimrc = "vim ${builtins.toString ../../.}/nvim.configlink/init.lua"; + + # Notes + qn = "quicknote"; + sn = "syncnotes"; + to = "today"; + work = "vim $NOTES_PATH/work.md"; + + # CLI Tools + cat = "bat"; # Swap cat with bat + h = "http -Fh --all"; # Curl site for headers + m = "make"; # For makefiles + + # Fun CLI Tools + weather = "curl wttr.in/$WEATHER_CITY"; + moon = "curl wttr.in/Moon"; + + # Cheat Sheets + ssl = + "openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr"; + fingerprint = "ssh-keyscan myhost.com | ssh-keygen -lf -"; + publickey = "ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub"; + forloop = "for i in (seq 1 100)"; + + # Docker + dc = "$DOTS/bin/docker_cleanup"; + dr = "docker run --rm -it"; + db = "docker build . -t"; + + # Terraform + te = "terraform"; + + # Kubernetes + k = "kubectl"; + pods = "kubectl get pods -A"; + nodes = "kubectl get nodes"; + deploys = "kubectl get deployments -A"; + dash = "kube-dashboard"; + ks = "k9s"; + + # Python + py = "python"; + po = "poetry"; + pr = "poetry run python"; + + # Rust + ca = "cargo"; + + }; + shellAliases = { }; + shellInit = ""; }; - shellAbbrs = { - # Directory aliases - l = "ls"; - lh = "ls -lh"; - ll = "ls -alhF"; - la = "ls -a"; - lf = "ls -lh | fzf"; - c = "cd"; - "-" = "cd -"; - mkd = "mkdir -pv"; - - # System - s = "sudo"; - sc = "systemctl"; - scs = "systemctl status"; - reb = "nixos-rebuild switch -I nixos-config=${ - builtins.toString ../../nixos/. - }/configuration.nix"; - - # Tmux - ta = "tmux attach-session"; - tan = "tmux attach-session -t noah"; - tnn = "tmux new-session -s noah"; - - # Vim - v = "vim"; - vl = "vim -c 'normal! `0'"; - vll = "vim -c 'Telescope oldfiles'"; - vimrc = "vim ${builtins.toString ../../.}/nvim.configlink/init.lua"; - - # Notes - qn = "quicknote"; - sn = "syncnotes"; - to = "today"; - work = "vim $NOTES_PATH/work.md"; - - # CLI Tools - cat = "bat"; # Swap cat with bat - h = "http -Fh --all"; # Curl site for headers - m = "make"; # For makefiles - - # Fun CLI Tools - weather = "curl wttr.in/$WEATHER_CITY"; - moon = "curl wttr.in/Moon"; - - # Cheat Sheets - ssl = - "openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr"; - fingerprint = "ssh-keyscan myhost.com | ssh-keygen -lf -"; - publickey = "ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub"; - forloop = "for i in (seq 1 100)"; - - # Docker - dc = "$DOTS/bin/docker_cleanup"; - dr = "docker run --rm -it"; - db = "docker build . -t"; - - # Terraform - te = "terraform"; - - # Kubernetes - k = "kubectl"; - pods = "kubectl get pods -A"; - nodes = "kubectl get nodes"; - deploys = "kubectl get deployments -A"; - dash = "kube-dashboard"; - ks = "k9s"; - - # Python - py = "python"; - po = "poetry"; - pr = "poetry run python"; - - # Rust - ca = "cargo"; + home.sessionVariables = { fish_greeting = ""; }; + programs.starship = { + enable = true; + enableFishIntegration = true; }; - shellAliases = { }; - shellInit = ""; - }; - home.sessionVariables = { fish_greeting = ""; }; + programs.fzf = { + enable = true; + enableFishIntegration = true; + }; - programs.starship = { - enable = true; - enableFishIntegration = true; - }; + programs.zoxide = { + enable = true; + enableFishIntegration = true; + }; - programs.fzf = { - enable = true; - enableFishIntegration = true; - }; - - programs.zoxide = { - enable = true; - enableFishIntegration = true; - }; - - xdg.configFile = { - "starship.toml".source = ../../starship/starship.toml.configlink; - "fish/functions".source = ../../fish.configlink/functions; + xdg.configFile = { + "starship.toml".source = ../../starship/starship.toml.configlink; + "fish/functions".source = ../../fish.configlink/functions; + }; }; } diff --git a/modules/shell/git.nix b/modules/shell/git.nix index 8e13b7d..9677362 100644 --- a/modules/shell/git.nix +++ b/modules/shell/git.nix @@ -1,43 +1,45 @@ -{ config, pkgs, fullName, ... }: { +{ pkgs, user, fullName, ... }: { - programs.git = { - enable = true; - userName = fullName; - userEmail = "7386960+nmasur@users.noreply.github.com"; - extraConfig = { - pager = { branch = "false"; }; - safe = { directory = builtins.toString ../../.; }; + home-manager.users.${user} = { + programs.git = { + enable = true; + userName = fullName; + userEmail = "7386960+nmasur@users.noreply.github.com"; + extraConfig = { + pager = { branch = "false"; }; + safe = { directory = builtins.toString ../../.; }; + }; + }; + + programs.fish.shellAbbrs = { + g = "git"; + gs = "git status"; + gd = "git diff"; + gds = "git diff --staged"; + gdp = "git diff HEAD^"; + ga = "git add"; + gaa = "git add -A"; + gac = "git commit -am"; + gc = "git commit -m"; + gca = "git commit --amend --no-edit"; + gcae = "git commit --amend"; + gu = "git pull"; + gp = "git push"; + gpp = "git_set_upstream"; + gl = "git log --graph --decorate --oneline -20"; + gll = "git log --graph --decorate --oneline"; + gco = "git checkout"; + gcom = "git switch master"; + gcob = "git switch -c"; + gb = "git branch"; + gbd = "git branch -d"; + gbD = "git branch -D"; + gr = "git reset"; + grh = "git reset --hard"; + gm = "git merge"; + gcp = "git cherry-pick"; + cdg = "cd (git rev-parse --show-toplevel)"; }; }; - programs.fish.shellAbbrs = { - g = "git"; - gs = "git status"; - gd = "git diff"; - gds = "git diff --staged"; - gdp = "git diff HEAD^"; - ga = "git add"; - gaa = "git add -A"; - gac = "git commit -am"; - gc = "git commit -m"; - gca = "git commit --amend --no-edit"; - gcae = "git commit --amend"; - gu = "git pull"; - gp = "git push"; - gpp = "git_set_upstream"; - gl = "git log --graph --decorate --oneline -20"; - gll = "git log --graph --decorate --oneline"; - gco = "git checkout"; - gcom = "git switch master"; - gcob = "git switch -c"; - gb = "git branch"; - gbd = "git branch -d"; - gbD = "git branch -D"; - gr = "git reset"; - grh = "git reset --hard"; - gm = "git merge"; - gcp = "git cherry-pick"; - cdg = "cd (git rev-parse --show-toplevel)"; - }; - } diff --git a/modules/shell/github.nix b/modules/shell/github.nix index d8bf907..733ddab 100644 --- a/modules/shell/github.nix +++ b/modules/shell/github.nix @@ -1,19 +1,22 @@ -{ config, pkgs, ... }: { +{ pkgs, user, ... }: { imports = [ ./git.nix ]; - programs.gh = { - enable = true; - enableGitCredentialHelper = true; - settings.git_protocol = "https"; - }; + home-manager.users.${user} = { + programs.gh = { + enable = true; + enableGitCredentialHelper = true; + settings.git_protocol = "https"; + }; - programs.fish.shellAbbrs = { - ghr = "gh repo view -w"; - gha = "gh run list | head -1 | awk '{ print $(NF-2) }' | xargs gh run view"; - grw = "gh run watch"; - grf = "gh run view --log-failed"; - grl = "gh run view --log"; + programs.fish.shellAbbrs = { + ghr = "gh repo view -w"; + gha = + "gh run list | head -1 | awk '{ print $(NF-2) }' | xargs gh run view"; + grw = "gh run watch"; + grf = "gh run view --log-failed"; + grl = "gh run view --log"; + }; }; } diff --git a/modules/shell/utilities.nix b/modules/shell/utilities.nix index c2af930..c9ee525 100644 --- a/modules/shell/utilities.nix +++ b/modules/shell/utilities.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, user, ... }: let @@ -9,35 +9,36 @@ let !*.tfvars .terraform/ .target/ - /Library/ - keybase/ - kbfs/ - ''; + /Library/''; in { - home.packages = with pkgs; [ - unzip - rsync - fzf - ripgrep - bat - fd - exa - sd - zoxide - jq - tealdeer - gh - direnv - tree - htop - glow - ]; + home-manager.users.${user}.home = { + + packages = with pkgs; [ + unzip + rsync + fzf + ripgrep + bat + fd + exa + sd + zoxide + jq + tealdeer + gh + direnv + tree + htop + glow + ]; + + file = { + ".rgignore".text = ignorePatterns; + ".fdignore".text = ignorePatterns; + }; - home.file = { - ".rgignore".text = ignorePatterns; - ".fdignore".text = ignorePatterns; }; } diff --git a/nixos/home.nix b/nixos/home.nix index 9244a10..7dcf23b 100644 --- a/nixos/home.nix +++ b/nixos/home.nix @@ -5,6 +5,8 @@ let notes_path = "$HOME/dev/personal/notes"; in { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; home-manager.users.${user} = { nixpkgs.config.allowUnfree = true;