use stylix for styling

This commit is contained in:
Remy Moll 2025-03-12 14:49:20 +01:00
parent b007e5b232
commit 2196a1a5e8
11 changed files with 464 additions and 81 deletions

340
flake.lock generated
View File

@ -33,6 +33,89 @@
"type": "github" "type": "github"
} }
}, },
"base16": {
"inputs": {
"fromYaml": "fromYaml"
},
"locked": {
"lastModified": 1732200724,
"narHash": "sha256-+R1BH5wHhfnycySb7Sy5KbYEaTJZWm1h+LW1OtyhiTs=",
"owner": "SenchoPens",
"repo": "base16.nix",
"rev": "153d52373b0fb2d343592871009a286ec8837aec",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "base16.nix",
"type": "github"
}
},
"base16-fish": {
"flake": false,
"locked": {
"lastModified": 1622559957,
"narHash": "sha256-PebymhVYbL8trDVVXxCvZgc0S5VxI7I1Hv4RMSquTpA=",
"owner": "tomyun",
"repo": "base16-fish",
"rev": "2f6dd973a9075dabccd26f1cded09508180bf5fe",
"type": "github"
},
"original": {
"owner": "tomyun",
"repo": "base16-fish",
"type": "github"
}
},
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1736852337,
"narHash": "sha256-esD42YdgLlEh7koBrSqcT7p2fsMctPAcGl/+2sYJa2o=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "03860521c40b0b9c04818f2218d9cc9efc21e7a5",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-helix",
"type": "github"
}
},
"base16-vim": {
"flake": false,
"locked": {
"lastModified": 1732806396,
"narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=",
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "base16-vim",
"rev": "577fe8125d74ff456cf942c733a85d769afe58b7",
"type": "github"
}
},
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1741628778,
"narHash": "sha256-RsvHGNTmO2e/eVfgYK7g+eYEdwwh7SbZa+gZkT24MEA=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "5a81d390bb64afd4e81221749ec4bffcbeb5fa80",
"type": "github"
},
"original": {
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"type": "github"
}
},
"flake-compat": { "flake-compat": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -49,6 +132,85 @@
"type": "github" "type": "github"
} }
}, },
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": [
"stylix",
"systems"
]
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"fromYaml": {
"flake": false,
"locked": {
"lastModified": 1731966426,
"narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=",
"owner": "SenchoPens",
"repo": "fromYaml",
"rev": "106af9e2f715e2d828df706c386a685698f3223b",
"type": "github"
},
"original": {
"owner": "SenchoPens",
"repo": "fromYaml",
"type": "github"
}
},
"git-hooks": {
"inputs": {
"flake-compat": [
"stylix",
"flake-compat"
],
"gitignore": "gitignore_2",
"nixpkgs": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1741379162,
"narHash": "sha256-srpAbmJapkaqGRE3ytf3bj4XshspVR5964OX5LfjDWc=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "b5a62751225b2f62ff3147d0a334055ebadcd5cc",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "git-hooks.nix",
"type": "github"
}
},
"gitignore": { "gitignore": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -71,6 +233,45 @@
"type": "github" "type": "github"
} }
}, },
"gitignore_2": {
"inputs": {
"nixpkgs": [
"stylix",
"git-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709087332,
"narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "637db329424fd7e46cf4185293b9cc8c88c95394",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"gnome-shell": {
"flake": false,
"locked": {
"lastModified": 1732369855,
"narHash": "sha256-JhUWbcYPjHO3Xs3x9/Z9RuqXbcp5yhPluGjwsdE2GMg=",
"owner": "GNOME",
"repo": "gnome-shell",
"rev": "dadd58f630eeea41d645ee225a63f719390829dc",
"type": "github"
},
"original": {
"owner": "GNOME",
"ref": "47.2",
"repo": "gnome-shell",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -92,6 +293,28 @@
"type": "github" "type": "github"
} }
}, },
"home-manager_2": {
"inputs": {
"nixpkgs": [
"stylix",
"nixpkgs"
]
},
"locked": {
"lastModified": 1739757849,
"narHash": "sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "9d3d080aec2a35e05a15cedd281c2384767c2cfe",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
},
"hyprcursor": { "hyprcursor": {
"inputs": { "inputs": {
"hyprlang": [ "hyprlang": [
@ -376,6 +599,22 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_3": {
"locked": {
"lastModified": 1741600792,
"narHash": "sha256-yfDy6chHcM7pXpMF4wycuuV+ILSTG486Z/vLx/Bdi6Y=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ebe2788eafd539477f83775ef93c3c7e244421d3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"pre-commit-hooks": { "pre-commit-hooks": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
@ -405,7 +644,41 @@
"hyprland": "hyprland", "hyprland": "hyprland",
"nix-flatpak": "nix-flatpak", "nix-flatpak": "nix-flatpak",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable" "nixpkgs-unstable": "nixpkgs-unstable",
"stylix": "stylix"
}
},
"stylix": {
"inputs": {
"base16": "base16",
"base16-fish": "base16-fish",
"base16-helix": "base16-helix",
"base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme",
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils",
"git-hooks": "git-hooks",
"gnome-shell": "gnome-shell",
"home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_3",
"systems": "systems_2",
"tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty",
"tinted-tmux": "tinted-tmux"
},
"locked": {
"lastModified": 1741703235,
"narHash": "sha256-3efck7239JPh6IHnqhETaoQejfxh4RBU16bE8IHOkto=",
"owner": "danth",
"repo": "stylix",
"rev": "4a3ac9e30cd15b25a8b2e6cf0a7a047f454408bd",
"type": "github"
},
"original": {
"owner": "danth",
"ref": "release-24.11",
"repo": "stylix",
"type": "github"
} }
}, },
"systems": { "systems": {
@ -423,6 +696,71 @@
"type": "github" "type": "github"
} }
}, },
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-foot": {
"flake": false,
"locked": {
"lastModified": 1726913040,
"narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=",
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-foot",
"rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4",
"type": "github"
}
},
"tinted-kitty": {
"flake": false,
"locked": {
"lastModified": 1716423189,
"narHash": "sha256-2xF3sH7UIwegn+2gKzMpFi3pk5DlIlM18+vj17Uf82U=",
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "eb39e141db14baef052893285df9f266df041ff8",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-kitty",
"rev": "eb39e141db14baef052893285df9f266df041ff8",
"type": "github"
}
},
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1740877430,
"narHash": "sha256-zWcCXgdC4/owfH/eEXx26y5BLzTrefjtSLFHWVD5KxU=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "d48ee86394cbe45b112ba23ab63e33656090edb4",
"type": "github"
},
"original": {
"owner": "tinted-theming",
"repo": "tinted-tmux",
"type": "github"
}
},
"xdph": { "xdph": {
"inputs": { "inputs": {
"hyprland-protocols": [ "hyprland-protocols": [

View File

@ -11,12 +11,14 @@
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1"; nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1";
# hyprland, plugins and related utils # hyprland, plugins and related utils
hyprland.url = "github:hyprwm/Hyprland"; hyprland.url = "github:hyprwm/Hyprland";
stylix.url = "github:danth/stylix/release-24.11";
}; };
outputs = { outputs = {
self, self,
nixpkgs, nixpkgs,
home-manager, home-manager,
stylix,
... ...
} @ inputs: } @ inputs:
let let
@ -31,6 +33,7 @@
modules = [ modules = [
./hosts/spectre-x360-2018 ./hosts/spectre-x360-2018
stylix.nixosModules.stylix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;

View File

@ -14,6 +14,7 @@
../../modules/nixos/pipewire.nix ../../modules/nixos/pipewire.nix
../../modules/nixos/podman.nix ../../modules/nixos/podman.nix
../../modules/nixos/power.nix ../../modules/nixos/power.nix
../../modules/nixos/stylix.nix
../../utils/binary-cache.nix ../../utils/binary-cache.nix
../../utils/garbage-collection.nix ../../utils/garbage-collection.nix
]; ];

View File

@ -32,9 +32,9 @@
userSettings = { userSettings = {
# visual # visual
"editor.fontFamily" = "'FiraCode Nerd Font Mono', 'monospace', monospace"; # "editor.fontFamily" = "'FiraCode Nerd Font Mono', 'monospace', monospace";
"terminal.integrated.fontFamily" = "FiraCode Nerd Font Mono"; # "terminal.integrated.fontFamily" = "FiraCode Nerd Font Mono";
"workbench.iconTheme" = "vs-seti"; # "workbench.iconTheme" = "vs-seti";
# telemetry # telemetry
"telemetry.enableCrashReporter" = false; "telemetry.enableCrashReporter" = false;
@ -45,52 +45,46 @@
# editor QOL # editor QOL
"security.workspace.trust.untrustedFiles" = "open"; "security.workspace.trust.untrustedFiles" = "open";
"editor.wordWrap" = "on"; "editor.wordWrap" = "on";
"editor.suggestSelection" = "first";
"editor.renderWhitespace" = "none";
"editor.acceptSuggestionOnEnter" = "off";
"editor.fontLigatures" = true;
"editor.inlineSuggest.enabled" = true;
"editor.bracketPairColorization.enabled" = true;
"editor.unicodeHighlight.nonBasicASCII" = false;
"editor.unicodeHighlight.invisibleCharacters" = false;
"editor.unicodeHighlight.ambiguousCharacters" = false;
"files.autoSave" = "onWindowChange"; "files.autoSave" = "onWindowChange";
"files.autoSaveDelay" = 1000; "files.autoSaveDelay" = 1000;
"files.insertFinalNewline" = true; "files.insertFinalNewline" = true;
"files.trimTrailingWhitespace" = true; "files.trimTrailingWhitespace" = true;
"git.ignoreMissingGitWarning" = true;
"editor.suggestSelection" = "first";
"workbench.startupEditor" = "newUntitledFile";
"editor.renderWhitespace" = "none";
"editor.acceptSuggestionOnEnter" = "off";
"explorer.confirmDelete" = false; "explorer.confirmDelete" = false;
"git.confirmSync" = false;
"git.enableSmartCommit" = true;
"editor.fontLigatures" = true;
"explorer.confirmDragAndDrop" = false; "explorer.confirmDragAndDrop" = false;
"editor.inlineSuggest.enabled" = true;
"diffEditor.renderSideBySide" = false;
"github.copilot.enable" = {
"*" = true;
"plaintext" = true;
"markdown" = true;
"scminput" = false;
"yaml" = true;
};
"editor.bracketPairColorization.enabled" = true;
"git.autofetch" = true;
"terminal.integrated.enableMultiLinePasteWarning" = false; "terminal.integrated.enableMultiLinePasteWarning" = false;
"editor.unicodeHighlight.nonBasicASCII" = false;
"jupyter.disableJupyterAutoStart" = true;
"editor.unicodeHighlight.invisibleCharacters" = false;
"editor.unicodeHighlight.ambiguousCharacters" = false;
"diffEditor.ignoreTrimWhitespace" = false;
"update.showReleaseNotes" = false; "update.showReleaseNotes" = false;
"terminal.external.linuxExec" = "kitty"; "terminal.external.linuxExec" = "kitty";
"window.dialogStyle" = "custom";
"window.titleBarStyle" = "custom";
"github.copilot.editor.enableAutoCompletions" = true;
"window.menuBarVisibility" = "compact"; "window.menuBarVisibility" = "compact";
"workbench.colorTheme" = "Default Light+"; "workbench.startupEditor" = "newUntitledFile";
# "workbench.colorTheme" = "Default Light+";
"github.copilot.editor.enableAutoCompletions" = true;
"github.copilot.advanced" = {}; "github.copilot.advanced" = {};
"git.openRepositoryInParentFolders" = "never"; "github.copilot.enable" = {
"terminal.integrated.commandsToSkipShell" = [ "*" = true;
"language-julia.interrupt" };
];
# git
"git.ignoreMissingGitWarning" = true;
"git.confirmSync" = false;
"git.enableSmartCommit" = true;
"git.autofetch" = true;
"diffEditor.renderSideBySide" = false;
"diffEditor.hideUnchangedRegions.enabled" = true; "diffEditor.hideUnchangedRegions.enabled" = true;
"diffEditor.ignoreTrimWhitespace" = false;
# Python # Python
"jupyter.disableJupyterAutoStart" = true;
"jupyter.askForKernelRestart" = false; "jupyter.askForKernelRestart" = false;
"workbench.editorAssociations" = { "workbench.editorAssociations" = {
"*.ipynb" = "jupyter-notebook"; "*.ipynb" = "jupyter-notebook";
@ -110,6 +104,7 @@
"editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?"; "editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
}; };
"[typst-code]" = { "[typst-code]" = {
"git.openRepositoryInParentFolders" = "never";
"editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?"; "editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
}; };
"tinymist.fontPaths" = [ "tinymist.fontPaths" = [

View File

@ -2,7 +2,7 @@
{ {
programs.direnv = { programs.direnv = {
enable = true; enable = true;
enableFishIntegration = true; # see note on other shells below # enableFishIntegration = true; # see note on other shells below
nix-direnv.enable = true; nix-direnv.enable = true;
}; };
} }

View File

@ -168,8 +168,9 @@
monitor = [ monitor = [
"eDP-1, 3840x2160, 0x0, 1.5" # the internal laptop monitor "eDP-1, 3840x2160, 0x0, 1.5" # the internal laptop monitor
"DP-2, 3840x2160, 0x-1440, 1.5" # Samsung monitor at irchel (matching the description)
", preferred, auto, 1" # automatically add any newly detected monitor # "desc:Samsung Electric Company LS27D80xU HK7X800803, 3840x2160, auto-up, 1.5"
", preferred, auto-up, auto" # automatically add any newly detected monitor
]; ];
xwayland = { xwayland = {

View File

@ -4,60 +4,60 @@
... ...
}: }:
with lib; let with lib; let
# load the wallpapers from the wallpapers directory - this gives a set with the folder content # # load the wallpapers from the wallpapers directory - this gives a set with the folder content
dirContent = builtins.readDir ../../../wallpapers; # dirContent = builtins.readDir ../../../wallpapers;
wallpaperString = lib.strings.concatMapStrings (x: " " + x) wallpapers;
# # load each wallpaper and keep its path (now in the nix store) as an array
# wallpapers = map (x: builtins.readDir "${../../../wallpapers}/${x.value}") dirContent;
# wallpaperString = lib.strings.concatMapStrings (x: " " + x) wallpapers; # wallpaperString = lib.strings.concatMapStrings (x: " " + x) wallpapers;
# # # load each wallpaper and keep its path (now in the nix store) as an array
# # wallpapers = map (x: builtins.readDir "${../../../wallpapers}/${x.value}") dirContent;
# # wallpaperString = lib.strings.concatMapStrings (x: " " + x) wallpapers;
# script that picks a random wallpaper from the array and sets it as the desktop background # # script that picks a random wallpaper from the array and sets it as the desktop background
monitor = ""; # leave empty to set the wallpaper on all monitors # monitor = ""; # leave empty to set the wallpaper on all monitors
wallpaperRandomizer = pkgs.writeShellScriptBin "wallpaperRandomizer" '' # wallpaperRandomizer = pkgs.writeShellScriptBin "wallpaperRandomizer" ''
wallpaper=$(shuf -n 1 -e ${wallpaperString}) # wallpaper=$(shuf -n 1 -e ${wallpaperString})
hyprctl hyprpaper unload all # hyprctl hyprpaper unload all
hyprctl hyprpaper preload $wallpaper # hyprctl hyprpaper preload $wallpaper
hyprctl hyprpaper wallpaper "${monitor},$wallpaper" # hyprctl hyprpaper wallpaper "${monitor},$wallpaper"
''; # '';
in { in {
home.packages = [wallpaperRandomizer]; # home.packages = [wallpaperRandomizer];
services.hyprpaper = { services.hyprpaper = {
enable = true; enable = true;
settings = {
ipc = "off";
splash = false;
};
}; };
# settings = {
# ipc = "off";
# splash = false;
# };
# };
systemd.user = { # systemd.user = {
services.wallpaperRandomizer = { # services.wallpaperRandomizer = {
Install = {WantedBy = ["graphical-session.target"];}; # Install = {WantedBy = ["graphical-session.target"];};
Unit = { # Unit = {
Description = "Set random desktop background using hyprpaper"; # Description = "Set random desktop background using hyprpaper";
After = ["graphical-session-pre.target"]; # After = ["graphical-session-pre.target"];
PartOf = ["graphical-session.target"]; # PartOf = ["graphical-session.target"];
}; # };
Service = { # Service = {
Type = "oneshot"; # Type = "oneshot";
ExecStart = "${wallpaperRandomizer}/bin/wallpaperRandomizer"; # ExecStart = "${wallpaperRandomizer}/bin/wallpaperRandomizer";
IOSchedulingClass = "idle"; # IOSchedulingClass = "idle";
}; # };
}; # };
timers.wallpaperRandomizer = { # timers.wallpaperRandomizer = {
Unit = {Description = "Set random desktop background using hyprpaper on an interval";}; # Unit = {Description = "Set random desktop background using hyprpaper on an interval";};
Timer = {OnUnitActiveSec = "6h";}; # Timer = {OnUnitActiveSec = "6h";};
Install = {WantedBy = ["timers.target"];}; # Install = {WantedBy = ["timers.target"];};
}; # };
}; # };
} }

View File

@ -4,7 +4,7 @@
enable = true; enable = true;
shellIntegration.enableFishIntegration = true; shellIntegration.enableFishIntegration = true;
settings = { settings = {
background_opacity = 0.8; # background_opacity = 0.8;
confirm_os_window_close = 0; confirm_os_window_close = 0;
enable_audio_bell = false; enable_audio_bell = false;
cursor_trail = 3; cursor_trail = 3;

View File

@ -0,0 +1,33 @@
{pkgs, ...}:
{
stylix = {
# Stylix is already enabled since the system is configured to use it
# enable = true;
# don't theme applications by default
autoEnable = false;
cursor = {
package = pkgs.apple-cursor;
name = "macOS";
size = 32;
};
# TODO
# fonts = {};
iconTheme = {
package = pkgs.tela-icon-theme;
};
image = ./../../wallpapers/magicpattern-87PP9Zd7MNo-unsplash.jpg;
};
stylix.targets = {
vscode.enable = true;
hyprpaper.enable = true;
waybar.enable = true;
wofi.enable = true;
kitty.enable = true;
};
}

11
modules/nixos/stylix.nix Normal file
View File

@ -0,0 +1,11 @@
{
config,
lib,
pkgs,
...
}:
{
stylix.enable = true;
stylix.image = ./../../wallpapers/magicpattern-87PP9Zd7MNo-unsplash.jpg;
}

View File

@ -13,6 +13,7 @@ with lib.hm.gvariant;
../modules/home-manager/kubectl.nix ../modules/home-manager/kubectl.nix
../modules/home-manager/obsidian.nix ../modules/home-manager/obsidian.nix
../modules/home-manager/owncloud-client.nix ../modules/home-manager/owncloud-client.nix
../modules/home-manager/stylix.nix
../modules/home-manager/thunderbird.nix ../modules/home-manager/thunderbird.nix
../modules/home-manager/wofi.nix ../modules/home-manager/wofi.nix
../modules/home-manager/xdg-portals.nix ../modules/home-manager/xdg-portals.nix