refactor: desktop default applications

This commit is contained in:
2026-04-27 17:28:34 +02:00
parent 93624900ad
commit 088080590c
10 changed files with 106 additions and 76 deletions
+36 -9
View File
@@ -1,20 +1,47 @@
{ config, ... }: { ... }:
let let
repo = config.repo; mkPrimaryDesktopApplication =
{
name,
package,
command,
desktopId,
}:
{ pkgs, ... }:
{
meta.desktop.${name} = {
inherit command desktopId;
package = package pkgs;
};
};
in in
{ {
flake.modules.homeManager.primary-browser-vivaldi = mkPrimaryDesktopApplication {
name = "browser";
package = pkgs: pkgs.vivaldi;
command = "vivaldi";
desktopId = "vivaldi-stable.desktop";
};
flake.modules.homeManager.primary-file-manager-nautilus = mkPrimaryDesktopApplication {
name = "fileManager";
package = pkgs: pkgs.nautilus;
command = "nautilus";
desktopId = "org.gnome.Nautilus.desktop";
};
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 +55,8 @@ in
dbeaver-bin dbeaver-bin
] ]
++ [ ++ [
browserPackage browser.package
fileManagerPackage fileManager.package
]; ];
programs.imv.enable = true; programs.imv.enable = true;
@@ -69,8 +96,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.terminal.command;
outputs = lib.mapAttrs ( outputs = lib.mapAttrs (
_: display: _: display:
{ {
+1 -1
View File
@@ -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; terminal = config.meta.terminal;
}; };
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;
}; };
}; };
}; };
+4 -4
View File
@@ -2,7 +2,7 @@
let let
repo = config.repo; repo = config.repo;
mkPrimaryTerminal = mkTerminal =
{ {
desktopId, desktopId,
packageFor, packageFor,
@@ -16,7 +16,7 @@ let
imports = [ terminalModule ]; imports = [ terminalModule ];
config = { config = {
repo.terminal.primary = { meta.terminal = {
inherit inherit
desktopId desktopId
package package
@@ -155,13 +155,13 @@ in
}; };
}; };
flake.modules.homeManager.primary-terminal-foot = mkPrimaryTerminal { flake.modules.homeManager.primary-terminal-foot = mkTerminal {
desktopId = "foot.desktop"; desktopId = "foot.desktop";
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"; desktopId = "kitty.desktop";
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";
+22 -28
View File
@@ -81,36 +81,22 @@ let
} }
); );
desktopApplicationType = lib.types.submodule ( desktopApplicationType = lib.types.submodule {
{ ... }:
{
options = { options = {
package = lib.mkOption {
type = lib.types.package;
};
command = lib.mkOption { command = lib.mkOption {
type = lib.types.str; type = lib.types.str;
}; };
packageAttr = lib.mkOption { desktopId = lib.mkOption {
type = lib.types.str; type = lib.types.str;
}; };
}; };
}
);
desktopType = lib.types.submodule (
{ ... }:
{
options = {
browser = lib.mkOption {
type = desktopApplicationType;
}; };
fileManager = lib.mkOption {
type = desktopApplicationType;
};
};
}
);
displayType = lib.types.submodule ( displayType = lib.types.submodule (
{ ... }: { ... }:
{ {
@@ -194,7 +180,7 @@ let
} }
); );
terminalPrimaryType = lib.types.submodule { terminalType = lib.types.submodule {
options = { options = {
package = lib.mkOption { package = lib.mkOption {
type = lib.types.package; type = lib.types.package;
@@ -226,10 +212,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 +231,23 @@ in
}; };
}; };
config.flake.modules.homeManager.repo-schema = config.flake.modules.homeManager.meta =
{ ... }: { ... }:
{ {
options.repo.terminal.primary = lib.mkOption { options.meta.terminal = lib.mkOption {
type = terminalPrimaryType; type = terminalType;
};
options.meta.desktop.browser = lib.mkOption {
type = desktopApplicationType;
};
options.meta.desktop.fileManager = 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