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