Kieran's opinionated (and probably slightly dumb) nix config

feat: move to module format

dunkirk.sh aae36562 0b6a80ae

verified
-42
home-manager/app/alacritty.nix
···
-
{
-
lib,
-
...
-
}:
-
{
-
catppuccin.alacritty.flavor = "mocha";
-
-
# alacritty
-
programs.alacritty = {
-
enable = true;
-
settings = {
-
general.live_config_reload = true;
-
cursor = {
-
unfocused_hollow = true;
-
style = {
-
blinking = "On";
-
};
-
};
-
window = {
-
opacity = 0.88;
-
padding = {
-
x = 12;
-
y = 12;
-
};
-
};
-
font = {
-
size = 13;
-
normal = {
-
family = "JetBrainsMono Nerd Font";
-
};
-
};
-
colors = {
-
normal = {
-
magenta = lib.mkForce "#db87c5";
-
};
-
primary = {
-
foreground = lib.mkForce "#ABB2BF";
-
};
-
};
-
};
-
};
-
}
-204
home-manager/app/crush.nix
···
-
{
-
inputs,
-
...
-
}:
-
{
-
imports = [
-
inputs.crush.homeManagerModules.default
-
];
-
-
programs.crush = {
-
enable = true;
-
settings = {
-
lsp = {
-
go = {
-
command = "gopls";
-
};
-
typescript = {
-
command = "typescript-language-server";
-
args = [ "--stdio" ];
-
};
-
nix = {
-
command = "nil";
-
};
-
};
-
mcp = {
-
context7 = {
-
url = "https://mcp.context7.com/mcp";
-
type = "http";
-
};
-
sequential-thinking = {
-
command = "bunx";
-
args = [
-
"-y"
-
"@modelcontextprotocol/server-sequential-thinking"
-
];
-
};
-
};
-
models = {
-
large = {
-
model = "claude-3.7-sonnet";
-
provider = "copilot";
-
};
-
small = {
-
model = "gemini-2.0-flash-001";
-
provider = "copilot";
-
};
-
};
-
providers = {
-
copilot = {
-
name = "Copilot";
-
type = "openai";
-
base_url = "https://api.githubcopilot.com";
-
api_key = "$(bash ~/.config/crush/copilot.sh)";
-
extra_headers = {
-
"Editor-Version" = "CRUSH/1.0";
-
"Editor-Plugin-Version" = "CRUSH/1.0";
-
"Copilot-Integration-Id" = "vscode-chat";
-
};
-
models = [
-
{
-
id = "gpt-4.1";
-
model = "Copilot: GPT 4.1";
-
cost_per_1m_in = 0;
-
cost_per_1m_out = 0;
-
cost_per_1m_in_cached = 0;
-
cost_per_1m_out_cached = 0;
-
context_window = 128000;
-
default_max_tokens = 30000;
-
can_reason = false;
-
has_reasoning_efforts = false;
-
supports_attachments = false;
-
}
-
{
-
id = "gpt-4o";
-
model = "Copilot: GPT 4o";
-
cost_per_1m_in = 0;
-
cost_per_1m_out = 0;
-
cost_per_1m_in_cached = 0;
-
cost_per_1m_out_cached = 0;
-
context_window = 128000;
-
default_max_tokens = 32000;
-
can_reason = false;
-
has_reasoning_efforts = false;
-
supports_attachments = false;
-
}
-
{
-
id = "claude-sonnet-4";
-
model = "Copilot: Claude Sonnet 4";
-
cost_per_1m_in = 0;
-
cost_per_1m_out = 0;
-
cost_per_1m_in_cached = 0;
-
cost_per_1m_out_cached = 0;
-
context_window = 200000;
-
default_max_tokens = 50000;
-
can_reason = true;
-
has_reasoning_efforts = false;
-
supports_attachments = true;
-
}
-
{
-
id = "gemini-2.5-pro";
-
model = "Copilot: Gemini 2.5 Pro";
-
cost_per_1m_in = 0;
-
cost_per_1m_out = 0;
-
cost_per_1m_in_cached = 0;
-
cost_per_1m_out_cached = 0;
-
context_window = 200000;
-
default_max_tokens = 50000;
-
can_reason = true;
-
has_reasoning_efforts = false;
-
supports_attachments = true;
-
}
-
];
-
};
-
claude-pro = {
-
name = "Claude Pro";
-
type = "anthropic";
-
base_url = "https://api.anthropic.com/v1";
-
api_key = "Bearer $(bash ~/.config/crush/anthropic.sh)";
-
extra_headers = {
-
"anthropic-version" = "2023-06-01";
-
"anthropic-beta" = "oauth-2025-04-20";
-
};
-
models = [
-
{
-
id = "claude-opus-4-20250514";
-
model = "Claude Opus 4";
-
cost_per_1m_in = 15000;
-
cost_per_1m_out = 75000;
-
cost_per_1m_in_cached = 1125;
-
cost_per_1m_out_cached = 75000;
-
context_window = 200000;
-
default_max_tokens = 50000;
-
can_reason = true;
-
has_reasoning_efforts = true;
-
supports_attachments = true;
-
}
-
{
-
id = "claude-sonnet-4-20250514";
-
model = "Claude Sonnet 4";
-
cost_per_1m_in = 3000;
-
cost_per_1m_out = 15000;
-
cost_per_1m_in_cached = 225;
-
cost_per_1m_out_cached = 15000;
-
context_window = 200000;
-
default_max_tokens = 50000;
-
can_reason = true;
-
has_reasoning_efforts = false;
-
supports_attachments = true;
-
}
-
{
-
id = "claude-3-7-sonnet-20250219";
-
model = "Claude 3.7 Sonnet";
-
cost_per_1m_in = 2500;
-
cost_per_1m_out = 12000;
-
cost_per_1m_in_cached = 187;
-
cost_per_1m_out_cached = 12000;
-
context_window = 200000;
-
default_max_tokens = 128000;
-
can_reason = true;
-
has_reasoning_efforts = false;
-
supports_attachments = true;
-
}
-
{
-
id = "claude-3-5-sonnet-20241022";
-
model = "Claude 3.5 Sonnet (Latest)";
-
cost_per_1m_in = 3000;
-
cost_per_1m_out = 15000;
-
cost_per_1m_in_cached = 225;
-
cost_per_1m_out_cached = 15000;
-
context_window = 200000;
-
default_max_tokens = 8192;
-
can_reason = false;
-
has_reasoning_efforts = false;
-
supports_attachments = true;
-
}
-
{
-
id = "claude-3-5-haiku-20241022";
-
model = "Claude 3.5 Haiku";
-
cost_per_1m_in = 800;
-
cost_per_1m_out = 4000;
-
cost_per_1m_in_cached = 60;
-
cost_per_1m_out_cached = 4000;
-
context_window = 200000;
-
default_max_tokens = 8192;
-
can_reason = false;
-
has_reasoning_efforts = false;
-
supports_attachments = true;
-
}
-
];
-
};
-
};
-
};
-
};
-
-
home.file.".config/crush/copilot.sh" = {
-
source = ../dots/copilot.sh;
-
executable = true;
-
};
-
-
home.file.".config/crush/anthropic.sh" = {
-
source = ../dots/anthropic.sh;
-
executable = true;
-
};
-
}
-50
home-manager/app/discord.nix
···
-
{
-
...
-
}:
-
{
-
programs.vesktop = {
-
settings = {
-
minimizeToTray = true;
-
discordBranch = "stable";
-
arRPC = true;
-
splashColor = "oklch(0.75 0 0)";
-
splashBackground = "oklch(0.19 0 0)";
-
disableSmoothScroll = false;
-
};
-
vencord = {
-
settings = {
-
autoUpdate = true;
-
autoUpdateNotification = true;
-
useQuickCss = true;
-
themeLinks = [
-
"https://refact0r.github.io/system24/build/system24.css"
-
];
-
enabledThemes = [ ];
-
plugins = {
-
FakeNitro = {
-
enabled = true;
-
enableStickerBypass = true;
-
enableStreamQualityBypass = true;
-
enableEmojiBypass = true;
-
transformEmojis = true;
-
transformStickers = true;
-
};
-
MessageLogger = {
-
enabled = true;
-
collapseDeleted = false;
-
deleteStyle = "text";
-
};
-
BetterFolders = {
-
enabled = true;
-
sidebar = true;
-
showFolderIcon = 1;
-
};
-
SpotifyCrack.enabled = true;
-
YoutubeAdblock.enabled = true;
-
AlwaysTrust.enabled = true;
-
NoTrack.enabled = true;
-
};
-
};
-
};
-
};
-
}
-46
home-manager/app/firefox.nix
···
-
{
-
...
-
}:
-
{
-
# link the dots user.js into the folder
-
home.file.".mozilla/firefox/default/user.js".source = ../dots/user.js;
-
-
programs.firefox = {
-
enable = true;
-
profiles.default = {
-
search = {
-
force = true;
-
default = "DuckDuckGo";
-
privateDefault = "DuckDuckGo";
-
order = [ "DuckDuckGo" ];
-
engines = {
-
"Bing".metaData = {
-
hidden = true;
-
hideOneOffButton = true;
-
};
-
"Google".metaData = {
-
hidden = true;
-
hideOneOffButton = true;
-
};
-
"Wikipedia (en)".metaData = {
-
hidden = true;
-
hideOneOffButton = true;
-
};
-
"Amazon.com".metaData = {
-
hidden = true;
-
hideOneOffButton = true;
-
};
-
"eBay".metaData = {
-
hidden = true;
-
hideOneOffButton = true;
-
};
-
"Bookmarks".metaData = {
-
hidden = true;
-
hideOneOffButton = true;
-
};
-
};
-
};
-
bookmarks = { };
-
};
-
};
-
}
-17
home-manager/app/foot.nix
···
-
{
-
...
-
}:
-
{
-
programs.foot = {
-
enable = true;
-
settings = {
-
main = {
-
pad = "12x12 center";
-
font = "FiraCode NerdFont:size=13";
-
};
-
colors = {
-
alpha = 0.8;
-
};
-
};
-
};
-
}
-110
home-manager/app/gh-dash.nix
···
-
{
-
...
-
}:
-
{
-
programs.gh-dash = {
-
enable = true;
-
settings = {
-
prSections = [
-
{
-
title = "Mine";
-
filters = "is:open author:@me updated:>={{ nowModify \"-3w\" }} sort:updated-desc archived:false";
-
layout.author.hidden = true;
-
}
-
{
-
title = "Review";
-
filters = "sort:updated-desc is:pr is:open review-requested:taciturnaxolotl archived:false";
-
}
-
{
-
title = "All";
-
filters = "sort:updated-desc is:pr is:open user:@me archived:false";
-
}
-
];
-
issuesSections = [
-
{
-
title = "Open";
-
filters = "user:@me is:open archived:false -author:@me sort:updated-desc";
-
}
-
{
-
title = "Assigned";
-
filters = "is:issue state:open archived:false assignee:@me sort:updated-desc ";
-
}
-
{
-
title = "Creator";
-
filters = "author:@me is:open archived:false";
-
}
-
{
-
title = "Hackclub";
-
filters = "is:issue org:hackclub archived:false involves:@me sort:updated-desc is:open";
-
}
-
{
-
title = "All";
-
filters = "is:issue involves:@me archived:false sort:updated-desc is:open";
-
}
-
];
-
pager.diff = "diffnav";
-
defaults = {
-
view = "prs";
-
refetchIntervalMinutes = 5;
-
layout.prs = {
-
repoName = {
-
grow = true;
-
width = 10;
-
hidden = false;
-
};
-
base.hidden = true;
-
};
-
preview = {
-
open = true;
-
width = 84;
-
};
-
prsLimit = 20;
-
issuesLimit = 20;
-
};
-
repoPaths = {
-
"taciturnaxolotl/*" = "~/code/personal/*";
-
"hackclub/*" = "~/code/hackclub/*";
-
};
-
keybindings = {
-
universal = [
-
{
-
key = "g";
-
name = "lazygit";
-
command = "cd {{.RepoPath}} && lazygit";
-
}
-
];
-
prs = [
-
{
-
key = "O";
-
builtin = "checkout";
-
}
-
{
-
key = "m";
-
command = "gh pr merge --admin --repo {{.RepoName}} {{.PrNumber}}";
-
}
-
{
-
key = "C";
-
name = "code review";
-
command = "tmux new-window -c {{.RepoPath}} 'nvim -c \":silent Octo pr edit {{.PrNumber}}\"'";
-
}
-
{
-
key = "a";
-
name = "lazygit add";
-
command = "cd {{.RepoPath}} && git add -A && lazygit";
-
}
-
{
-
key = "v";
-
name = "approve";
-
command = "gh pr review --repo {{.RepoName}} --approve --body \"$(gum input --prompt='Approval Comment: ')\" {{.PrNumber}}";
-
}
-
];
-
};
-
theme = {
-
ui = {
-
sectionsShowCount = true;
-
table.compact = false;
-
};
-
};
-
};
-
};
-
}
-15
home-manager/app/ghostty.nix
···
-
{
-
...
-
}:
-
{
-
home.file.".config/ghostty/config".text = ''
-
foreground = "#a7b1d3"
-
mouse-hide-while-typing = true
-
resize-overlay = "never"
-
theme = "catppuccin-mocha"
-
window-decoration = false
-
window-padding-x = 12
-
window-padding-y = 12
-
keybind = ctrl+shift+w=close_surface
-
'';
-
}
-46
home-manager/app/git.nix
···
-
{
-
...
-
}:
-
{
-
# git config
-
programs.git = {
-
enable = true;
-
userName = "Kieran Klukas";
-
userEmail = "me@dunkirk.sh";
-
aliases = {
-
c = "commit";
-
p = "push";
-
ch = "checkout";
-
pushfwl = "push --force-with-lease --force-if-includes";
-
};
-
extraConfig = {
-
branch.sort = "-committerdate";
-
pager.branch = false;
-
column.ui = "auto";
-
commit.gpgsign = true;
-
gpg.format = "ssh";
-
gpg.ssh.allowedSignersFile = "~/.ssh/allowedSigners";
-
user.signingKey = "~/.ssh/id_rsa.pub";
-
pull.rebase = true;
-
push.autoSetupRemote = true;
-
init.defaultBranch = "main";
-
};
-
delta.enable = true;
-
};
-
-
programs.gh.enable = true;
-
programs.lazygit = {
-
enable = true;
-
settings = {
-
gui.theme = {
-
lightTheme = false;
-
activeBorderColor = [
-
"blue"
-
"bold"
-
];
-
inactiveBorderColor = [ "black" ];
-
selectedLineBgColor = [ "default" ];
-
};
-
};
-
};
-
}
-25
home-manager/app/irssi.nix
···
-
{
-
...
-
}:
-
{
-
programs.irssi = {
-
enable = true;
-
extraConfig = ''
-
settings = {
-
core = {
-
real_name = "kieran klukas";
-
user_name = "kierank";
-
nick = "taciturnaxolotl";
-
};
-
"fe-common/core" = { theme = "override"; };
-
};
-
'';
-
};
-
-
home.file."/home/kierank/.irssi/override.theme".text = ''
-
abstracts = {
-
sb_background = "%0%w";
-
window_border = "%0%w";
-
};
-
'';
-
}
-15
home-manager/app/obs.nix
···
-
{
-
pkgs,
-
...
-
}:
-
{
-
# obs config
-
programs.obs-studio = {
-
enable = true;
-
plugins = with pkgs.obs-studio-plugins; [
-
wlrobs
-
obs-backgroundremoval
-
obs-pipewire-audio-capture
-
];
-
};
-
}
-47
home-manager/app/qutebrowser.nix
···
-
{
-
...
-
}:
-
{
-
programs.qutebrowser = {
-
enable = true;
-
settings = {
-
colors.webpage = {
-
darkmode.enabled = true;
-
preferred_color_scheme = "dark";
-
};
-
content.blocking = {
-
enabled = true;
-
hosts.lists = [
-
"https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
-
];
-
method = "both";
-
};
-
url.default_page = "http://ember:8081/";
-
url.start_pages = [ "http://ember:8081/" ];
-
};
-
extraConfig = ''
-
config.bind("<Space>ff", "cmd-set-text -s :open")
-
config.bind("<Space>fw", "cmd-set-text -s :open -t")
-
config.bind("<Space>fb", "cmd-set-text -s :tab-focus")
-
config.bind("<Space>fo", "history -t")
-
config.bind("<Space><Return>", "bookmark-list --jump")
-
config.bind("<Space>bc", "tab-clone")
-
config.bind("<Space>bZ", "tab-only")
-
config.bind("<Space>p", "tab-pin")
-
config.bind("<Space>r", "reload")
-
config.bind("<Space>yy", "yank")
-
config.bind("<Space>yd", "yank domain")
-
config.bind("<Space>ym", "yank inline [{title}]({url:yank})")
-
config.bind("<Space>yn", "yank inline ({url:yank})[{title}]")
-
config.bind("<Space>yt", "yank title")
-
config.bind("<Ctrl-c>", "tab-close")
-
config.bind("<Ctrl-C>", "tab-close -o")
-
config.bind("<Space>i", "config-cycle content.images true false")
-
config.bind("<Space>j", "config-cycle content.javascript.enabled true false")
-
config.bind("<Ctrl-V>", "fake-key -g <Ctrl-v>")
-
config.bind("<ctrl-alt-c>", "config-cycle tabs.show always never")
-
-
c.url.searchengines = { "DEFAULT": "https://s.dunkirk.sh/?q={}" }
-
'';
-
};
-
}
+20 -8
home-manager/app/shell.nix home-manager/modules/shell.nix
···
{
lib,
+
pkgs,
config,
-
pkgs,
+
inputs,
...
}:
{
-
config = {
+
options.dots.shell.enable = lib.mkEnableOption "Custom shell config";
+
config = lib.mkIf config.dots.shell.enable {
programs.oh-my-posh = {
enable = true;
enableZshIntegration = true;
···
enable = true;
enableZshIntegration = true;
};
-
programs.fzf = {
enable = true;
enableZshIntegration = true;
···
bg = lib.mkForce "";
};
};
-
programs.atuin = {
enable = true;
settings = {
···
sync_frequency = "5m";
sync_address = "https://api.atuin.sh";
search_mode = "fuzzy";
-
#session_path = config.age.secrets."atuin-session".path;
-
#key_path = config.age.secrets."atuin-key".path;
update_check = false;
style = "auto";
sync.records = true;
dotfiles.enabled = false;
};
};
-
programs.yazi = {
enable = true;
enableZshIntegration = true;
};
-
programs.bat.enable = true;
+
home.packages = with pkgs; [
+
inputs.terminal-wakatime.packages.${pkgs.system}.default
+
unzip
+
dog
+
dust
+
wget
+
curl
+
jq
+
fd
+
eza
+
bat
+
ripgrep-all
+
neofetch
+
];
+
+
dots.shell.git.enable = lib.mkDefault true;
};
}
-26
home-manager/app/spotify.nix
···
-
{
-
inputs,
-
pkgs,
-
...
-
}:
-
{
-
imports = [
-
inputs.spicetify-nix.homeManagerModules.default
-
];
-
-
# spotify config
-
programs.spicetify =
-
let
-
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
-
in
-
{
-
enable = true;
-
enabledExtensions = with spicePkgs.extensions; [
-
adblock
-
hidePodcasts
-
shuffle # shuffle+ (special characters are sanitized out of extension names)
-
];
-
theme = spicePkgs.themes.text;
-
colorScheme = "CatppuccinMocha";
-
};
-
}
home-manager/app/tofi.nix home-manager/modules/wm/hyprland/tofi.nix
-89
home-manager/app/vscode.nix
···
-
{
-
inputs,
-
lib,
-
pkgs,
-
...
-
}:
-
{
-
# vscode config
-
programs.vscode = {
-
enable = true;
-
package = pkgs.unstable.vscode;
-
-
profiles.default = {
-
extensions = with pkgs.vscode-marketplace; [
-
ms-vscode.live-server
-
formulahendry.auto-rename-tag
-
edwinkofler.vscode-assorted-languages
-
golang.go
-
catppuccin.catppuccin-vsc-icons
-
eamodio.gitlens
-
yzhang.markdown-all-in-one
-
github.vscode-github-actions
-
yoavbls.pretty-ts-errors
-
esbenp.prettier-vscode
-
ms-vscode.vscode-serial-monitor
-
prisma.prisma
-
ms-azuretools.vscode-docker
-
astro-build.astro-vscode
-
github.copilot
-
github.copilot-chat
-
dotjoshjohnson.xml
-
mikestead.dotenv
-
bradlc.vscode-tailwindcss
-
mechatroner.rainbow-csv
-
wakatime.vscode-wakatime
-
paulober.pico-w-go
-
ms-python.python
-
karunamurti.tera
-
biomejs.biome
-
bschulte.love
-
yinfei.luahelper
-
tamasfe.even-better-toml
-
fill-labs.dependi
-
rust-lang.rust-analyzer
-
dustypomerleau.rust-syntax
-
# Add catppuccin theme
-
catppuccin.catppuccin-vsc
-
inputs.frc-nix.packages.${pkgs.system}.vscode-wpilib
-
];
-
userSettings = {
-
"editor.semanticHighlighting.enabled" = true;
-
"terminal.integrated.minimumContrastRatio" = 1;
-
"window.titleBarStyle" = "custom";
-
-
"gopls" = {
-
"ui.semanticTokens" = true;
-
};
-
"workbench.colorTheme" = "Catppuccin Macchiato";
-
"workbench.iconTheme" = "catppuccin-macchiato";
-
"catppuccin.accentColor" = lib.mkForce "blue";
-
"editor.fontFamily" = "'FiraCode Nerd Font', 'monospace', monospace";
-
"git.autofetch" = true;
-
"git.confirmSync" = false;
-
"github.copilot.editor.enableAutoCompletions" = false;
-
-
"editor.formatOnSave" = true;
-
-
"editor.defaultFormatter" = "biomejs.biome";
-
"[go]" = {
-
"editor.defaultFormatter" = "golang.go";
-
};
-
"[yaml]" = {
-
"editor.defaultFormatter" = "esbenp.prettier-vscode";
-
};
-
"[lua]" = {
-
"editor.defaultFormatter" = "yinfei.luahelper";
-
};
-
"[html]" = {
-
"editor.defaultFormatter" = "esbenp.prettier-vscode";
-
};
-
"[java]" = {
-
"editor.defaultFormatter" = "esbenp.prettier-vscode";
-
};
-
-
"editor.linkedEditing" = true;
-
};
-
};
-
};
-
}
+2 -2
home-manager/dots/hyprpaper.conf
···
-
preload=~/.config/hypr/wall/frameworks.jpg
-
wallpaper=,~/.config/hypr/wall/frameworks.jpg
+
preload=~/.config/wallpapers/frameworks.jpg
+
wallpaper=,~/.config/wallpapers/frameworks.jpg
+1 -1
home-manager/dots/randomize-wallpaper.sh
···
#!/usr/bin/env bash
-
WALLPAPER_DIR="$HOME/.config/hypr/wall"
+
WALLPAPER_DIR="$HOME/.config/wallpapers"
CURRENT_WALL=$(hyprctl hyprpaper listloaded)
# Get a random wallpaper that is not the current one
+6 -46
home-manager/machines/ember/default.nix
···
{
pkgs,
-
inputs,
-
system,
...
}:
{
imports = [
-
# inputs
-
inputs.catppuccin.homeModules.catppuccin
-
-
# shell
-
../../app/shell.nix
-
../../app/git.nix
+
../../modules
];
-
nixpkgs = {
-
overlays = [
-
(final: prev: {
-
unstable = import inputs.nixpkgs-unstable {
-
inherit system;
-
config.allowUnfree = true;
-
};
-
})
-
];
-
# Configure your nixpkgs instance
-
config = {
-
# Disable if you don't want unfree packages
-
allowUnfree = true;
-
# Workaround for https://github.com/nix-community/home-manager/issues/2942
-
allowUnfreePredicate = _: true;
-
};
-
};
+
nixpkgs.enable = true;
home = {
username = "kierank";
homeDirectory = "/home/kierank";
packages = with pkgs; [
-
# CLI tools
-
bat
-
fd
-
eza
-
xh
-
dust
-
ripgrep-all
-
inputs.terminal-wakatime.packages.${system}.default
-
jq
-
htop
-
btop
-
fzf
-
curl
-
wget
-
git
-
neofetch
-
tmux
-
unzip
-
inputs.nixvim.packages.${system}.default
-
dog
-
# apps
iodine
mosh
···
# langs
go
];
+
};
+
+
dots = {
+
shell.enable = true;
};
# Enable home-manager
+22 -112
home-manager/machines/moonlark/default.nix
···
-
{ inputs, ... }:
+
{ ... }:
{
imports = [
-
# inputs
-
inputs.catppuccin.homeModules.catppuccin
-
-
# window manager
-
../../wm/hyprland
-
-
# shell
-
../../app/shell.nix
-
../../app/alacritty.nix
-
-
# apps
-
../../app/git.nix
-
../../app/foot.nix
-
../../app/spotify.nix
-
../../app/tofi.nix
-
../../app/vscode.nix
-
../../app/obs.nix
-
../../app/ghostty.nix
-
../../app/irssi.nix
-
../../app/qutebrowser.nix
-
../../app/gh-dash.nix
-
# ../../app/discord.nix
-
../../app/crush.nix
+
../../modules
];
-
nixpkgs = {
-
overlays = [
-
(final: prev: {
-
unstable = import inputs.nixpkgs-unstable {
-
system = "x86_64-linux";
-
config.allowUnfree = true;
-
};
-
})
-
inputs.nix-vscode-extensions.overlays.default
-
inputs.catppuccin-vsc.overlays.default
-
];
-
# Configure your nixpkgs instance
-
config = {
-
# Disable if you don't want unfree packages
-
allowUnfree = true;
-
# Workaround for https://github.com/nix-community/home-manager/issues/2942
-
allowUnfreePredicate = _: true;
-
};
-
};
+
nixpkgs.enable = true;
home = {
username = "kierank";
homeDirectory = "/home/kierank";
};
-
# Enable home-manager and git
-
programs.home-manager.enable = true;
-
-
# Nicely reload system units when changing configs
-
systemd.user.startServices = "sd-switch";
-
-
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
-
home.stateVersion = "23.05";
-
-
###########
-
# theming #
-
###########
-
-
# catppuccin
-
catppuccin = {
-
enable = true;
-
accent = "green";
-
flavor = "macchiato";
-
cursors = {
+
dots = {
+
shell = {
enable = true;
-
accent = "blue";
-
flavor = "macchiato";
};
-
gtk = {
-
enable = true;
-
tweaks = [ "normal" ];
+
terminal = {
+
alacritty.enable = true;
+
ghostty.enable = true;
};
-
qutebrowser.enable = true;
-
};
-
-
dconf.settings = {
-
"org/gnome/desktop/interface" = {
-
color-scheme = "prefer-dark";
+
apps = {
+
irssi.enable = true;
+
qutebrowser.enable = true;
+
spotify.enable = true;
+
vscode.enable = true;
+
crush.enable = true;
};
+
theming.enable = true;
+
wm.hyprland.enable = true;
};
-
gtk = {
-
enable = true;
-
};
+
# Enable home-manager and git
+
programs.home-manager.enable = true;
-
qt = {
-
style.name = "kvantum";
-
platformTheme.name = "kvantum";
-
enable = true;
-
};
+
# Nicely reload system units when changing configs
+
systemd.user.startServices = "sd-switch";
-
############
-
# services #
-
############
-
-
# auto disk mounting
-
services.udiskie = {
-
enable = true;
-
settings = {
-
program_options = {
-
udisks_version = 2;
-
tray = false;
-
};
-
notifications = {
-
device_unmounted = false;
-
device_added = -1;
-
device_removed = -1;
-
device_mounted = -1;
-
};
-
};
-
};
-
-
# notifications
-
services.mako = {
-
enable = true;
-
settings = {
-
default-timeout = 4000;
-
margin = "58,6";
-
font = "Fira Sans 12";
-
border-radius = 5;
-
};
-
};
+
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
+
home.stateVersion = "23.05";
}
+6 -41
home-manager/machines/nest/default.nix
···
}:
{
imports = [
-
# inputs
-
inputs.catppuccin.homeModules.catppuccin
-
-
# shell
-
../../app/shell.nix
-
../../app/git.nix
+
../../modules
];
-
nixpkgs = {
-
overlays = [
-
(final: prev: {
-
unstable = import inputs.nixpkgs-unstable {
-
inherit system;
-
config.allowUnfree = true;
-
};
-
})
-
];
-
# Configure your nixpkgs instance
-
config = {
-
# Disable if you don't want unfree packages
-
allowUnfree = true;
-
# Workaround for https://github.com/nix-community/home-manager/issues/2942
-
allowUnfreePredicate = _: true;
-
};
-
};
+
nixpkgs.enable = true;
home = {
username = "kierank";
homeDirectory = "/home/kierank";
packages = with pkgs; [
-
# CLI tools
-
bat
-
fd
-
eza
-
xh
-
dust
-
ripgrep-all
-
inputs.terminal-wakatime.packages.${system}.default
-
jq
-
htop
-
btop
-
fzf
-
curl
-
wget
-
git
neofetch
-
tmux
-
unzip
inputs.nixvim.packages.${system}.default
-
dog
];
+
};
+
+
dots = {
+
shell.enable = true;
};
# Enable home-manager
+7 -75
home-manager/machines/tacyon/default.nix
···
}:
{
imports = [
-
# inputs
-
inputs.catppuccin.homeModules.catppuccin
-
-
# shell
-
../../app/shell.nix
-
../../app/git.nix
+
../../modules
];
-
nixpkgs = {
-
overlays = [
-
(final: prev: {
-
unstable = import inputs.nixpkgs-unstable {
-
inherit system;
-
config.allowUnfree = true;
-
};
-
})
-
];
-
# Configure your nixpkgs instance
-
config = {
-
# Disable if you don't want unfree packages
-
allowUnfree = true;
-
# Workaround for https://github.com/nix-community/home-manager/issues/2942
-
allowUnfreePredicate = _: true;
-
};
-
};
+
nixpkgs.enable = true;
home = {
username = "pi";
homeDirectory = "/home/pi";
packages = with pkgs; [
-
# CLI tools
-
bat
-
fd
-
eza
-
xh
-
dust
-
ripgrep-all
-
inputs.terminal-wakatime.packages.${system}.default
-
jq
-
htop
-
btop
-
fzf
-
curl
-
wget
-
git
-
neofetch
-
tmux
-
unzip
inputs.nixvim.packages.${system}.default
-
dog
# languages
go
···
];
};
+
dots = {
+
shell.enable = true;
+
theming.enable = true;
+
};
+
fonts.fontconfig.enable = true;
# Enable home-manager
···
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
home.stateVersion = "23.05";
-
-
# catppuccin
-
catppuccin = {
-
enable = true;
-
accent = "green";
-
flavor = "macchiato";
-
cursors = {
-
enable = true;
-
accent = "blue";
-
flavor = "macchiato";
-
};
-
gtk = {
-
enable = true;
-
tweaks = [ "normal" ];
-
};
-
qutebrowser.enable = true;
-
};
-
-
dconf.settings = {
-
"org/gnome/desktop/interface" = {
-
color-scheme = "prefer-dark";
-
};
-
};
-
-
gtk = {
-
enable = true;
-
};
-
-
qt = {
-
style.name = "kvantum";
-
platformTheme.name = "kvantum";
-
enable = true;
-
};
home.file.".config/openbox/lxde-pi-rc.xml".source = ../../dots/lxde-pi-rc.xml;
}
+125
home-manager/modules/apps/crush.nix
···
+
{
+
lib,
+
config,
+
inputs,
+
...
+
}:
+
{
+
imports = [
+
inputs.crush.homeManagerModules.default
+
];
+
+
options.dots.apps.crush.enable = lib.mkEnableOption "Enable Crush config";
+
config = lib.mkIf config.dots.apps.crush.enable {
+
programs.crush = {
+
enable = true;
+
settings = {
+
lsp = {
+
go = {
+
command = "gopls";
+
};
+
typescript = {
+
command = "typescript-language-server";
+
args = [ "--stdio" ];
+
};
+
nix = {
+
command = "nil";
+
};
+
};
+
mcp = {
+
context7 = {
+
url = "https://mcp.context7.com/mcp";
+
type = "http";
+
};
+
sequential-thinking = {
+
command = "bunx";
+
args = [
+
"-y"
+
"@modelcontextprotocol/server-sequential-thinking"
+
];
+
};
+
};
+
models = {
+
large = {
+
model = "claude-3.7-sonnet";
+
provider = "copilot";
+
};
+
small = {
+
model = "gemini-2.0-flash-001";
+
provider = "copilot";
+
};
+
};
+
providers = {
+
copilot = {
+
name = "Copilot";
+
type = "openai";
+
base_url = "https://api.githubcopilot.com";
+
api_key = "$(bash ~/.config/crush/copilot.sh)";
+
extra_headers = {
+
"Editor-Version" = "CRUSH/1.0";
+
"Editor-Plugin-Version" = "CRUSH/1.0";
+
"Copilot-Integration-Id" = "vscode-chat";
+
};
+
models = [
+
{
+
id = "gpt-4.1";
+
model = "Copilot: GPT 4.1";
+
cost_per_1m_in = 0;
+
cost_per_1m_out = 0;
+
cost_per_1m_in_cached = 0;
+
cost_per_1m_out_cached = 0;
+
context_window = 128000;
+
default_max_tokens = 30000;
+
can_reason = false;
+
has_reasoning_efforts = false;
+
supports_attachments = false;
+
}
+
{
+
id = "gpt-4o";
+
model = "Copilot: GPT 4o";
+
cost_per_1m_in = 0;
+
cost_per_1m_out = 0;
+
cost_per_1m_in_cached = 0;
+
cost_per_1m_out_cached = 0;
+
context_window = 128000;
+
default_max_tokens = 32000;
+
can_reason = false;
+
has_reasoning_efforts = false;
+
supports_attachments = false;
+
}
+
{
+
id = "claude-sonnet-4";
+
model = "Copilot: Claude Sonnet 4";
+
cost_per_1m_in = 0;
+
cost_per_1m_out = 0;
+
cost_per_1m_in_cached = 0;
+
cost_per_1m_out_cached = 0;
+
context_window = 200000;
+
default_max_tokens = 50000;
+
can_reason = true;
+
has_reasoning_efforts = false;
+
supports_attachments = true;
+
}
+
{
+
id = "gemini-2.5-pro";
+
model = "Gemini 2.5 Pro";
+
cost_per_1m_in = 0;
+
cost_per_1m_out = 0;
+
cost_per_1m_in_cached = 0;
+
cost_per_1m_out_cached = 0;
+
context_window = 100000;
+
default_max_tokens = 30000;
+
can_reason = true;
+
has_reasoning_efforts = false;
+
supports_attachments = true;
+
}
+
];
+
};
+
};
+
};
+
};
+
+
xdg.configFile."crush/copilot.sh".source = ../../dots/copilot.sh;
+
xdg.configFile."crush/anthropic.sh".source = ../../dots/anthropic.sh;
+
};
+
}
+10
home-manager/modules/apps/default.nix
···
+
{ ... }:
+
{
+
imports = [
+
./irssi.nix
+
./crush.nix
+
./qutebrowser.nix
+
./spotify.nix
+
./vscode.nix
+
];
+
}
+25
home-manager/modules/apps/irssi.nix
···
+
{ lib, config, ... }:
+
{
+
options.dots.apps.irssi.enable = lib.mkEnableOption "Enable irssi config";
+
config = lib.mkIf config.dots.apps.irssi.enable {
+
programs.irssi = {
+
enable = true;
+
extraConfig = ''
+
settings = {
+
core = {
+
real_name = "kieran klukas";
+
user_name = "kierank";
+
nick = "taciturnaxolotl";
+
};
+
"fe-common/core" = { theme = "override"; };
+
};
+
'';
+
};
+
home.file."/home/kierank/.irssi/override.theme".text = ''
+
abstracts = {
+
sb_background = "%0%w";
+
window_border = "%0%w";
+
};
+
'';
+
};
+
}
+48
home-manager/modules/apps/qutebrowser.nix
···
+
{ lib, config, ... }:
+
{
+
options.dots.apps.qutebrowser.enable = lib.mkEnableOption "Enable Qutebrowser config";
+
config = lib.mkIf config.dots.apps.qutebrowser.enable {
+
programs.qutebrowser = {
+
enable = true;
+
settings = {
+
colors.webpage = {
+
darkmode.enabled = true;
+
preferred_color_scheme = "dark";
+
};
+
content.blocking = {
+
enabled = true;
+
hosts.lists = [
+
"https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts"
+
];
+
method = "both";
+
};
+
url.default_page = "http://ember:8081/";
+
url.start_pages = [ "http://ember:8081/" ];
+
};
+
extraConfig = ''
+
config.bind("<Space>ff", "cmd-set-text -s :open")
+
config.bind("<Space>fw", "cmd-set-text -s :open -t")
+
config.bind("<Space>fb", "cmd-set-text -s :tab-focus")
+
config.bind("<Space>fo", "history -t")
+
config.bind("<Space><Return>", "bookmark-list --jump")
+
config.bind("<Space>bc", "tab-clone")
+
config.bind("<Space>bZ", "tab-only")
+
config.bind("<Space>p", "tab-pin")
+
config.bind("<Space>r", "reload")
+
config.bind("<Space>yy", "yank")
+
config.bind("<Space>yd", "yank domain")
+
config.bind("<Space>ym", "yank inline [{title}]({url:yank})")
+
config.bind("<Space>yn", "yank inline ({url:yank})[{title}]")
+
config.bind("<Space>yt", "yank title")
+
config.bind("<Ctrl-c>", "tab-close")
+
config.bind("<Ctrl-C>", "tab-close -o")
+
config.bind("<Space>i", "config-cycle content.images true false")
+
config.bind("<Space>j", "config-cycle content.javascript.enabled true false")
+
config.bind("<Ctrl-V>", "fake-key -g <Ctrl-v>")
+
config.bind("<ctrl-alt-c>", "config-cycle tabs.show always never")
+
+
c.url.searchengines = { "DEFAULT": "https://s.dunkirk.sh/?q={}" }
+
'';
+
};
+
};
+
}
+30
home-manager/modules/apps/spotify.nix
···
+
{
+
lib,
+
pkgs,
+
config,
+
inputs,
+
...
+
}:
+
{
+
imports = [
+
inputs.spicetify-nix.homeManagerModules.default
+
];
+
+
options.dots.apps.spotify.enable = lib.mkEnableOption "Enable Spotify config (spicetify)";
+
config = lib.mkIf config.dots.apps.spotify.enable {
+
programs.spicetify =
+
let
+
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.system};
+
in
+
{
+
enable = true;
+
enabledExtensions = with spicePkgs.extensions; [
+
adblock
+
hidePodcasts
+
shuffle
+
];
+
theme = spicePkgs.themes.text;
+
colorScheme = "CatppuccinMocha";
+
};
+
};
+
}
+86
home-manager/modules/apps/vscode.nix
···
+
{
+
lib,
+
pkgs,
+
config,
+
inputs,
+
...
+
}:
+
{
+
options.dots.apps.vscode.enable = lib.mkEnableOption "Enable VSCode config";
+
config = lib.mkIf config.dots.apps.vscode.enable {
+
nixpkgs.overlays = [
+
inputs.nix-vscode-extensions.overlays.default
+
inputs.catppuccin-vsc.overlays.default
+
];
+
programs.vscode = {
+
enable = true;
+
package = pkgs.unstable.vscode;
+
profiles.default = {
+
extensions = with pkgs.vscode-marketplace; [
+
ms-vscode.live-server
+
formulahendry.auto-rename-tag
+
edwinkofler.vscode-assorted-languages
+
golang.go
+
catppuccin.catppuccin-vsc-icons
+
eamodio.gitlens
+
yzhang.markdown-all-in-one
+
github.vscode-github-actions
+
yoavbls.pretty-ts-errors
+
esbenp.prettier-vscode
+
ms-vscode.vscode-serial-monitor
+
prisma.prisma
+
ms-azuretools.vscode-docker
+
astro-build.astro-vscode
+
github.copilot
+
github.copilot-chat
+
dotjoshjohnson.xml
+
mikestead.dotenv
+
bradlc.vscode-tailwindcss
+
mechatroner.rainbow-csv
+
wakatime.vscode-wakatime
+
paulober.pico-w-go
+
ms-python.python
+
karunamurti.tera
+
biomejs.biome
+
bschulte.love
+
yinfei.luahelper
+
tamasfe.even-better-toml
+
fill-labs.dependi
+
rust-lang.rust-analyzer
+
dustypomerleau.rust-syntax
+
catppuccin.catppuccin-vsc
+
inputs.frc-nix.packages.${pkgs.system}.vscode-wpilib
+
];
+
userSettings = {
+
"editor.semanticHighlighting.enabled" = true;
+
"terminal.integrated.minimumContrastRatio" = 1;
+
"window.titleBarStyle" = "custom";
+
"gopls" = {
+
"ui.semanticTokens" = true;
+
};
+
"workbench.colorTheme" = "Catppuccin Macchiato";
+
"workbench.iconTheme" = "catppuccin-macchiato";
+
"catppuccin.accentColor" = lib.mkForce "blue";
+
"editor.fontFamily" = "'FiraCode Nerd Font', 'monospace', monospace";
+
"git.autofetch" = true;
+
"git.confirmSync" = false;
+
"github.copilot.editor.enableAutoCompletions" = false;
+
"editor.formatOnSave" = true;
+
"editor.defaultFormatter" = "biomejs.biome";
+
"[go]" = {
+
"editor.defaultFormatter" = "golang.go";
+
};
+
"[yaml]" = {
+
"editor.defaultFormatter" = "esbenp.prettier-vscode";
+
};
+
"[lua]" = {
+
"editor.defaultFormatter" = "yinfei.luahelper";
+
};
+
"[html]" = {
+
"editor.defaultFormatter" = "esbenp.prettier-vscode";
+
};
+
};
+
};
+
};
+
};
+
}
+13
home-manager/modules/default.nix
···
+
{ ... }:
+
{
+
imports = [
+
./git.nix
+
./shell.nix
+
./terminal.nix
+
./theming.nix
+
./apps
+
./nixpkgs.nix
+
./wallpapers.nix
+
./wm/hyprland
+
];
+
}
+152
home-manager/modules/git.nix
···
+
{ lib, config, ... }:
+
{
+
options.dots.shell.git.enable = lib.mkEnableOption {
+
description = "Enable global Git configuration";
+
};
+
config = lib.mkIf config.dots.shell.git.enable {
+
programs.git = {
+
enable = true;
+
userName = "Kieran Klukas";
+
userEmail = "me@dunkirk.sh";
+
aliases = {
+
c = "commit";
+
p = "push";
+
ch = "checkout";
+
pushfwl = "push --force-with-lease --force-if-includes";
+
};
+
extraConfig = {
+
branch.sort = "-committerdate";
+
pager.branch = false;
+
column.ui = "auto";
+
commit.gpgsign = true;
+
gpg.format = "ssh";
+
gpg.ssh.allowedSignersFile = "~/.ssh/allowedSigners";
+
user.signingKey = "~/.ssh/id_rsa.pub";
+
pull.rebase = true;
+
push.autoSetupRemote = true;
+
init.defaultBranch = "main";
+
};
+
delta.enable = true;
+
};
+
programs.gh.enable = true;
+
programs.lazygit = {
+
enable = true;
+
settings = {
+
gui.theme = {
+
lightTheme = false;
+
activeBorderColor = [
+
"blue"
+
"bold"
+
];
+
inactiveBorderColor = [ "black" ];
+
selectedLineBgColor = [ "default" ];
+
};
+
};
+
};
+
programs.gh-dash = {
+
enable = true;
+
settings = {
+
prSections = [
+
{
+
title = "Mine";
+
filters = "is:open author:@me updated:>={{ nowModify \"-3w\" }} sort:updated-desc archived:false";
+
layout.author.hidden = true;
+
}
+
{
+
title = "Review";
+
filters = "sort:updated-desc is:pr is:open review-requested:taciturnaxolotl archived:false";
+
}
+
{
+
title = "All";
+
filters = "sort:updated-desc is:pr is:open user:@me archived:false";
+
}
+
];
+
issuesSections = [
+
{
+
title = "Open";
+
filters = "user:@me is:open archived:false -author:@me sort:updated-desc";
+
}
+
{
+
title = "Assigned";
+
filters = "is:issue state:open archived:false assignee:@me sort:updated-desc ";
+
}
+
{
+
title = "Creator";
+
filters = "author:@me is:open archived:false";
+
}
+
{
+
title = "Hackclub";
+
filters = "is:issue org:hackclub archived:false involves:@me sort:updated-desc is:open";
+
}
+
{
+
title = "All";
+
filters = "is:issue involves:@me archived:false sort:updated-desc is:open";
+
}
+
];
+
pager.diff = "diffnav";
+
defaults = {
+
view = "prs";
+
refetchIntervalMinutes = 5;
+
layout.prs = {
+
repoName = {
+
grow = true;
+
width = 10;
+
hidden = false;
+
};
+
base.hidden = true;
+
};
+
preview = {
+
open = true;
+
width = 84;
+
};
+
prsLimit = 20;
+
issuesLimit = 20;
+
};
+
repoPaths = {
+
"taciturnaxolotl/*" = "~/code/personal/*";
+
"hackclub/*" = "~/code/hackclub/*";
+
};
+
keybindings = {
+
universal = [
+
{
+
key = "g";
+
name = "lazygit";
+
command = "cd {{.RepoPath}} && lazygit";
+
}
+
];
+
prs = [
+
{
+
key = "O";
+
builtin = "checkout";
+
}
+
{
+
key = "m";
+
command = "gh pr merge --admin --repo {{.RepoName}} {{.PrNumber}}";
+
}
+
{
+
key = "C";
+
name = "code review";
+
command = "tmux new-window -c {{.RepoPath}} 'nvim -c \":silent Octo pr edit {{.PrNumber}}\"'";
+
}
+
{
+
key = "a";
+
name = "lazygit add";
+
command = "cd {{.RepoPath}} && git add -A && lazygit";
+
}
+
{
+
key = "v";
+
name = "approve";
+
command = "gh pr review --repo {{.RepoName}} --approve --body \"$(gum input --prompt='Approval Comment: ')\" {{.PrNumber}}";
+
}
+
];
+
};
+
theme = {
+
ui = {
+
sectionsShowCount = true;
+
table.compact = false;
+
};
+
};
+
};
+
};
+
};
+
}
+26
home-manager/modules/nixpkgs.nix
···
+
{
+
lib,
+
pkgs,
+
config,
+
inputs,
+
...
+
}:
+
{
+
options.nixpkgs.enable = lib.mkEnableOption "Enable custom nixpkgs overlays/config";
+
config = lib.mkIf config.nixpkgs.enable {
+
nixpkgs = {
+
overlays = [
+
(final: prev: {
+
unstable = import inputs.nixpkgs-unstable {
+
system = pkgs.stdenv.hostPlatform.system;
+
config.allowUnfree = true;
+
};
+
})
+
];
+
config = {
+
allowUnfree = true;
+
allowUnfreePredicate = _: true;
+
};
+
};
+
};
+
}
+55
home-manager/modules/terminal.nix
···
+
{ lib, config, ... }:
+
{
+
options.dots.terminal.alacritty.enable = lib.mkEnableOption "Enable Alacritty terminal config";
+
options.dots.terminal.ghostty.enable = lib.mkEnableOption "Enable Ghostty terminal config";
+
config = lib.mkMerge [
+
(lib.mkIf config.dots.terminal.alacritty.enable {
+
catppuccin.alacritty.flavor = "mocha";
+
programs.alacritty = {
+
enable = true;
+
settings = {
+
general.live_config_reload = true;
+
cursor = {
+
unfocused_hollow = true;
+
style = {
+
blinking = "On";
+
};
+
};
+
window = {
+
opacity = 0.88;
+
padding = {
+
x = 12;
+
y = 12;
+
};
+
};
+
font = {
+
size = 13;
+
normal = {
+
family = "JetBrainsMono Nerd Font";
+
};
+
};
+
colors = {
+
normal = {
+
magenta = lib.mkForce "#db87c5";
+
};
+
primary = {
+
foreground = lib.mkForce "#ABB2BF";
+
};
+
};
+
};
+
};
+
})
+
(lib.mkIf config.dots.terminal.ghostty.enable {
+
home.file.".config/ghostty/config".text = ''
+
foreground = "#a7b1d3"
+
mouse-hide-while-typing = true
+
resize-overlay = "never"
+
theme = "catppuccin-mocha"
+
window-decoration = false
+
window-padding-x = 12
+
window-padding-y = 12
+
keybind = ctrl+shift+w=close_surface
+
'';
+
})
+
];
+
}
+44
home-manager/modules/theming.nix
···
+
{
+
lib,
+
inputs,
+
config,
+
...
+
}:
+
{
+
imports = [
+
inputs.catppuccin.homeModules.catppuccin
+
];
+
+
options.dots.theming.enable = lib.mkEnableOption "Enable Catppuccin and GTK/QT themeing";
+
config = lib.mkIf config.dots.theming.enable {
+
+
catppuccin = {
+
enable = true;
+
accent = "green";
+
flavor = "macchiato";
+
cursors = {
+
enable = true;
+
accent = "blue";
+
flavor = "macchiato";
+
};
+
gtk = {
+
enable = true;
+
tweaks = [ "normal" ];
+
};
+
qutebrowser.enable = true;
+
};
+
dconf.settings = {
+
"org/gnome/desktop/interface" = {
+
color-scheme = "prefer-dark";
+
};
+
};
+
gtk = {
+
enable = true;
+
};
+
qt = {
+
style.name = "kvantum";
+
platformTheme.name = "kvantum";
+
enable = true;
+
};
+
};
+
}
+26
home-manager/modules/wallpapers.nix
···
+
{ lib, config, ... }:
+
{
+
options.dots.wallpapers.enable = lib.mkEnableOption "Enable wallpapers config globally";
+
config = lib.mkIf config.dots.wallpapers.enable {
+
xdg.configFile."wallpapers/randomize.sh".source = ../dots/randomize-wallpaper.sh;
+
xdg.configFile."wallpapers/acon-pier.jpg".source = ../dots/wallpapers/acon-pier.jpg;
+
xdg.configFile."wallpapers/acon-forest.jpg".source = ../dots/wallpapers/acon-forest.jpg;
+
xdg.configFile."wallpapers/acon-gradient-clouds.jpg".source =
+
../dots/wallpapers/acon-gradient-clouds.jpg;
+
xdg.configFile."wallpapers/acon-fsh.jpg".source = ../dots/wallpapers/acon-fsh.jpg;
+
xdg.configFile."wallpapers/tongyu-waves.jpg".source = ../dots/wallpapers/tongyu-waves.jpg;
+
xdg.configFile."wallpapers/acon-rocks.jpg".source = ../dots/wallpapers/acon-rocks.jpg;
+
xdg.configFile."wallpapers/kailing-comet.jpg".source = ../dots/wallpapers/kailing-comet.jpg;
+
xdg.configFile."wallpapers/acon-star.jpg".source = ../dots/wallpapers/acon-star.jpg;
+
xdg.configFile."wallpapers/kailing-canyon.jpg".source = ../dots/wallpapers/kailing-canyon.jpg;
+
xdg.configFile."wallpapers/kailing-swirls.jpg".source = ../dots/wallpapers/kailing-swirls.jpg;
+
xdg.configFile."wallpapers/highway.jpg".source = ../dots/wallpapers/highway.jpg;
+
xdg.configFile."wallpapers/kailing-shooting-star.jpg".source =
+
../dots/wallpapers/kailing-shooting-star.jpg;
+
xdg.configFile."wallpapers/yessa-cat.jpg".source = ../dots/wallpapers/yessa-cat.jpg;
+
xdg.configFile."wallpapers/annie-athena.jpg".source = ../dots/wallpapers/annie-athena.jpg;
+
xdg.configFile."wallpapers/candy-stained-glass.jpg".source =
+
../dots/wallpapers/candy-stained-glass.jpg;
+
xdg.configFile."wallpapers/tongyu-catcat.jpg".source = ../dots/wallpapers/tongyu-catcat.jpg;
+
};
+
}
+58
home-manager/modules/wm/hyprland/default.nix
···
+
{
+
lib,
+
pkgs,
+
config,
+
...
+
}:
+
{
+
options.dots.wm.hyprland.enable = lib.mkEnableOption "Enable Hyprland config";
+
config = lib.mkIf config.dots.wm.hyprland.enable (
+
lib.mkMerge [
+
(import ./hypridle.nix { inherit lib pkgs config; })
+
(import ./waybar.nix { inherit lib pkgs config; })
+
(import ./tofi.nix { inherit lib pkgs config; })
+
{
+
dots.wallpapers.enable = true;
+
xdg.configFile."hypr/macchiato.conf".source = ../../../dots/macchiato.conf;
+
xdg.configFile."hypr/hyprland.conf".source = ../../../dots/hyprland.conf;
+
xdg.configFile."hypr/prettify-ss.sh".source = ../../../dots/prettify-ss.sh;
+
xdg.configFile."hypr/tofi-emoji.sh".source = ../../../dots/tofi-emoji.sh;
+
xdg.configFile."hypr/hyprlock.conf".source = ../../../dots/hyprlock.conf;
+
xdg.configFile."face.jpeg".source = ../../../dots/face.jpeg;
+
xdg.configFile."hypr/hyprpaper.conf".source = ../../../dots/hyprpaper.conf;
+
xdg.configFile."hypr/hyprrec.sh".source = ../../../dots/hyprrec.sh;
+
xdg.configFile."hypr/charge-alert.sh".source = ../../../dots/charge-alert.sh;
+
programs.hyprlock.enable = true;
+
xdg.portal = {
+
enable = true;
+
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
+
configPackages = with pkgs; [ xdg-desktop-portal-gtk ];
+
};
+
services.mako = {
+
enable = true;
+
settings = {
+
default-timeout = 4000;
+
margin = "58,6";
+
font = "Fira Sans 12";
+
border-radius = 5;
+
};
+
};
+
services.udiskie = {
+
enable = true;
+
settings = {
+
program_options = {
+
udisks_version = 2;
+
tray = false;
+
};
+
notifications = {
+
device_unmounted = false;
+
device_added = -1;
+
device_removed = -1;
+
device_mounted = -1;
+
};
+
};
+
};
+
}
+
]
+
);
+
}
-59
home-manager/wm/hyprland/default.nix
···
-
{
-
pkgs,
-
...
-
}:
-
{
-
imports = [
-
./hypridle.nix
-
./waybar.nix
-
];
-
-
# catppuccin theme shared between hyprlock and hyprland itself
-
xdg.configFile."hypr/macchiato.conf".source = ../../dots/macchiato.conf;
-
-
# hyprland config
-
xdg.configFile."hypr/hyprland.conf".source = ../../dots/hyprland.conf;
-
xdg.configFile."hypr/prettify-ss.sh".source = ../../dots/prettify-ss.sh;
-
xdg.configFile."hypr/tofi-emoji.sh".source = ../../dots/tofi-emoji.sh;
-
-
# hyprlock config
-
xdg.configFile."hypr/hyprlock.conf".source = ../../dots/hyprlock.conf;
-
xdg.configFile."face.jpeg".source = ../../dots/face.jpeg;
-
programs.hyprlock.enable = true;
-
-
# hyprpaper
-
xdg.configFile."hypr/hyprpaper.conf".source = ../../dots/hyprpaper.conf;
-
xdg.configFile."hypr/randomize.sh".source = ../../dots/randomize-wallpaper.sh;
-
xdg.configFile."hypr/wall/acon-pier.jpg".source = ../../dots/wallpapers/acon-pier.jpg;
-
xdg.configFile."hypr/wall/acon-forest.jpg".source = ../../dots/wallpapers/acon-forest.jpg;
-
xdg.configFile."hypr/wall/acon-gradient-clouds.jpg".source =
-
../../dots/wallpapers/acon-gradient-clouds.jpg;
-
xdg.configFile."hypr/wall/acon-fsh.jpg".source = ../../dots/wallpapers/acon-fsh.jpg;
-
xdg.configFile."hypr/wall/tongyu-waves.jpg".source = ../../dots/wallpapers/tongyu-waves.jpg;
-
xdg.configFile."hypr/wall/acon-rocks.jpg".source = ../../dots/wallpapers/acon-rocks.jpg;
-
xdg.configFile."hypr/wall/kailing-comet.jpg".source = ../../dots/wallpapers/kailing-comet.jpg;
-
xdg.configFile."hypr/wall/acon-star.jpg".source = ../../dots/wallpapers/acon-star.jpg;
-
xdg.configFile."hypr/wall/kailing-canyon.jpg".source = ../../dots/wallpapers/kailing-canyon.jpg;
-
xdg.configFile."hypr/wall/kailing-swirls.jpg".source = ../../dots/wallpapers/kailing-swirls.jpg;
-
xdg.configFile."hypr/wall/highway.jpg".source = ../../dots/wallpapers/highway.jpg;
-
xdg.configFile."hypr/wall/kailing-shooting-star.jpg".source =
-
../../dots/wallpapers/kailing-shooting-star.jpg;
-
xdg.configFile."hypr/wall/yessa-cat.jpg".source = ../../dots/wallpapers/yessa-cat.jpg;
-
xdg.configFile."hypr/wall/annie-athena.jpg".source = ../../dots/wallpapers/annie-athena.jpg;
-
xdg.configFile."hypr/wall/candy-stained-glass.jpg".source =
-
../../dots/wallpapers/candy-stained-glass.jpg;
-
xdg.configFile."hypr/wall/tongyu-catcat.jpg".source = ../../dots/wallpapers/tongyu-catcat.jpg;
-
-
# hyprrec.sh
-
xdg.configFile."hypr/hyprrec.sh".source = ../../dots/hyprrec.sh;
-
-
# charge-alert.sh
-
xdg.configFile."hypr/charge-alert.sh".source = ../../dots/charge-alert.sh;
-
-
# portal
-
xdg.portal = {
-
enable = true;
-
extraPortals = with pkgs; [ xdg-desktop-portal-gtk ];
-
configPackages = with pkgs; [ xdg-desktop-portal-gtk ];
-
};
-
}
home-manager/wm/hyprland/hypridle.nix home-manager/modules/wm/hyprland/hypridle.nix
home-manager/wm/hyprland/waybar.nix home-manager/modules/wm/hyprland/waybar.nix
-6
moonlark/greetd.nix
···
TTYVHangup = true;
TTYVTDisallocate = true;
};
-
-
#environment.etc."greetd/environments".text = ''
-
# Hyprland
-
# fish
-
# bash
-
#'';
}