initial commit

This commit is contained in:
2026-08-05 18:57:23 +01:00
commit dda5d14d63
51 changed files with 1123 additions and 0 deletions
+8
View File
@@ -0,0 +1,8 @@
{...}: {
# Bun JavaScript runtime / package manager / bundler.
flake.nixosModules.bun = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
bun
];
};
}
+8
View File
@@ -0,0 +1,8 @@
{...}: {
# Discord. Launched as `discord` by the hypr autostart (workspace 8).
flake.nixosModules.discord = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
discord
];
};
}
+12
View File
@@ -0,0 +1,12 @@
{...}: {
# Feishin music client (Jellyfin/Navidrome/Subsonic).
# Note: hypr autostart currently launches this via `flatpak run
# org.jeffvli.feishin` on workspace 9. To use this native package instead,
# change that line to `uwsm app feishin`. The window class is `feishin`,
# which already matches the window-rule in window-rules.lua.
flake.nixosModules.feishin = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
feishin
];
};
}
+9
View File
@@ -0,0 +1,9 @@
{...}: {
# Package only. Config is managed via stow (dotfiles: no dedicated fuzzel
# package yet; fuzzel uses its defaults / ~/.config/fuzzel if present).
flake.nixosModules.fuzzel = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
fuzzel
];
};
}
+9
View File
@@ -0,0 +1,9 @@
{...}: {
# Package only. Config is managed via stow (dotfiles: ghostty package).
flake.nixosModules.ghostty = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
ghostty
];
ahmza.stow.packages = ["ghostty"];
};
}
+14
View File
@@ -0,0 +1,14 @@
{...}: {
# git user config (~/.config/git or ~/.gitconfig) is managed via stow.
# We only install git + related tooling and enable the gpg agent.
flake.nixosModules.git = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
git
git-secret
];
programs.gnupg.agent = {
enable = true;
pinentryPackage = pkgs.pinentry-all;
};
};
}
+58
View File
@@ -0,0 +1,58 @@
{self, ...}: {
# Hyprland desktop. The compositor config itself (hyprland.lua + ahmza/*.lua,
# hyprlock, hypridle, hyprsunset) is managed via stow (dotfiles: hypr package).
# Here we enable Hyprland and install the runtime tools that config + the
# helper scripts in the `bin` package expect on PATH.
flake.nixosModules.hyprland = {pkgs, ...}: let
modules = with self.nixosModules; [
audio
systemTheme
fuzzel
ghostty
waybar
];
in {
imports = modules;
programs.hyprland = {
enable = true;
withUWSM = true;
};
# hypr = compositor config, dunst = notifications, wal = pywal templates,
# bin = helper scripts (swp/launch-waybar/passmenu) referenced by keybinds.
ahmza.stow.packages = ["hypr" "dunst" "wal" "bin"];
services.displayManager.defaultSession = "hyprland-uwsm";
services.xserver.enable = true;
security.polkit.enable = true;
environment.systemPackages = with pkgs; [
# hypr* ecosystem (keybinds / hypridle / autostart)
hyprlock
hypridle
hyprsunset
hyprpicker
# launcher / file manager / browser (vars.lua: Picker/FileManager/Browser)
kdePackages.dolphin
firefox
# wallpaper daemon used by the `swp` script + autostart (awww-daemon)
awww
# scripting deps for bin/ helpers (swp uses jq + hyprctl)
jq
# display / applets referenced by autostart
xorg.xrandr
networkmanagerapplet
blueman
udiskie
brightnessctl
# clipboard
wl-clipboard
cliphist
# theming
gsettings-desktop-schemas
dunst
pywal16
];
};
}
+8
View File
@@ -0,0 +1,8 @@
{...}: {
# lazygit config is managed via stow. Package only.
flake.nixosModules.lazygit = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
lazygit
];
};
}
+15
View File
@@ -0,0 +1,15 @@
{...}: {
flake.nixosModules.nvim = {pkgs, ...}: {
programs.neovim = {
enable = true;
defaultEditor = true;
viAlias = true;
vimAlias = true;
};
ahmza.stow.packages = ["nvim"];
environment.systemPackages = with pkgs; [
# TODO: re-add your custom neovim config/distribution here later.
];
};
}
+11
View File
@@ -0,0 +1,11 @@
{...}: {
# Obsidian notes app.
# Note: hypr autostart currently launches this via `flatpak run
# mc.obsidian.Obsidian` on workspace 4. To use this native package instead,
# change that line to `uwsm app obsidian`.
flake.nixosModules.obsidian = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
obsidian
];
};
}
+44
View File
@@ -0,0 +1,44 @@
{...}: {
# opencode MCP servers, installed declaratively instead of via the dotfiles
# `install` script (which downloads prebuilt binaries into ~/.local/bin).
# - gitea-mcp : packaged in nixpkgs as gitea-mcp-server (binary: gitea-mcp)
# - engram : not in nixpkgs, built here from source with buildGoModule
# Both are referenced by bare command name in opencode.jsonc, so they resolve
# from PATH.
flake.nixosModules.opencode-mcp = {pkgs, ...}: let
engram = pkgs.buildGoModule rec {
pname = "engram";
version = "1.20.0";
src = pkgs.fetchFromGitHub {
owner = "Gentleman-Programming";
repo = "engram";
rev = "v${version}";
hash = "sha256-qdKAll7N0HtJRbZYilzatVCUz1Tr+pqM217Y8O+Csjs=";
};
vendorHash = "sha256-O+pC4x4DKNUWr7Sx9iZOjK6a64wrQA4/lnjvkNLBX64=";
subPackages = ["cmd/engram"];
# Inject the version (upstream sets main.version via goreleaser ldflags).
ldflags = ["-s" "-w" "-X" "main.version=${version}"];
# Upstream tests bind network ports (autosync), which fails in the Nix
# build sandbox. The binary itself builds fine.
doCheck = false;
meta = with pkgs.lib; {
description = "Persistent memory MCP server for coding agents";
homepage = "https://github.com/Gentleman-Programming/engram";
license = licenses.mit;
mainProgram = "engram";
};
};
in {
environment.systemPackages = [
pkgs.gitea-mcp-server # provides the `gitea-mcp` binary
engram
];
};
}
+9
View File
@@ -0,0 +1,9 @@
{...}: {
# TODO: quickshell config (shell.qml etc.) previously came from a dedicated flake input
# and was built via the wrappers flake. Re-add your quickshell config later.
flake.nixosModules.quickshell = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
quickshell
];
};
}
+9
View File
@@ -0,0 +1,9 @@
{...}: {
flake.nixosModules.sddm-autologin = {...}: {
services.displayManager = {
autoLogin.enable = true;
autoLogin.user = "ahmza";
};
};
}
+26
View File
@@ -0,0 +1,26 @@
{
self,
inputs,
...
}: {
flake.nixosModules.sddm = {
pkgs,
lib,
...
}: {
environment.systemPackages = [
(pkgs.catppuccin-sddm.override {
flavor = "mocha";
font = "JetBrainsMono Nerd Font";
fontSize = "11";
background = null;
})
];
services.displayManager.sddm = {
enable = true;
theme = "catppuccin-mocha-mauve";
package = pkgs.kdePackages.sddm;
};
};
}
+17
View File
@@ -0,0 +1,17 @@
{...}: {
# System-managed ssh-agent. Enabling startAgent runs an ssh-agent per user
# session and exports SSH_AUTH_SOCK automatically, so the dotfiles zsh
# `ssh-agent` bootstrap finds a reachable agent (its Linux fallback hardcodes
# /usr/bin/ssh-agent, which does not exist on NixOS).
flake.nixosModules.ssh-agent = {pkgs, ...}: {
programs.ssh = {
startAgent = true;
# ed25519-sk / passphrase prompts route through this pinentry.
enableAskPassword = true;
};
environment.systemPackages = with pkgs; [
openssh # provides ssh-add / ssh-agent on PATH
];
};
}
+12
View File
@@ -0,0 +1,12 @@
{...}: {
# TODO: previously injected SLSsteam via LD_AUDIT from the sls-steam flake. Now stock.
flake.nixosModules.steam = {pkgs, ...}: {
programs.steam = {
enable = true;
protontricks.enable = true;
extraCompatPackages = with pkgs; [
proton-ge-bin
];
};
};
}
+14
View File
@@ -0,0 +1,14 @@
{...}: {
# Package only. Config is managed via stow (dotfiles: waybar package).
flake.nixosModules.waybar = {pkgs, ...}: {
environment.systemPackages = with pkgs; [
waybar
# waybar config on-click / modules deps:
mpc # mpd module: "mpc toggle/random"
# nm-connection-editor comes from networkmanagerapplet (hyprland module);
# pavucontrol comes from the audio module.
inotify-tools
];
ahmza.stow.packages = ["waybar"];
};
}
+9
View File
@@ -0,0 +1,9 @@
{...}: {
flake.nixosModules.weylus = {pkgs, ...}: {
programs.weylus = {
enable = true;
package = pkgs.weylus;
users = ["ahmza"];
};
};
}
+24
View File
@@ -0,0 +1,24 @@
{...}: {
# zsh runtime config (.zshrc, plugins, aliases, prompt) is managed via stow
# (dotfiles: zsh + shell + starship packages). We only enable zsh at the system
# level and install the tools the dotfiles expect on PATH.
flake.nixosModules.zsh = {pkgs, ...}: {
programs.zsh.enable = true;
users.defaultUserShell = pkgs.zsh;
ahmza.stow.packages = ["zsh" "shell" "starship"];
environment.systemPackages = with pkgs; [
starship
fzf
ripgrep
fd
lsd
lolcat
zoxide
bat
lazygit
carapace
];
};
}