update system

This commit is contained in:
2025-11-05 14:13:32 +01:00
parent 69eafb5594
commit d5eb686f7f
18 changed files with 350 additions and 212 deletions

80
flake.lock generated
View File

@@ -10,11 +10,11 @@
"quickshell": "quickshell" "quickshell": "quickshell"
}, },
"locked": { "locked": {
"lastModified": 1760163288, "lastModified": 1760932218,
"narHash": "sha256-SMPeHIC/JGAOL8sOxQ+dN4P4pz1j5wjYLCp80r6voMo=", "narHash": "sha256-3vnrrQZPfQuHEzowGB4e7vL5EpTHf5oyzyOS1aKfnig=",
"owner": "AvengeMedia", "owner": "AvengeMedia",
"repo": "DankMaterialShell", "repo": "DankMaterialShell",
"rev": "362bcb9294aa9317474e217b7d87d91f6788bec1", "rev": "851d47213cb639a92b9e0dd545e2aa163f12b701",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -31,11 +31,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1759769087, "lastModified": 1760238269,
"narHash": "sha256-b4dEAjvIfIkw2/C47aZGDnwhTBEjqptDo8J5PizeTCo=", "narHash": "sha256-7CeGZM/Z/5Qt3AYByCRohGYGR1MRuXYzTTbkV/JxyAs=",
"owner": "AvengeMedia", "owner": "AvengeMedia",
"repo": "dgop", "repo": "dgop",
"rev": "ad6ad285e8b882c41eb8994ef7c91e151afb9a97", "rev": "95acdfce2d323e28fa8f5a4f345160962034f2b5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -52,11 +52,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1759982027, "lastModified": 1760241259,
"narHash": "sha256-4deRT98VwfZWZ685wIGevyYl3CzpuZJPjdjfulABH00=", "narHash": "sha256-DlLGn+4M6tIafoDsHr2WhHG2hrHrC24S2IL3+KAvjEU=",
"owner": "AvengeMedia", "owner": "AvengeMedia",
"repo": "danklinux", "repo": "danklinux",
"rev": "5cdfeeae2e14089079dcb0d6b61f014ce754021f", "rev": "dae4c3ff4ce0feb930361c399747edb29d081775",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -73,11 +73,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1756770412, "lastModified": 1759362264,
"narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", "narHash": "sha256-wfG0S7pltlYyZTM+qqlhJ7GMw2fTF4mLKCIVhLii/4M=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "4524271976b625a4a605beefd893f270620fd751", "rev": "758cf7296bee11f1706a574c77d072b8a7baa881",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -144,11 +144,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1759172751, "lastModified": 1760929667,
"narHash": "sha256-E8W8sRXfrvkFW26GuuiWq6QfReU7m5+cngwHuRo/3jc=", "narHash": "sha256-nZh6uvc71nVNaf/y+wesnjwsmJ6IZZUnP2EzpZe48To=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "12fa8548feefa9a10266ba65152fd1a787cdde8f", "rev": "189c21cf879669008ccf06e78a553f17e88d8ef0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -228,16 +228,16 @@
"systems": "systems_2" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1716548249, "lastModified": 1731508795,
"narHash": "sha256-9jvSsYOCYpG7JN1YDdptu19EhG+fZuX278IbiTJ7814=", "narHash": "sha256-+UibbVz5CTisKMms/5VXGe39FYr56qzaEtX4TWQPkjk=",
"owner": "Theaninova", "owner": "InioX",
"repo": "matugen", "repo": "matugen",
"rev": "f79700eb42e5a6b7062ccdfcec3956e26573fc01", "rev": "cb9f81eb0150f6253895ea0adb1daa8534c15fc7",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "Theaninova", "owner": "InioX",
"ref": "add-home-manager-module", "ref": "v2.4.1",
"repo": "matugen", "repo": "matugen",
"type": "github" "type": "github"
} }
@@ -254,11 +254,11 @@
"xwayland-satellite-unstable": "xwayland-satellite-unstable" "xwayland-satellite-unstable": "xwayland-satellite-unstable"
}, },
"locked": { "locked": {
"lastModified": 1760121522, "lastModified": 1760950171,
"narHash": "sha256-8SGgpcZsMZIqFU+J/1OwebC/px8sgx5YYHNw1XkBM98=", "narHash": "sha256-E2ySTu/oK7cYBdAI3tlGP9zVjF4mZgWJ1OZInBCMb00=",
"owner": "sodiboo", "owner": "sodiboo",
"repo": "niri-flake", "repo": "niri-flake",
"rev": "17dbedb88a21142c41d120f139e2870bc56bb5f4", "rev": "f851a923137c0a54719412146fd63d24b3214e60",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -287,11 +287,11 @@
"niri-unstable": { "niri-unstable": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1759395653, "lastModified": 1760940149,
"narHash": "sha256-sv9J1z6CrTPf9lRJLyCN90fZVdQz7LFeX7pIlInH8BQ=", "narHash": "sha256-KbM47vD6E0cx+v4jYQZ8mD5N186AKm2CQlyh34TW58U=",
"owner": "YaLTeR", "owner": "YaLTeR",
"repo": "niri", "repo": "niri",
"rev": "ba6e5e082a79901dc89b0d49c5da1b769d652aec", "rev": "b3245b81a6ed8edfaf5388a74d2e0a23c24941e5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -318,11 +318,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1759036355, "lastModified": 1760878510,
"narHash": "sha256-0m27AKv6ka+q270dw48KflE0LwQYrO7Fm4/2//KCVWg=", "narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "e9f00bd893984bc8ce46c895c3bf7cac95331127", "rev": "5e2a59a5b1a82f89f2c7e598302a9cacebb72a67",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -334,11 +334,11 @@
}, },
"nixpkgs-stable": { "nixpkgs-stable": {
"locked": { "locked": {
"lastModified": 1759994382, "lastModified": 1760862643,
"narHash": "sha256-wSK+3UkalDZRVHGCRikZ//CyZUJWDJkBDTQX1+G77Ow=", "narHash": "sha256-PXwG0TM7Ek87DNx4LbGWuD93PbFeKAJs4FfALtp7Wo0=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5da4a26309e796daa7ffca72df93dbe53b8164c7", "rev": "33c6dca0c0cb31d6addcd34e90a63ad61826b28c",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -358,11 +358,11 @@
"systems": "systems_4" "systems": "systems_4"
}, },
"locked": { "locked": {
"lastModified": 1759217440, "lastModified": 1760960598,
"narHash": "sha256-qP3wDVcwOMKSIhPKH0m+DmpFXIx9dZNNgw9wyRMz+Dw=", "narHash": "sha256-UP1v+sEkHuvD2+qyhxbkQpBR+dl9U0ljml3/dMI2jeU=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "9faa339d9e930be3eb7d751af35ecfed7c493d14", "rev": "e3b77e803b2350b72f4d72c8f175ab0fbfe5a642",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -402,11 +402,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1759610621, "lastModified": 1760228179,
"narHash": "sha256-P3UPFd95mS/3aNgy40nCXAmyfR2bEEBd+tX6xfkYFb0=", "narHash": "sha256-4Z6k7lv3Zcgk3K+4h60LpqB9wCkR+utkYERU735U068=",
"ref": "refs/heads/master", "ref": "refs/heads/master",
"rev": "c5c438f1cd1a76660a8658ef929a3d19e968e2ce", "rev": "c9d3ffb6043c5bf3f3009202bad7e0e5132c4a25",
"revCount": 689, "revCount": 693,
"type": "git", "type": "git",
"url": "https://git.outfoxxed.me/quickshell/quickshell" "url": "https://git.outfoxxed.me/quickshell/quickshell"
}, },

View File

@@ -10,7 +10,7 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
matugen = { matugen = {
url = "github:Theaninova/matugen/add-home-manager-module"; url = "github:InioX/matugen?ref=v2.4.1";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nixvim = { nixvim = {
@@ -141,10 +141,9 @@
inherit username hostname inputs; inherit username hostname inputs;
}; };
sharedModules = [ sharedModules = [
matugen.homeManagerModules.default ./overlays/matugen/hm-module.nix
nix-flatpak.homeManagerModules.nix-flatpak nix-flatpak.homeManagerModules.nix-flatpak
nixvim.homeModules.nixvim nixvim.homeModules.nixvim
# niri.homeModules.niri
dank-material-shell.homeModules.dankMaterialShell.default dank-material-shell.homeModules.dankMaterialShell.default
dank-material-shell.homeModules.dankMaterialShell.niri dank-material-shell.homeModules.dankMaterialShell.niri
./modules/home-manager/modules/nixvim ./modules/home-manager/modules/nixvim

View File

@@ -35,13 +35,13 @@
shell.components = { shell.components = {
firefox-pip.enable = true; firefox-pip.enable = true;
# grimblast.enable = true; # grimblast.enable = true;
# gnome-keyring.enable = true; gnome-keyring.enable = true;
# hyprpicker.enable = true; # hyprpicker.enable = true;
kde-connect.enable = true; kde-connect.enable = true;
kitty.enable = true; kitty.enable = true;
# swaync.enable = true; swaync.enable = true;
# walker.enable = true; walker.enable = true;
# waybar.enable = true; waybar.enable = true;
}; };
desktops.niri.enable = true; desktops.niri.enable = true;
locale.preset.theaninova.enable = true; locale.preset.theaninova.enable = true;
@@ -50,9 +50,9 @@
"127.0.0.1:57461" = [ "ai.local" ]; "127.0.0.1:57461" = [ "ai.local" ];
}; };
services = { services = {
ollama.enable = true; ollama.enable = false;
open-webui = { open-webui = {
enable = true; enable = false;
port = 57461; port = 57461;
environment = { environment = {
ANONYMIZED_TELEMETRY = "False"; ANONYMIZED_TELEMETRY = "False";

View File

@@ -24,7 +24,7 @@ in
":AerialNext<CR>"; ":AerialNext<CR>";
} }
{ {
key = "fs"; key = "<leader>fs";
mode = "n"; mode = "n";
action = # vim action = # vim
":Telescope aerial<CR>"; ":Telescope aerial<CR>";
@@ -54,7 +54,7 @@ in
}; };
which-key.settings.spec = [ which-key.settings.spec = [
{ {
__unkeyed-1 = "fs"; __unkeyed-1 = "<leader>fs";
group = "Symbols"; group = "Symbols";
icon = "󰡱"; icon = "󰡱";
} }

View File

@@ -13,19 +13,19 @@ in
telescope = { telescope = {
enable = true; enable = true;
keymaps = { keymaps = {
"ff" = { "<leader>ff" = {
action = "git_files"; action = "git_files";
mode = "n"; mode = "n";
}; };
"fa" = { "<leader>fa" = {
action = "find_files"; action = "find_files";
mode = "n"; mode = "n";
}; };
"fg" = { "<leader>fg" = {
action = "live_grep"; action = "live_grep";
mode = "n"; mode = "n";
}; };
"fc" = { "<leader>fc" = {
action = "buffers"; action = "buffers";
mode = "n"; mode = "n";
}; };
@@ -33,27 +33,27 @@ in
}; };
which-key.settings.spec = [ which-key.settings.spec = [
{ {
__unkeyed-1 = "f"; __unkeyed-1 = "<leader>f";
group = "Find"; group = "Find";
icon = "󰍉"; icon = "󰍉";
} }
{ {
__unkeyed-1 = "ff"; __unkeyed-1 = "<leader>ff";
desc = "File"; desc = "File";
icon = "󰈢"; icon = "󰈢";
} }
{ {
__unkeyed-1 = "fa"; __unkeyed-1 = "<leader>fa";
desc = "All Files"; desc = "All Files";
icon = "󱪡"; icon = "󱪡";
} }
{ {
__unkeyed-1 = "fg"; __unkeyed-1 = "<leader>fg";
desc = "Grep"; desc = "Grep";
icon = "󰑑"; icon = "󰑑";
} }
{ {
__unkeyed-1 = "fc"; __unkeyed-1 = "<leader>fc";
desc = "Current"; desc = "Current";
icon = "󰈙"; icon = "󰈙";
} }

View File

@@ -10,7 +10,7 @@ in
config = lib.mkIf cfg.enable { config = lib.mkIf cfg.enable {
keymaps = [ keymaps = [
{ {
key = "ft"; key = "<leader>t";
mode = "n"; mode = "n";
action = # vim action = # vim
"<cmd>:Neotree toggle<CR>"; "<cmd>:Neotree toggle<CR>";
@@ -20,24 +20,28 @@ in
web-devicons.enable = true; web-devicons.enable = true;
neo-tree = { neo-tree = {
enable = true; enable = true;
filesystem = { settings = {
useLibuvFileWatcher = true; event_handlers = [
followCurrentFile.enabled = true; {
filteredItems.visible = true; event = "neo_tree_buffer_leave";
handler.__raw = ''
function()
require('neo-tree').close_all()
end
'';
}
];
filesystem = {
use_libuv_file_watcher = true;
follow_current_file.enabled = true;
filtered_items.visible = true;
};
popupBorderStyle = "rounded";
}; };
popupBorderStyle = "rounded";
filesystem.window.mappings.f = "noop";
window.mappings.f = "noop";
eventHandlers.neo_tree_buffer_leave = # lua
''
function()
require('neo-tree').close_all()
end
'';
}; };
which-key.settings.spec = [ which-key.settings.spec = [
{ {
__unkeyed-1 = "ft"; __unkeyed-1 = "<leader>t";
desc = "Tree"; desc = "Tree";
icon = "󰙅"; icon = "󰙅";
} }

View File

@@ -2,13 +2,15 @@
{ {
programs.git = { programs.git = {
enable = true; enable = true;
userName = "Thea Schöbl";
userEmail = "dev@theaninova.de";
signing = { signing = {
key = "6C9E EFC5 1AE0 0131 78DE B9C8 68FF FB1E C187 88CA"; key = "6C9E EFC5 1AE0 0131 78DE B9C8 68FF FB1E C187 88CA";
signByDefault = true; signByDefault = true;
}; };
extraConfig = { extraConfig = {
user = {
email = "dev@theaninova.de";
name = "Thea Schöbl";
};
pull.rebase = true; pull.rebase = true;
init.defaultBranch = "main"; init.defaultBranch = "main";
merge = { merge = {

View File

@@ -56,7 +56,6 @@
tree.enable = true; tree.enable = true;
}; };
languages = { languages = {
angular.enable = true;
c.enable = true; c.enable = true;
css = { css = {
enable = true; enable = true;

View File

@@ -2,27 +2,36 @@ let
transparent = color: "alpha(${color}, {{custom.transparency}})"; transparent = color: "alpha(${color}, {{custom.transparency}})";
mkBgColor = color: { mkBgColor = color: {
${color} = { ${color} = {
background = "{{colors.${color}.default.hex}}"; background_lift = "{{colors.${color}_dim.default.hex}}";
background = "{{colors.${color}_dim.default.hex}}";
foreground = "{{colors.on_${color}.default.hex}}"; foreground = "{{colors.on_${color}.default.hex}}";
}; };
}; };
mkColor = color: { mkColor = color: {
${color} = {
standalone = "{{colors.${color}_fixed_dim.default.hex}}";
background = "{{colors.${color}_fixed.default.hex}}";
foreground = "{{colors.on_${color}_fixed.default.hex}}";
};
};
mkSemantic = color: {
${color} = { ${color} = {
standalone = "{{colors.${color}.default.hex}}"; standalone = "{{colors.${color}.default.hex}}";
background = "{{colors.${color}_container.default.hex}}"; background = "{{colors.${color}.default.hex}}";
foreground = "{{colors.on_${color}_container.default.hex}}"; foreground = "{{colors.on_${color}.default.hex}}";
}; };
}; };
colors = colors =
(mkColor "primary") (mkColor "primary")
// (mkColor "secondary") // (mkColor "secondary")
// (mkColor "tertiary") // (mkColor "tertiary")
// (mkColor "danger") // (mkSemantic "danger")
// (mkColor "warning") // (mkSemantic "warning")
// (mkColor "success") // (mkSemantic "success")
// (mkColor "error") // (mkSemantic "error")
// (mkColor "info") // (mkSemantic "info")
// (mkBgColor "background") // (mkBgColor "background")
// (mkBgColor "surface")
// (mkBgColor "surface_variant") // (mkBgColor "surface_variant")
// { // {
outline = "{{colors.outline.default.hex}}"; outline = "{{colors.outline.default.hex}}";
@@ -40,11 +49,33 @@ let
}; };
}; };
gtk = { # https://github.com/AvengeMedia/DankMaterialShell/blob/master/matugen/templates/gtk-colors.css
gtk = rec {
accent_color = colors.primary.standalone; accent_color = colors.primary.standalone;
accent_bg_color = colors.primary.background; accent_bg_color = colors.primary.background;
accent_fg_color = colors.primary.foreground; accent_fg_color = colors.primary.foreground;
window_bg_color = transparent colors.surface.background;
window_fg_color = colors.surface.foreground;
popover_bg_color = transparent colors.surface.background;
popover_fg_color = colors.surface.foreground;
headerbar_bg_color = transparent colors.surface.background;
headerbar_fg_color = colors.surface.foreground;
view_bg_color = transparent colors.surface.background_lift;
view_fg_color = colors.surface.foreground;
card_bg_color = colors.surface.background_lift;
card_fg_color = colors.surface.foreground;
sidebar_bg_color = window_bg_color;
sidebar_fg_color = window_fg_color;
sidebar_border_color = colors.surface.background;
sidebar_backdrop_color = window_bg_color;
destructive_color = colors.danger.standalone; destructive_color = colors.danger.standalone;
destructive_bg_color = colors.danger.background; destructive_bg_color = colors.danger.background;
destructive_fg_color = colors.danger.foreground; destructive_fg_color = colors.danger.foreground;
@@ -61,45 +92,31 @@ let
error_bg_color = colors.error.background; error_bg_color = colors.error.background;
error_fg_color = colors.error.foreground; error_fg_color = colors.error.foreground;
window_bg_color = transparent colors.background.background; /*
window_fg_color = colors.background.foreground; headerbar_border_color = colors.outline;
headerbar_backdrop_color = transparent colors.background.background;
headerbar_shade_color = colors.shade.default;
headerbar_darker_shade_color = colors.shade.darker;
view_bg_color = transparent colors.background.background; card_shade_color = colors.shade.default;
view_fg_color = colors.background.foreground;
headerbar_bg_color = transparent colors.background.background; dialog_bg_color = transparent colors.background.background;
headerbar_fg_color = colors.background.foreground; dialog_fg_color = colors.background.foreground;
headerbar_border_color = colors.outline; popover_shade_color = colors.shade.default;
headerbar_backdrop_color = transparent colors.background.background;
headerbar_shade_color = colors.shade.default;
headerbar_darker_shade_color = colors.shade.darker;
card_bg_color = colors.container.default; shade_color = colors.shade.default;
card_fg_color = colors.container.foreground; scrollbar_outline_color = colors.outline;
card_shade_color = colors.shade.default;
dialog_bg_color = transparent colors.background.background; thumbnail_bg_color = colors.secondary.background;
dialog_fg_color = colors.background.foreground; thumbnail_fg_color = colors.secondary.foreground;
popover_bg_color = transparent colors.background.background; sidebar_shade_color = colors.shade.default;
popover_fg_color = colors.background.foreground;
popover_shade_color = colors.shade.default;
shade_color = colors.shade.default; secondary_sidebar_bg_color = transparent colors.surface_variant.background;
scrollbar_outline_color = colors.outline; secondary_sidebar_fg_color = colors.surface_variant.foreground;
secondary_sidebar_backdrop_color = transparent colors.surface_variant.background;
thumbnail_bg_color = colors.secondary.background; secondary_sidebar_shade_color = colors.shade.default;
thumbnail_fg_color = colors.secondary.foreground; */
sidebar_bg_color = transparent colors.background.background;
sidebar_fg_color = colors.background.foreground;
sidebar_backdrop_color = transparent colors.background.background;
sidebar_shade_color = colors.shade.default;
secondary_sidebar_bg_color = transparent colors.surface_variant.background;
secondary_sidebar_fg_color = colors.surface_variant.foreground;
secondary_sidebar_backdrop_color = transparent colors.surface_variant.background;
secondary_sidebar_shade_color = colors.shade.default;
}; };
in in
builtins.concatStringsSep "\n" ( builtins.concatStringsSep "\n" (

View File

@@ -1,6 +1,7 @@
{ {
pkgs, pkgs,
lib, lib,
osConfig,
config, config,
... ...
}: }:
@@ -241,7 +242,6 @@ in
exit 1 exit 1
fi fi
THEME_SERVICE_PATH="${config.xdg.configHome}/systemd/user/theme-init.timer" THEME_SERVICE_PATH="${config.xdg.configHome}/systemd/user/theme-init.timer"
if [ "$MODE" = "auto" ]; then if [ "$MODE" = "auto" ]; then
TIME=$(sunwait poll ${builtins.toString cfg.auto-dark.lat}N ${builtins.toString cfg.auto-dark.lon}E || :) TIME=$(sunwait poll ${builtins.toString cfg.auto-dark.lat}N ${builtins.toString cfg.auto-dark.lon}E || :)
@@ -270,29 +270,21 @@ in
systemctl --user daemon-reload &> /dev/null || : systemctl --user daemon-reload &> /dev/null || :
systemctl --user restart theme-init.timer &> /dev/null || : systemctl --user restart theme-init.timer &> /dev/null || :
if command -v niri &> /dev/null; then
niri msg action do-screen-transition --delay-ms 500
fi
if [ "$MODE" = "light" ]; then if [ "$MODE" = "light" ]; then
GTK_THEME="adw-gtk3" GTK_THEME="adw-gtk3"
else else
GTK_THEME="adw-gtk3-dark" GTK_THEME="adw-gtk3-dark"
fi fi
matugen image "$WALLPAPER" --type scheme-${cfg.flavour} --contrast ${builtins.toString cfg.contrast} --mode "$MODE" matugen image "$WALLPAPER" --type scheme-${cfg.flavour} --contrast ${builtins.toString cfg.contrast} --mode "$MODE"
sed -i "s/set background=dark/set background=$MODE/g" ${config.xdg.configHome}/nvim/colors/md3-evo.vim
dconf write /org/gnome/desktop/interface/gtk-theme "'$GTK_THEME'" dconf write /org/gnome/desktop/interface/gtk-theme "'$GTK_THEME'"
dconf write /org/gnome/desktop/interface/color-scheme "'prefer-$MODE'" dconf write /org/gnome/desktop/interface/color-scheme "'prefer-$MODE'"
dconf write /org/gnome/desktop/interface/icon-theme "'Adwaita'"
if command -v hyprctl &> /dev/null; then
hyprctl reload
fi
if which swaync-client; then
swaync-client --reload-css
fi
for i in $(pgrep -u "$USER" -x nvim); do
kill -USR1 "$i"
done
''; '';
} }
); );
@@ -309,6 +301,9 @@ in
"@import './theme.css';"; "@import './theme.css';";
gtk4.extraCss = # css gtk4.extraCss = # css
"@import './theme.css';"; "@import './theme.css';";
theme = {
name = "Adwaita";
};
iconTheme = { iconTheme = {
name = "Tela"; name = "Tela";
package = pkgs.tela-icon-theme; package = pkgs.tela-icon-theme;
@@ -379,12 +374,23 @@ in
''; '';
}; };
programs = { # TODO: include is coming in the next release
kitty = { /*
extraConfig = '' xdg.configFile.niri-config = {
include ${config.xdg.configHome}/kitty/theme.conf enable = osConfig.programs.niri.enable;
target = "niri/override.kdl";
text = ''
include "${config.xdg.configHome}/niri/config.kdl"
include "${config.programs.matugen.settings.templates.niri.output_path}"
''; '';
}; };
home.sessionVariables.NIRI_CONFIG = "${config.xdg.configHome}/niri/override.kdl";
*/
programs = {
kitty.extraConfig = ''
include ${config.programs.matugen.settings.templates.kitty.output_path}
'';
nixvim = { nixvim = {
opts.termguicolors = true; opts.termguicolors = true;
@@ -405,15 +411,14 @@ in
enable = true; enable = true;
settings = { settings = {
config = { config = {
reload_apps = true; version_check = false;
reload_apps_list = { reload_apps_list = {
kitty = config.programs.kitty.enable;
waybar = config.programs.waybar.enable; waybar = config.programs.waybar.enable;
dunst = config.services.dunst.enable; dunst = config.services.dunst.enable;
}; };
set_wallpaper = true; wallpaper.command = lib.getExe pkgs.swww;
wallpaper_tool = "Swww";
custom_colors = custom_colors =
let let
@@ -465,23 +470,17 @@ in
templates = templates =
let let
gtk = pkgs.writeText "gtk4.css" (import ./gtk.nix); gtk = pkgs.writeText "gtk4.css" (import ./gtk.nix);
signal =
name: signal:
(pkgs.writeShellScript "kill-${name}" ''
pkill -${signal} -u "$USER" -x ${name} || :
'');
in in
{ {
kitty = {
input_path = ./kitty.conf;
output_path = "${config.xdg.configHome}/kitty/theme.conf";
};
nvim = { nvim = {
input_path = ./nvim.vim; input_path = ./nvim.vim;
output_path = "${config.xdg.configHome}/nvim/colors/md3-evo.vim"; output_path = "${config.xdg.configHome}/nvim/colors/md3-evo.vim";
}; post_hook = signal "nvim" "USR1";
hyprland = {
input_path = ./hyprland.conf;
output_path = "${config.xdg.configHome}/hypr/theme.conf";
};
anyrun = {
input_path = ./anyrun.css;
output_path = "${config.xdg.configHome}/anyrun/theme.css";
}; };
gtk3 = { gtk3 = {
input_path = gtk; input_path = gtk;
@@ -495,15 +494,49 @@ in
input_path = ./discord.css; input_path = ./discord.css;
output_path = "${config.xdg.configHome}/vesktop/themes/matugen.theme.css"; output_path = "${config.xdg.configHome}/vesktop/themes/matugen.theme.css";
}; };
}
// (lib.optionalAttrs osConfig.programs.niri.enable {
niri = {
input_path = ./niri.kdl;
output_path = "${config.xdg.configHome}/niri/md3-evo.kdl";
};
})
// (lib.optionalAttrs config.programs.kitty.enable {
kitty = {
input_path = ./kitty.conf;
output_path = "${config.xdg.configHome}/kitty/theme.conf";
post_hook = signal ".kitty-wrapped" "USR1";
};
})
// (lib.optionalAttrs osConfig.programs.hyprland.enable {
hyprland = {
input_path = ./hyprland.conf;
output_path = "${config.xdg.configHome}/hypr/theme.conf";
post_hook = pkgs.writeShellScript "reload-hyprland-theme" ''
if command -v hyprctl &> /dev/null; then
hyprctl reload
fi
'';
};
})
// (lib.optionalAttrs config.programs.waybar.enable {
waybar = { waybar = {
input_path = ./waybar.css; input_path = ./waybar.css;
output_path = "${config.xdg.configHome}/waybar/style.css"; output_path = "${config.xdg.configHome}/waybar/style.css";
post_hook = signal "waybar" "USR2";
}; };
})
// (lib.optionalAttrs config.services.swaync.enable {
swaync = { swaync = {
input_path = ./swaync.css; input_path = ./swaync.css;
output_path = "${config.xdg.configHome}/swaync/style.css"; output_path = "${config.xdg.configHome}/swaync/style.css";
post_hook = pkgs.writeShellScript "reload-swaync" ''
if which swaync-client; then
swaync-client --reload-css
fi
'';
}; };
}; });
}; };
}; };
}; };

View File

@@ -0,0 +1,12 @@
layout {
gaps {{custom.padding}}
struts {{custom.double_padding}}
}
overview {
backdrop-color "{{colors.surface.default.hex}}"
}
window-rule {
geometry-corner-radius {{custom.radius}}
}

View File

@@ -37,7 +37,7 @@ let g:terminal_color_14 = "{{colors.cyan.default.hex}}"
let g:terminal_color_15 = "{{colors.on_surface_variant.default.hex}}" let g:terminal_color_15 = "{{colors.on_surface_variant.default.hex}}"
set termguicolors set termguicolors
set background=dark set background={{mode | to_lower}}
if exists("g:neovide") if exists("g:neovide")
hi! Normal guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex}} hi! Normal guibg={{colors.surface.default.hex}} guifg={{colors.on_surface.default.hex}}

View File

@@ -22,8 +22,8 @@ in
home = { home = {
sessionVariables = { sessionVariables = {
NIXOS_OZONE_WL = "1"; NIXOS_OZONE_WL = "1";
GDK_BACKEND = "wayland,x11,*"; GDK_BACKEND = "wayland";
QT_QPA_PLATFORM = "wayland;xcb"; QT_QPA_PLATFORM = "wayland";
SDL_VIDEODRIVER = "wayland"; SDL_VIDEODRIVER = "wayland";
}; };
@@ -32,6 +32,7 @@ in
# fonts # fonts
noto-fonts noto-fonts
# gnome packages # gnome packages
qalculate-gtk
evince evince
baobab baobab
gnome.gvfs gnome.gvfs
@@ -52,13 +53,6 @@ in
}; };
programs = { programs = {
dankMaterialShell = {
enable = true;
niri = {
enableSpawn = true;
enableKeybinds = false;
};
};
niri.settings = { niri.settings = {
binds = { binds = {
"Mod+Left".action.focus-column-left = [ ]; "Mod+Left".action.focus-column-left = [ ];
@@ -75,29 +69,30 @@ in
"Mod+Shift+Down".action.move-window-down-or-to-workspace-down = [ ]; "Mod+Shift+Down".action.move-window-down-or-to-workspace-down = [ ];
"Mod+C".action.close-window = [ ]; "Mod+C".action.close-window = [ ];
"Mod+M".action.center-window = [ ]; /*
"Mod+M".action.spawn = [
(pkgs.writeShellScript "qalculate" ''
if niri msg --json windows | jq -e 'any(.[]; .app_id == "qalculate-gtk")'; then
pkill qalculate-gtk
else
qalculate-gtk &
fi
'')
];
*/
"Mod+T".action.spawn = [ "kitty" ]; "Mod+T".action.spawn = [ "kitty" ];
"Mod+V".action.maximize-column = [ ]; "Mod+V".action.maximize-column = [ ];
"Mod+P".action.fullscreen-window = [ ]; "Mod+D".action.fullscreen-window = [ ];
"Mod+P".action.toggle-window-floating = [ ];
"Mod+Space".action.spawn = [ "Mod+Shift+V".action.screenshot = [ ];
"dms" # "Mod+Shift+C".action.pick-color = [ ];
"ipc"
"spotlight"
"toggle"
];
"Mod+MouseMiddle".action.toggle-overview = [ ];
}; };
overview.zoom = 0.8;
window-rules = [ window-rules = [
{ {
geometry-corner-radius = {
top-left = 24.0;
top-right = 24.0;
bottom-left = 24.0;
bottom-right = 24.0;
};
clip-to-geometry = true; clip-to-geometry = true;
tiled-state = true; tiled-state = true;
} }
@@ -109,6 +104,17 @@ in
matches = [ { app-id = "firefox"; } ]; matches = [ { app-id = "firefox"; } ];
default-column-width.fixed = 1500; default-column-width.fixed = 1500;
} }
{
matches = [ { app-id = "qalculate-gtk"; } ];
open-floating = true;
default-column-width.fixed = 1000;
default-window-height.fixed = 800;
default-floating-position = {
x = 0;
y = 0;
relative-to = "bottom";
};
}
]; ];
layout = { layout = {
always-center-single-column = true; always-center-single-column = true;
@@ -128,17 +134,31 @@ in
}; };
}; };
programs.dankMaterialShell.greeter = {
enable = true;
compositor.name = "niri";
configHome = "/home/${username}";
};
services = { services = {
kmscon = { kmscon = {
enable = true; enable = true;
hwRender = true; hwRender = true;
}; };
greetd = {
enable = true;
greeterManagesPlymouth = false;
settings = {
initial_session = {
command = "${pkgs.niri}/bin/niri-session";
user = username;
};
default_session = {
command = "${lib.getExe pkgs.tuigreet} --asterisks --remember --user-menu --cmd '${pkgs.niri}/bin/niri-session'";
user = username;
};
};
};
dbus = {
enable = true;
implementation = "broker";
};
pcscd.enable = true;
gvfs.enable = true;
}; };
}; };
} }

View File

@@ -36,6 +36,23 @@ in
"move ${pipPadding} ${pipPadding},${firefoxPipInitial}" "move ${pipPadding} ${pipPadding},${firefoxPipInitial}"
]; ];
}; };
programs.niri.settings.window-rules = [
{
matches = [
{
app-id = "firefox";
title = "Picture-in-Picture";
}
];
open-focused = false;
open-floating = true;
default-floating-position = {
x = homeConfig.theme.md3-evo.padding;
y = homeConfig.theme.md3-evo.padding;
relative-to = "top-left";
};
}
];
}; };
}; };
} }

View File

@@ -25,6 +25,7 @@ in
"ignorealpha 0.3, anyrun" "ignorealpha 0.3, anyrun"
]; ];
}; };
programs.niri.settings.binds."Mod+Space".action.spawn = [ (lib.getExe pkgs.walker) ];
home.packages = with pkgs; [ home.packages = with pkgs; [
walker walker
wl-clipboard wl-clipboard

View File

@@ -20,6 +20,8 @@ in
enable = true; enable = true;
settings = { settings = {
mainBar = { mainBar = {
layer = "top";
height = 24; height = 24;
reload_style_on_change = true; reload_style_on_change = true;
exclusive = true; exclusive = true;
@@ -35,25 +37,24 @@ in
modules-center = [ modules-center = [
"clock" "clock"
]; ];
modules-right = modules-right = [
[ "privacy"
"privacy" "gamemode"
"gamemode" "tray"
"tray" "pulseaudio"
"pulseaudio" ]
] ++ (
++ ( if cfg.mobile then
if cfg.mobile then [ "backlight" ]
[ "backlight" ] else
else [
[ "custom/brightness"
"custom/brightness" ]
] )
) ++ [
++ [ # "custom/theme"
# "custom/theme" # "network"
# "network" ];
];
"pulseaudio" = { "pulseaudio" = {
format = "{icon} {volume}%"; format = "{icon} {volume}%";

View File

@@ -28,6 +28,19 @@ in
]; ];
}; };
# WARN: sometimes the VM will place hard-coded/hashed paths in the config,
# which breaks after NixOS updates because hashes change.
# The error might look something like
# "Unable to find efi firmware that is compatible with the current configuration".
# To fix this, manually edit the VM config in the VM manager in the XML tab of the Boot Options.
# Replace
# <loader readonly="yes" secure="yes" type="pflash" format="raw">/nix/store/yd1rlziy0cnjjp78zc7wr9dcv5hah16w-qemu-10.1.0/share/qemu/edk2-x86_64-secure-code.fd</loader>
# <nvram template="/nix/store/yd1rlziy0cnjjp78zc7wr9dcv5hah16w-qemu-10.1.0/share/qemu/edk2-i386-vars.fd" templateFormat="raw" format="raw">/var/lib/libvirt/qemu/nvram/win11_VARS.fd</nvram>
# with
# <loader readonly="yes" secure="yes" type="pflash" format="raw">/run/libvirt/nix-ovmf/edk2-x86_64-secure-code.fd</loader>
# <nvram template="/run/libvirt/nix-ovmf/edk2-i386-vars.fd" templateFormat="raw" format="raw">/var/lib/libvirt/qemu/nvram/win11_VARS.fd</nvram>
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
virt-manager virt-manager
virt-viewer virt-viewer
@@ -37,16 +50,13 @@ in
win-virtio win-virtio
win-spice win-spice
adwaita-icon-theme adwaita-icon-theme
qemu
]; ];
virtualisation = { virtualisation = {
libvirtd = { libvirtd = {
enable = true; enable = true;
qemu = { qemu.swtpm.enable = true;
swtpm.enable = true;
ovmf.enable = true;
ovmf.packages = [ pkgs.OVMFFull.fd ];
};
}; };
spiceUSBRedirection.enable = true; spiceUSBRedirection.enable = true;
}; };

View File

@@ -0,0 +1,23 @@
{
config,
pkgs,
lib,
...
}:
let
cfg = config.programs.matugen;
in
{
options.programs.matugen = {
enable = lib.mkEnableOption "matugen";
package = lib.mkPackageOption pkgs "matugen" { };
settings = lib.mkOption { type = lib.types.attrs; };
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
xdg.configFile."matugen/config.toml".source = lib.mkIf (cfg.settings != null) (
(pkgs.formats.toml { }).generate "matugen" cfg.settings
);
};
}