Compare commits

..

7 Commits

6 changed files with 111 additions and 12 deletions

View File

@@ -25,12 +25,3 @@ This document outlines the development conventions for this NixOS-based infrastr
- **Secrets:** Secrets are managed with `agenix`. Edit encrypted files with `agenix -e <file>`. - **Secrets:** Secrets are managed with `agenix`. Edit encrypted files with `agenix -e <file>`.
- **Modularity:** Structure configurations into logical, reusable modules under `modules/`. New modules should be registered in `modules/nixos/default.nix` to be available to all hosts. - **Modularity:** Structure configurations into logical, reusable modules under `modules/`. New modules should be registered in `modules/nixos/default.nix` to be available to all hosts.
- **Error Handling:** Ensure Nix expressions are robust and handle potential evaluation errors gracefully. - **Error Handling:** Ensure Nix expressions are robust and handle potential evaluation errors gracefully.
## Workflow
- New feature → clean branch from `origin/master` → push → PR on Gitea
- Branch naming: `feat/description` (features), `fix/description` (bugs/docs)
- Always branch from `origin/master`, never from another feature branch
- Submodule changes: commit submodule update in parent repo (the parent commit pins the submodule commit)
- PR title should describe the change; body should explain motivation + summary
- After PR merge, delete the feature branch

View File

@@ -12,10 +12,17 @@
url = "git+https://git.lix.systems/lix-project/lix?ref=main"; url = "git+https://git.lix.systems/lix-project/lix?ref=main";
inputs.nixpkgs.follows = "nixpkgs"; 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 let
system = "x86_64-linux"; system = "x86_64-linux";
keys = import ./lib/keys.nix; keys = import ./lib/keys.nix;
@@ -56,6 +63,7 @@
agenix.nixosModules.default agenix.nixosModules.default
./hosts/lazyworkhorse/configuration.nix ./hosts/lazyworkhorse/configuration.nix
./hosts/lazyworkhorse/hardware-configuration.nix ./hosts/lazyworkhorse/hardware-configuration.nix
./modules/nixos/home-manager/default.nix
./modules/nixos/filesystem/hoardingcow-mount.nix ./modules/nixos/filesystem/hoardingcow-mount.nix
./modules/nixos/services/docker_manager.nix ./modules/nixos/services/docker_manager.nix
./modules/nixos/services/open_code_server.nix ./modules/nixos/services/open_code_server.nix

View File

@@ -207,6 +207,7 @@
ai = { ai = {
path = self + "/assets/compose/ai"; path = self + "/assets/compose/ai";
envFile = config.age.secrets.containers_env.path; envFile = config.age.secrets.containers_env.path;
ports = [ 22000 ]; # Syncthing TCP sync
}; };
cloudstorage = { cloudstorage = {

View File

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

View File

@@ -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
swaynotificationcenter
swww
wofi
waybar
kitty
foot
brightnessctl
playerctl
udiskie
hyprshade
pyprland
];
}