diff --git a/flake.nix b/flake.nix index 009ba20..877dc2f 100644 --- a/flake.nix +++ b/flake.nix @@ -26,7 +26,7 @@ extraSpecialArgs = args; # Add the users users.rafiq.imports = [ - ./users/rafiq + ./users/rafiq.nix ]; }; } diff --git a/users/modules/de.nix b/users/modules/de.nix new file mode 100644 index 0000000..3f221cd --- /dev/null +++ b/users/modules/de.nix @@ -0,0 +1,10 @@ +# Default graphical programs and personalisation +{ + imports = [ + ./programs/firefox.nix + ./programs/font-terminess.nix + ./programs/kitty.nix + ./programs/hyprland.nix + ./programs/waybar.nix + ]; +} diff --git a/users/modules/programs/bash.nix b/users/modules/programs/bash.nix new file mode 100644 index 0000000..d4389f8 --- /dev/null +++ b/users/modules/programs/bash.nix @@ -0,0 +1,10 @@ +{ + programs.bash = { + enable = true; + shellAliases = { + rebuild = "sudo nixos-rebuild switch --flake"; + gs = "git status"; + ai = "aichat -r %shell% -e"; + }; + }; +} diff --git a/users/modules/programs/direnv.nix b/users/modules/programs/direnv.nix new file mode 100644 index 0000000..8726325 --- /dev/null +++ b/users/modules/programs/direnv.nix @@ -0,0 +1,9 @@ +{ + # direnv lets us declare a .envrc in each project directory + # and updates the shell with the packages specified. + programs.direnv = { + enable = true; + enableBashIntegration = true; + nix-direnv.enable = true; + }; +} diff --git a/users/modules/programs/firefox.nix b/users/modules/programs/firefox.nix new file mode 100644 index 0000000..0f7103f --- /dev/null +++ b/users/modules/programs/firefox.nix @@ -0,0 +1,5 @@ +{ + programs.firefox = { + enable = true; + }; +} diff --git a/users/rafiq/modules/fonts.nix b/users/modules/programs/font-terminess.nix similarity index 100% rename from users/rafiq/modules/fonts.nix rename to users/modules/programs/font-terminess.nix diff --git a/users/modules/programs/fzf.nix b/users/modules/programs/fzf.nix new file mode 100644 index 0000000..46c47aa --- /dev/null +++ b/users/modules/programs/fzf.nix @@ -0,0 +1,7 @@ +{ + programs.fzf = { + enable = true; + enableBashIntegration = true; + tmux.enableShellIntegration = true; + }; +} diff --git a/users/rafiq/modules/git.nix b/users/modules/programs/git.nix similarity index 100% rename from users/rafiq/modules/git.nix rename to users/modules/programs/git.nix diff --git a/users/rafiq/modules/hyprland.nix b/users/modules/programs/hyprland.nix similarity index 93% rename from users/rafiq/modules/hyprland.nix rename to users/modules/programs/hyprland.nix index a2ea026..7d74e04 100644 --- a/users/rafiq/modules/hyprland.nix +++ b/users/modules/programs/hyprland.nix @@ -80,14 +80,4 @@ }; }; }; - programs.waybar = { - enable = true; - settings = { - mainBar = { - layer = "top"; - }; - }; - style = '' - ''; - }; } diff --git a/users/rafiq/modules/terminal.nix b/users/modules/programs/kitty.nix similarity index 100% rename from users/rafiq/modules/terminal.nix rename to users/modules/programs/kitty.nix diff --git a/users/modules/programs/nvim.nix b/users/modules/programs/nvim.nix new file mode 100644 index 0000000..675bf57 --- /dev/null +++ b/users/modules/programs/nvim.nix @@ -0,0 +1,14 @@ +{ + programs.neovim = { + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + vimdiffAlias = true; + extraLuaConfig = '' + vim.opt.shiftwidth = 2; + vim.opt.number = true; + vim.opt.relativenumber = true; + ''; + }; +} diff --git a/users/modules/programs/starship.nix b/users/modules/programs/starship.nix new file mode 100644 index 0000000..b624758 --- /dev/null +++ b/users/modules/programs/starship.nix @@ -0,0 +1,9 @@ +{ + # starship is a customisable prompt for any shell + programs.starship = { + enable = true; + enableBashIntegration = true; + settings = { + }; + }; +} diff --git a/users/modules/programs/tealdeer.nix b/users/modules/programs/tealdeer.nix new file mode 100644 index 0000000..b4f7386 --- /dev/null +++ b/users/modules/programs/tealdeer.nix @@ -0,0 +1,7 @@ +{ + # man page summaries (activate with tldr ) + programs.tealdeer = { + enable = true; + enableAutoUpdates = true; + }; +} diff --git a/users/modules/programs/tmux.nix b/users/modules/programs/tmux.nix new file mode 100644 index 0000000..de3d09f --- /dev/null +++ b/users/modules/programs/tmux.nix @@ -0,0 +1,27 @@ +{ pkgs, ... }: { + # Terminal Multiplexing + programs.tmux = { + enable = true; + plugins = with pkgs.tmuxPlugins; [ + catppuccin + + # Session Management between Reboots + { + plugin = resurrect; + extraConfig = '' + set -g @resurrect-strategy-nvim 'session' + ''; + } + { + plugin = continuum; + extraConfig = '' + set -g @continuum-restore 'on' + ''; + } + ]; + extraConfig = '' + set -g default-terminal "tmux-256color" + set -ag terminal-overrides ",xterm-256color:RGB" + ''; + }; +} diff --git a/users/modules/programs/waybar.nix b/users/modules/programs/waybar.nix new file mode 100644 index 0000000..c8aaca4 --- /dev/null +++ b/users/modules/programs/waybar.nix @@ -0,0 +1,12 @@ +{ + programs.waybar = { + enable = true; + settings = { + mainBar = { + layer = "top"; + }; + }; + style = '' + ''; + }; +} diff --git a/users/modules/programs/yazi.nix b/users/modules/programs/yazi.nix new file mode 100644 index 0000000..ecfb0a4 --- /dev/null +++ b/users/modules/programs/yazi.nix @@ -0,0 +1,6 @@ +{ + programs.yazi = { + enable = true; + enableBashIntegration = true; + }; +} diff --git a/users/rafiq/scripts/default.nix b/users/modules/scripts/default.nix similarity index 100% rename from users/rafiq/scripts/default.nix rename to users/modules/scripts/default.nix diff --git a/users/rafiq/scripts/git-extract.nix b/users/modules/scripts/git-extract.nix similarity index 100% rename from users/rafiq/scripts/git-extract.nix rename to users/modules/scripts/git-extract.nix diff --git a/users/rafiq/scripts/git-extract.py b/users/modules/scripts/git-extract.py similarity index 100% rename from users/rafiq/scripts/git-extract.py rename to users/modules/scripts/git-extract.py diff --git a/users/modules/sh.nix b/users/modules/sh.nix new file mode 100644 index 0000000..ae21430 --- /dev/null +++ b/users/modules/sh.nix @@ -0,0 +1,15 @@ +# Default shell utilities and programs +{ + imports = [ + ./programs/bash.nix + ./programs/direnv.nix + ./programs/fzf.nix + ./programs/git.nix + ./programs/nvim.nix + ./programs/starship.nix + ./programs/tealdeer.nix + ./programs/tmux.nix + ./programs/yazi.nix + ./scripts + ]; +} diff --git a/users/modules/utils.nix b/users/modules/utils.nix new file mode 100644 index 0000000..1907442 --- /dev/null +++ b/users/modules/utils.nix @@ -0,0 +1,13 @@ +{pkgs, ...}: { + + home.packages = with pkgs; [ + fastfetch # system info + wl-clipboard # provides cli copy and paste commands + aichat # duh + ]; + + services = { + # clipboard history (depends on wl-clipboard) + cliphist.enable = true; + }; +} diff --git a/users/rafiq.nix b/users/rafiq.nix new file mode 100644 index 0000000..f53b80e --- /dev/null +++ b/users/rafiq.nix @@ -0,0 +1,20 @@ +{ pkgs, ... }: { + imports = [ + ./modules/sh.nix + ./modules/de.nix + ./modules/utils.nix + ]; + + # This enables using home-manager from the command line. + programs.home-manager.enable = true; + + home = { + username = "rafiq"; + homeDirectory = "/home/rafiq"; + + # This defines the version home-manager + # was originally bulit against on this system. + # Do not change it. + stateVersion = "25.05"; + }; +} diff --git a/users/rafiq/.config/nvim/init.lua b/users/rafiq/.config/nvim/init.lua deleted file mode 100644 index db8155c..0000000 --- a/users/rafiq/.config/nvim/init.lua +++ /dev/null @@ -1,3 +0,0 @@ -vim.opt.shiftwidth = 2; -vim.opt.number = true; -vim.opt.relativenumber = true; diff --git a/users/rafiq/default.nix b/users/rafiq/default.nix deleted file mode 100644 index 8f102cc..0000000 --- a/users/rafiq/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ pkgs, ... }: { - imports = [ - ./modules/git.nix # git specific configs - ./modules/sh.nix # bash and other shell specific configs - ./modules/nvim.nix # nvim specific configs - ./modules/terminal.nix # terminal emulator configs - ./modules/firefox.nix # firefox configs - ./modules/hyprland.nix # hyprland settings - ./modules/fonts.nix # font settings - ./modules/utils.nix # miscellaneous utilities - ./scripts - ]; - - # This enables using home-manager from the command line. - programs.home-manager.enable = true; - - home = { - username = "rafiq"; - homeDirectory = "/home/rafiq"; - - # This defines the version home-manager - # was originally bulit against on this system. - # Do not change it. - stateVersion = "25.05"; - }; -} diff --git a/users/rafiq/modules/firefox.nix b/users/rafiq/modules/firefox.nix deleted file mode 100644 index a5a2f40..0000000 --- a/users/rafiq/modules/firefox.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs, ... }: - -{ - home.packages = with pkgs; [ - firefox - ]; -} diff --git a/users/rafiq/modules/nvim.nix b/users/rafiq/modules/nvim.nix deleted file mode 100644 index e0f1ac1..0000000 --- a/users/rafiq/modules/nvim.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, lib, ... }: let - nvimPath = "${config.home.homeDirectory}/repos/dotfiles/users/rafiq/.config/nvim"; -in { - programs.neovim = { - enable = true; - defaultEditor = true; - viAlias = true; - vimAlias = true; - vimdiffAlias = true; - }; - xdg.configFile."nvim".source = config.lib.file.mkOutOfStoreSymlink nvimPath; -} diff --git a/users/rafiq/modules/sh.nix b/users/rafiq/modules/sh.nix deleted file mode 100644 index 749b7ad..0000000 --- a/users/rafiq/modules/sh.nix +++ /dev/null @@ -1,54 +0,0 @@ -{pkgs, ...}: { - programs = { - bash = { - enable = true; - shellAliases = { - rebuild = "sudo nixos-rebuild switch --flake"; - gs = "git status"; - ai = "aichat -r %shell% -e"; - }; - }; - - # direnv lets us declare a .envrc in each project directory - # and updates the shell with the packages specified. - direnv = { - enable = true; - enableBashIntegration = true; - nix-direnv.enable = true; - }; - - # starship is a customisable prompt for any shell - starship = { - enable = true; - enableBashIntegration = true; - settings = { - }; - }; - - # Terminal Multiplexing - tmux = { - enable = true; - plugins = with pkgs.tmuxPlugins; [ - catppuccin - - # Session Management between Reboots - { - plugin = resurrect; - extraConfig = '' - set -g @resurrect-strategy-nvim 'session' - ''; - } - { - plugin = continuum; - extraConfig = '' - set -g @continuum-restore 'on' - ''; - } - ]; - extraConfig = '' - set -g default-terminal "tmux-256color" - set -ag terminal-overrides ",xterm-256color:RGB" - ''; - }; - }; -} diff --git a/users/rafiq/modules/utils.nix b/users/rafiq/modules/utils.nix deleted file mode 100644 index 3277964..0000000 --- a/users/rafiq/modules/utils.nix +++ /dev/null @@ -1,31 +0,0 @@ -{pkgs, ...}: { - # TODO: Move wayland-specific stuff to a wayland config - - home.packages = with pkgs; [ - fastfetch # system info - wl-clipboard # provides cli copy and paste commands - aichat # duh - ]; - - programs = { - # man page summaries (activate with tldr ) - tealdeer = { - enable = true; - enableAutoUpdates = true; - }; - fzf = { - enable = true; - enableBashIntegration = true; - tmux.enableShellIntegration = true; - }; - yazi = { - enable = true; - enableBashIntegration = true; - }; - }; - - services = { - # clipboard history (depends on wl-clipboard) - cliphist.enable = true; - }; -} diff --git a/users/rafiq/modules/wm.nix b/users/rafiq/modules/wm.nix deleted file mode 100644 index edd4b4b..0000000 --- a/users/rafiq/modules/wm.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ - wayland.windowManager.hyprland = { - enable = true; - systemd.enable = false; # Required for UWSM compat - systemd.variables = ["--all"]; - # Use tha packages defined in the system configuration - package = null; - portalPackage = null; - settings = { - monitor = [ - "HDMI-A-2, 3840x2160@60, 0x0, 2" - "DP-4, 1920x1080@60, -1920x0, 1" - ", preferred, auto, 1" - ]; - "$terminal" = "kitty"; - "$browser" = "firefox"; - "$mainMod" = "SUPER"; - bind = [ - "$mainMod, Q, exec, uwsm app -- $terminal" - "$mainMod, W, killactive" - "$mainMod, E, exec, uwsm app -- $browser" - "$mainMod, M, exec, uwsm stop" - ]; - debug.disable_logs = false; - }; - }; -}