refactor: desktop default applications

This commit is contained in:
2026-04-27 17:28:34 +02:00
parent 93624900ad
commit 44fe4552ef
11 changed files with 114 additions and 102 deletions
+33 -9
View File
@@ -1,20 +1,44 @@
{ config, ... }:
{ ... }:
let
repo = config.repo;
mkPrimaryDesktopApplication =
{
name,
package,
desktopEntryName,
}:
{ pkgs, ... }:
{
meta.desktop.${name} = {
inherit desktopEntryName;
package = package pkgs;
};
};
in
{
flake.modules.homeManager.primary-browser-vivaldi = mkPrimaryDesktopApplication {
name = "browser";
package = pkgs: pkgs.vivaldi;
desktopEntryName = "vivaldi-stable";
};
flake.modules.homeManager.primary-file-manager-nautilus = mkPrimaryDesktopApplication {
name = "fileManager";
package = pkgs: pkgs.nautilus;
desktopEntryName = "org.gnome.Nautilus";
};
flake.modules.homeManager.desktop-defaults =
{ config, pkgs, ... }:
let
browserPackage = pkgs.${repo.desktop.browser.packageAttr};
fileManagerPackage = pkgs.${repo.desktop.fileManager.packageAttr};
browser = config.meta.desktop.browser;
fileManager = config.meta.desktop.fileManager;
homeDir = config.home.homeDirectory;
localDir = "${homeDir}/.local";
mediaDir = "${homeDir}/media";
in
{
home.preferXdgDirectories = true;
home.sessionVariables.BROWSER = repo.desktop.browser.command;
home.sessionVariables.BROWSER = browser.command;
home.packages =
with pkgs;
@@ -28,8 +52,8 @@ in
dbeaver-bin
]
++ [
browserPackage
fileManagerPackage
browser.package
fileManager.package
];
programs.imv.enable = true;
@@ -69,8 +93,8 @@ in
neovim
]
++ [
browserPackage
fileManagerPackage
fileManager.package
browser.package
];
};
};
+16 -8
View File
@@ -1,15 +1,23 @@
{ config, ... }:
let
nixosModules = config.flake.modules.nixos;
in
{
flake.modules.nixos.server-firewall = {
networking = {
firewall.enable = true;
firewall.allowPing = false;
};
flake.modules.nixos.nftables-firewall = {
networking.nftables.enable = true;
};
flake.modules.nixos.network-manager = {
networking = {
nftables.enable = true;
networkmanager.enable = true;
networking.networkmanager.enable = true;
};
flake.modules.nixos.server-firewall =
{ ... }:
{
imports = [
nixosModules.nftables-firewall
];
networking.firewall.allowPing = false;
};
}
+3 -3
View File
@@ -32,9 +32,9 @@ in
}:
let
repoTheme = repo.theme.kanagawa;
browserCommand = repo.desktop.browser.command;
fileManagerPackage = pkgs.${repo.desktop.fileManager.packageAttr};
terminalCommand = config.repo.terminal.primary.command;
browserCommand = config.meta.desktop.browser.command;
fileManagerPackage = config.meta.desktop.fileManager.package;
terminalCommand = config.meta.desktop.terminal.command;
outputs = lib.mapAttrs (
_: display:
{
@@ -1,7 +1,7 @@
{
homeDirectory,
lib,
terminal,
terminalCommand,
}:
{
settingsVersion = 53;
@@ -260,7 +260,7 @@
pinnedApps = [ ];
useApp2Unit = false;
sortByMostUsed = true;
terminalCommand = lib.concatStringsSep " " ([ terminal.command ] ++ terminal.execArgs);
inherit terminalCommand;
customLaunchPrefixEnabled = false;
customLaunchPrefix = "";
viewMode = "grid";
+5 -5
View File
@@ -8,13 +8,13 @@ let
{
homeDirectory,
lib,
terminal,
terminalCommand,
}:
import ./_noctalia-config.nix {
inherit
homeDirectory
lib
terminal
terminalCommand
;
};
@@ -22,13 +22,13 @@ let
{
homeDirectory,
lib,
terminal,
terminalCommand,
}:
mkNoctaliaSettings {
inherit
homeDirectory
lib
terminal
terminalCommand
;
};
@@ -68,7 +68,7 @@ in
baseSettings = mkBaseSettings {
inherit lib;
homeDirectory = config.home.homeDirectory;
terminal = config.repo.terminal.primary;
terminalCommand = lib.getExe pkgs.xdg-terminal-exec;
};
settings =
if baseSettings == { } || !osConfig.meta.machine.portable then
+13 -2
View File
@@ -5,20 +5,31 @@
let
repo = config.repo;
account = repo.account;
homeModules = config.flake.modules.homeManager;
in
{
flake.modules.homeManager.pinentry =
{ pkgs, ... }:
{
meta.pinentry.package = pkgs.pinentry-gnome3;
};
flake.modules.homeManager.passwords =
{
pkgs,
config,
...
}:
{
imports = [
homeModules.pinentry
];
programs.rbw = {
enable = true;
settings = {
base_url = repo.services.vaultwarden.url;
email = account.primaryEmail.address;
pinentry = pkgs.pinentry-gnome3;
pinentry = config.meta.pinentry.package;
};
};
};
+10 -15
View File
@@ -2,13 +2,13 @@
let
repo = config.repo;
mkPrimaryTerminal =
mkTerminal =
{
desktopId,
desktopEntryName,
packageFor,
terminalModule,
}:
{ lib, pkgs, ... }:
{ config, pkgs, ... }:
let
package = packageFor pkgs;
in
@@ -16,18 +16,13 @@ let
imports = [ terminalModule ];
config = {
repo.terminal.primary = {
inherit
desktopId
package
;
command = lib.getExe package;
execArgs = [ "-e" ];
meta.desktop.terminal = {
inherit desktopEntryName package;
};
xdg.terminal-exec = {
enable = true;
settings.default = [ desktopId ];
settings.default = [ config.meta.desktop.terminal.desktopId ];
};
};
};
@@ -155,14 +150,14 @@ in
};
};
flake.modules.homeManager.primary-terminal-foot = mkPrimaryTerminal {
desktopId = "foot.desktop";
flake.modules.homeManager.primary-terminal-foot = mkTerminal {
desktopEntryName = "foot";
packageFor = pkgs: pkgs.foot;
terminalModule = config.flake.modules.homeManager.terminal-foot;
};
flake.modules.homeManager.primary-terminal-kitty = mkPrimaryTerminal {
desktopId = "kitty.desktop";
flake.modules.homeManager.primary-terminal-kitty = mkTerminal {
desktopEntryName = "kitty";
packageFor = pkgs: pkgs.kitty;
terminalModule = config.flake.modules.homeManager.terminal-kitty;
};
-13
View File
@@ -24,19 +24,6 @@
};
};
desktop = {
browser = {
command = "vivaldi";
packageAttr = "vivaldi";
};
fileManager = {
command = "nautilus";
packageAttr = "nautilus";
};
};
services = {
actual = {
domain = "finance.jelles.net";
+27 -43
View File
@@ -82,30 +82,27 @@ let
);
desktopApplicationType = lib.types.submodule (
{ ... }:
{ config, ... }:
{
options = {
package = lib.mkOption {
type = lib.types.package;
};
command = lib.mkOption {
type = lib.types.str;
default = lib.getExe config.package;
defaultText = lib.literalExpression "lib.getExe config.package";
};
packageAttr = lib.mkOption {
desktopEntryName = lib.mkOption {
type = lib.types.str;
};
};
}
);
desktopType = lib.types.submodule (
{ ... }:
{
options = {
browser = lib.mkOption {
type = desktopApplicationType;
};
fileManager = lib.mkOption {
type = desktopApplicationType;
desktopId = lib.mkOption {
type = lib.types.str;
default = "${config.desktopEntryName}.desktop";
defaultText = lib.literalExpression ''"${config.desktopEntryName}.desktop"'';
};
};
}
@@ -193,27 +190,6 @@ let
};
}
);
terminalPrimaryType = lib.types.submodule {
options = {
package = lib.mkOption {
type = lib.types.package;
};
command = lib.mkOption {
type = lib.types.str;
};
desktopId = lib.mkOption {
type = lib.types.str;
};
execArgs = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
};
};
};
in
{
options.repo = {
@@ -226,10 +202,6 @@ in
default = { };
};
desktop = lib.mkOption {
type = desktopType;
};
services = lib.mkOption {
type = lib.types.raw;
default = { };
@@ -249,11 +221,23 @@ in
};
};
config.flake.modules.homeManager.repo-schema =
config.flake.modules.homeManager.meta =
{ ... }:
{
options.repo.terminal.primary = lib.mkOption {
type = terminalPrimaryType;
options.meta.desktop.browser = lib.mkOption {
type = desktopApplicationType;
};
options.meta.desktop.fileManager = lib.mkOption {
type = desktopApplicationType;
};
options.meta.desktop.terminal = lib.mkOption {
type = desktopApplicationType;
};
options.meta.pinentry.package = lib.mkOption {
type = lib.types.package;
};
};
+1 -1
View File
@@ -22,7 +22,7 @@ in
backupFileExtension = "bak";
extraSpecialArgs = { inherit inputs; };
sharedModules = [
hmModules.repo-schema
hmModules.meta
hmModules.syncthing
hmModules.shell
hmModules.neovim
+3
View File
@@ -14,6 +14,7 @@ in
nixosModules.flatpak
nixosModules.fonts
nixosModules.network-manager
nixosModules.nftables-firewall
nixosModules.niri
nixosModules.plymouth
nixosModules.printing
@@ -40,6 +41,8 @@ in
homeModules.passwords
homeModules.clipboard
homeModules.dev-tools
homeModules.primary-browser-vivaldi
homeModules.primary-file-manager-nautilus
homeModules.desktop-defaults
homeModules.email
homeModules.mpv