diff --git a/flake.nix b/flake.nix index 8f8b51a..8fe08e6 100644 --- a/flake.nix +++ b/flake.nix @@ -12,10 +12,17 @@ url = "git+https://git.lix.systems/lix-project/lix?ref=main"; inputs.nixpkgs.follows = "nixpkgs"; }; - self.submodules = true; + home-manager = { + url = "github:nix-community/home-manager/release-25.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + dotfiles = { + url = "git+https://code.lazyworkhorse.net/gortium/dotfiles.git"; + flake = false; + }; }; - outputs = { self, nixpkgs, agenix, lix, ... }@inputs: + outputs = { self, nixpkgs, agenix, lix, home-manager, dotfiles, ... }@inputs: let system = "x86_64-linux"; keys = import ./lib/keys.nix; @@ -56,6 +63,7 @@ agenix.nixosModules.default ./hosts/lazyworkhorse/configuration.nix ./hosts/lazyworkhorse/hardware-configuration.nix + ./modules/nixos/home-manager/default.nix ./modules/nixos/filesystem/hoardingcow-mount.nix ./modules/nixos/services/docker_manager.nix ./modules/nixos/services/open_code_server.nix diff --git a/modules/nixos/home-manager/default.nix b/modules/nixos/home-manager/default.nix new file mode 100644 index 0000000..efaeb00 --- /dev/null +++ b/modules/nixos/home-manager/default.nix @@ -0,0 +1,12 @@ +{ config, pkgs, lib, inputs, ... }: + +{ + imports = [ inputs.home-manager.nixosModules.home-manager ]; + + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + + users.gortium = import ./dotfiles.nix { inherit config pkgs lib inputs; }; + }; +} diff --git a/modules/nixos/home-manager/dotfiles.nix b/modules/nixos/home-manager/dotfiles.nix new file mode 100644 index 0000000..5c36e63 --- /dev/null +++ b/modules/nixos/home-manager/dotfiles.nix @@ -0,0 +1,87 @@ +{ config, pkgs, lib, inputs, ... }: + +{ + home = { + username = "gortium"; + homeDirectory = "/home/gortium"; + stateVersion = "25.11"; + }; + + # Import dotfiles as-is via home.file (Option 3 — git way) + # Hyprland + home.file.".config/hypr/hyprland.conf".source = + "${inputs.dotfiles}/hypr/.config/hypr/hyprland.conf"; + home.file.".config/hypr/mocha.conf".source = + "${inputs.dotfiles}/hypr/.config/hypr/mocha.conf"; + home.file.".config/hypr/hyprlock.conf".source = + "${inputs.dotfiles}/hypr/.config/hypr/hyprlock.conf"; + home.file.".config/hypr/hypridle.conf".source = + "${inputs.dotfiles}/hypr/.config/hypr/hypridle.conf"; + home.file.".config/hypr/hyprpaper.conf".source = + "${inputs.dotfiles}/hypr/.config/hypr/hyprpaper.conf"; + home.file.".config/hypr/hyprshade.toml".source = + "${inputs.dotfiles}/hypr/.config/hypr/hyprshade.toml"; + + # Host-specific overrides: sourced from hyprland.conf + # hyprland.conf includes: source = ~/.config/hypr/hosts/$HOST.conf + # This file is created per-host and contains only the diffs. + home.file.".config/hypr/hosts" = { + source = "${inputs.dotfiles}/hypr/.config/hypr/hosts"; + recursive = true; + }; + + # Zsh + home.file.".zshrc".source = "${inputs.dotfiles}/zsh/.zshrc"; + + # Tmux + home.file.".tmux.conf".source = "${inputs.dotfiles}/tmux/.tmux.conf"; + + # Neovim + home.file.".config/nvim" = { + source = "${inputs.dotfiles}/nvim/.config/nvim"; + recursive = true; + }; + + # Wallpapers + home.file.".config/wallpapers" = { + source = "${inputs.dotfiles}/wallpapers/.config/wallpapers"; + recursive = true; + }; + + # Wofi + home.file.".config/wofi" = { + source = "${inputs.dotfiles}/wofi/.config/wofi"; + recursive = true; + }; + + # Packages that should be installed with home-manager + home.packages = with pkgs; [ + # CLI tools + ripgrep + fd + jq + fzf + bat + eza + zoxide + + # Development + git + lazygit + gh + + # Hyprland extras + hyprshot + swaync + swww + wofi + waybar + kitty + foot + brightnessctl + playerctl + udiskie + hyprshade + pyprland + ]; +}