collate recent changes back to master

This commit is contained in:
atagen 2025-06-18 01:16:11 +10:00
commit 92ed39cb83
258 changed files with 5169 additions and 16379 deletions

22
home/modules/chat.nix Normal file
View file

@ -0,0 +1,22 @@
{ config, ... }:
{
imports = [
../util/firefox-webapp.nix
];
programs.firefox.webapps = {
"Microsoft-Teams" = {
url = "https://teams.microsoft.com";
# id = 1;
extraSettings = config.programs.firefox.profiles.default.settings;
name = "Microsoft Teams";
icon = ../icons/ms_teams.png;
};
"Facebook-Messenger" = {
url = "https://www.messenger.com";
# id = 2;
extraSettings = config.programs.firefox.profiles.default.settings;
name = "Facebook Messenger";
icon = ../icons/fb_msg.png;
};
};
}

22
home/modules/cli.nix Normal file
View file

@ -0,0 +1,22 @@
{ pkgs, ... }:
{
imports = [
../programs/kitty.nix
# ../programs/zsh.nix
# ../programs/xresources.nix
../programs/helix.nix
# ../programs/atuin.nix
];
home.packages = builtins.attrValues {
inherit (pkgs)
btop
bat
ripgrep
fd
lazygit
zoxide
zellij
ouch
;
};
}

10
home/modules/creative.nix Normal file
View file

@ -0,0 +1,10 @@
_: {
# imports = [
# ../util/flatpak.nix
# ];
# flatpaks = [
# "ar.com.tuxguitar.TuxGuitar"
# "org.inkscape.Inkscape"
# "com.github.PintaProject.Pinta"
# ];
}

20
home/modules/desktop.nix Normal file
View file

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
imports = [
./media-players.nix
./webapps.nix
./documents.nix
# ./creative.nix
./chat.nix
../programs/firefox.nix
../programs/wlogout.nix
];
home.packages = builtins.attrValues {
inherit (pkgs)
file-roller
nautilus
thunderbird
keepassxc
;
};
}

74
home/modules/dev.nix Normal file
View file

@ -0,0 +1,74 @@
{ pkgs, rice, ... }:
let
get = builtins.attrValues;
in
{
# imports = [
# ../programs/vscode.nix
# ];
home.packages = get {
inherit (pkgs)
git-credential-keepassxc
direnv
;
};
programs.zed-editor = {
enable = false;
extensions = [
"nix"
"rust"
"ocaml"
"kanagawa-themes"
];
userSettings = {
features = {
copilot = false;
};
buffer_font_family = rice.fonts.monospace.name;
buffer_font_size = rice.fonts.monospace.size;
theme = {
mode = "dark";
dark = "Kanagawa Dragon";
};
telemetry = {
metrics = false;
diagnostics = false;
};
vim_mode = true;
assistant = {
default_model = {
provider = "ollama";
model = "llama3.2";
};
inline_alternatives = {
provider = "ollama";
model = "starcoder2:3b";
};
};
language_models = {
ollama = {
api_url = "http://localhost:11434";
};
};
};
};
programs.direnv = {
enable = true;
nix-direnv = {
enable = true;
};
enableFishIntegration = true;
};
programs.git = {
enable = true;
userName = "atagen";
userEmail = "boss@atagen.co";
extraConfig = {
credential.helper = "keepassxc";
};
};
}

View file

@ -0,0 +1,6 @@
{ pkgs, ... }:
{
home.packages = [
pkgs.libreoffice
];
}

View file

@ -0,0 +1,13 @@
{ pkgs, ... }:
{
home.packages = builtins.attrValues {
inherit (pkgs)
mpv
imv
strawberry
resonance
zathura
playerctl
;
};
}

267
home/modules/niri.nix Normal file
View file

@ -0,0 +1,267 @@
{
pkgs,
lib,
config,
rice,
inputs,
mainUser,
...
}:
let
services =
let
inherit (pkgs) swaynotificationcenter;
in
[
swaynotificationcenter
];
errata =
let
inherit (pkgs) avizo playerctl;
in
[
avizo
playerctl
];
extraServices =
let
inherit (pkgs)
swayidle
swaybg
systemd
avizo
;
inherit (inputs.niri.packages.x86_64-linux) niri-unstable;
in
[
{
name = "swaybg";
value = "${lib.getExe swaybg} -m fill -i /home/${mainUser}/.nix/wallpaper.jpg";
}
{
name = "avizo-service";
value = "${lib.getExe' avizo "avizo-service"}";
}
{
name = "swayidle";
value =
let
niri = lib.getExe niri-unstable;
systemctl = lib.getExe' systemd "systemctl";
in
''
${lib.getExe swayidle} -w \
timeout 1800 '${systemctl} suspend' \
timeout 600 '${niri} msg action power-off-monitors'
'';
}
];
in
{
home.packages = errata;
ezServices = builtins.listToAttrs (
(map (entry: {
name = "${lib.strings.toLower entry.pname}";
value = "${lib.getExe entry}";
}) services)
++ extraServices
);
programs.niri.settings =
let
inherit (lib) range nameValuePair mapAttrs';
inherit (builtins) listToAttrs replaceStrings;
inherit (config.lib.niri) actions;
in
{
binds =
let
hBinds = {
H = "left";
L = "right";
};
vBinds = {
J = "down";
K = "up";
};
makeDirBind =
mods: cmd: keys:
mapAttrs' (
key: dir:
nameValuePair "${mods}+${key}" {
action = actions."${replaceStrings [ "$DIR" ] [ "${dir}" ] "${cmd}"}";
}
) keys;
makeWsBind =
mods: cmd:
listToAttrs (
map (num: {
name = "${mods}+${builtins.toString num}";
value = {
action."${cmd}" = num;
};
}) (range 0 6)
);
in
{
"Mod+D".action.spawn = [
"qs"
"ipc"
"call"
"launch"
"toggle"
];
"Mod+F".action.spawn = "firefox";
"Mod+E".action.spawn = "nautilus";
"Mod+Return".action.spawn = "kitty";
"Mod+Shift+E".action.spawn = "wlogout";
"Mod+Equal".action.spawn = "keepassxc";
"Mod+Shift+Q".action = actions.close-window;
"Mod+Shift+S".action = actions.screenshot;
"Mod+R".action = actions.switch-preset-column-width;
"Mod+Shift+R".action = actions.maximize-column;
"XF86AudioRaiseVolume".action.spawn = [
"volumectl"
"-u"
"up"
];
"XF86AudioLowerVolume".action.spawn = [
"volumectl"
"-u"
"down"
];
"XF86AudioMute".action.spawn = [
"volumectl"
"toggle-mute"
];
"XF86AudioStop".action.spawn = [
"playerctl"
"stop"
];
"XF86AudioPlay".action.spawn = [
"playerctl"
"play-pause"
];
"XF86AudioNext".action.spawn = [
"playerctl"
"next"
];
"XF86AudioPrev".action.spawn = [
"playerctl"
"previous"
];
"Mod+Space".action = actions.toggle-window-floating;
}
// makeDirBind "Mod" "focus-window-or-workspace-$DIR" vBinds
// makeDirBind "Mod" "focus-column-or-monitor-$DIR" hBinds
// makeDirBind "Mod+Shift" "move-window-to-workspace-$DIR" vBinds
// makeDirBind "Mod+Shift" "move-column-$DIR-or-to-monitor-$DIR" hBinds
// makeDirBind "Mod+Ctrl" "consume-or-expel-window-$DIR" hBinds
// makeDirBind "Mod+Ctrl" "move-window-$DIR" vBinds
// makeWsBind "Mod" "focus-workspace"
// makeWsBind "Mod+Shift" "move-window-to-workspace";
outputs = {
# "Unknown-1".enable = false;
"DP-1" = {
transform.rotation = 90;
scale = 1;
};
"DP-2" = {
variable-refresh-rate = true;
scale = 1;
};
};
input = {
warp-mouse-to-focus = true;
};
cursor = {
hide-after-inactive-ms = 5000;
hide-when-typing = true;
size = 16;
theme = rice.cursor.name;
};
layout = {
always-center-single-column = true;
gaps = 24;
default-column-width.proportion = 0.5;
preset-column-widths = map (p: { proportion = p; }) [
(2.0 / 3.0)
0.5
(1.0 / 3.0)
];
focus-ring =
let
pal = rice.palette.hex;
in
{
active = {
color = pal.bright.yellow;
};
inactive = {
color = pal.normal.black;
};
};
};
prefer-no-csd = true;
hotkey-overlay.skip-at-startup = true;
window-rules =
let
v = 10.0;
in
[
{
geometry-corner-radius = {
bottom-left = v;
bottom-right = 0.0;
top-left = 0.0;
top-right = v;
};
clip-to-geometry = true;
}
];
};
# programs.ironbar = {
# enable = true;
# systemd = true;
# config = {
# monitors."DP-1" = {
# position = "top";
# height = 16;
# start = [
# {
# type = "music";
# player_type = "mpris";
# }
# ];
# center = [
# {
# type = "focused";
# icon_size = 16;
# truncate = "middle";
# }
# ];
# end = [
# { type = "clock"; }
# { type = "tray"; }
# ];
# };
# };
# };
systemd.user.services.quickshell = {
Unit.PartOf = [ "graphical-session.target" ];
Unit.After = [
"graphical-session.target"
"niri.service"
];
Install.WantedBy = [ "graphical-session.target" ];
Service = {
ExecStart = "${lib.getExe' (inputs.quickshell.packages.${pkgs.system}.default.override {
withHyprland = false;
withI3 = false;
}) "qs"}";
};
};
}

26
home/modules/theming.nix Normal file
View file

@ -0,0 +1,26 @@
{ pkgs, rice, ... }:
{
home.packages = [
pkgs.gtk-engine-murrine
];
fonts.fontconfig.enable = true;
qt = {
enable = true;
style.name = "adwaita-dark";
platformTheme.name = "adwaita";
};
gtk = {
enable = true;
theme = {
inherit (rice.gtk-theme) package name;
};
iconTheme = {
inherit (rice.icons) package name;
};
font = {
inherit (rice.fonts.sans) size package name;
};
};
}

20
home/modules/webapps.nix Normal file
View file

@ -0,0 +1,20 @@
{ config, ... }:
{
imports = [
../util/firefox-webapp.nix
];
programs.firefox.webapps = {
"Syncthing" = {
url = "http://127.0.0.1:8384";
extraSettings = config.programs.firefox.profiles.default.settings;
name = "Syncthing";
icon = ../icons/syncthing.png;
};
"Open-WebUI" = {
url = "http://127.0.0.1:8088";
extraSettings = config.programs.firefox.profiles.default.settings;
name = "Open-WebUI";
icon = ../icons/openwebui.png;
};
};
}