Add Jan UI and selective Flatpak options

- Expose Jan as a core package and add a Hyprland shortcut (Mod + J). -
Refactor Flatpak module to provide per‑package enable options; default
package list is now empty. - Update librewolf search template to use a
single‑parameter URL. - Minor comment formatting changes across host
module files.
This commit is contained in:
2025-11-27 11:21:59 +01:00
parent d80266e89a
commit 8d3fd7dbe2
10 changed files with 266 additions and 280 deletions

View File

@@ -2,65 +2,55 @@ _: {
/* /*
Development editors and IDEs Development editors and IDEs
*/ */
# VSCodium: a free and open-source "demicrosofted" VSCode vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
vscodium.enable = false;
# Zed Editor: a modern, highperformance code editor
zed-editor = { zed-editor = {
# Enable Zed Editor enable = true; # Zed Editor: a modern, highperformance code editor
enable = true; remote-server = true; # Remote Server: enable remote editing capabilities
# Remote Server: enable remote editing capabilities
remote-server = true;
}; };
/* /*
Web browsers Web browsers
*/ */
# Librewolf: a privacy-focused Firefox fork librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
librewolf.enable = true;
# Ungoogled Chromium: a privacy-focused Chromium fork ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork
ungoogled-chromium.enable = true;
/* /*
System utilities System utilities
*/ */
# Btop: a resource monitor for the terminal btop.enable = true; # Btop: a resource monitor for the terminal
btop.enable = true;
# Cava: terminal audio visualizer cava.enable = false; # Cava: terminal audio visualizer
cava.enable = false;
# Fastfetch: a fast system information tool fastfetch.enable = true; # Fastfetch: a fast system information tool
fastfetch.enable = true;
/* /*
Communication and synchronization Communication and synchronization
*/ */
# KDE Connect: integrate your phone and desktop kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
kdeconnect.enable = false;
# Nextcloud Client: sync files with a Nextcloud server nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server
nextcloud-client.enable = true;
# Vesktop: a communitydriven Discord client vesktop.enable = true; # Vesktop: a communitydriven Discord client
vesktop.enable = true;
/* /*
Gaming Gaming
*/ */
# Lutris: an open gaming platform lutris.enable = false; # Lutris: an open gaming platform
lutris.enable = false;
/* /*
Media recording and streaming Media recording and streaming
*/ */
# OBS Studio: streaming and recording software obs-studio.enable = false; # OBS Studio: streaming and recording software
obs-studio.enable = false;
/* /*
Office suite Office suite
*/ */
# OnlyOffice: an office suite compatible with Microsoft formats onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats
onlyoffice.enable = true;
/* /*
Learning tools Learning tools
*/ */
# Anki: spacedrepetition flashcard program anki.enable = true; # Anki: spacedrepetition flashcard program
anki.enable = true;
} }

View File

@@ -2,86 +2,89 @@ _: {
/* /*
Container & Packaging Container & Packaging
*/ */
# Docker: container runtime and management docker.enable = true; # Docker: container runtime and management
docker.enable = true;
# Distrobox: containerized development environments distrobox.enable = false; # Distrobox: containerized development environments
distrobox.enable = false;
# Flatpak: universal packaging system for Linux flatpak = {
flatpak.enable = true; enable = true; # Flatpak: universal packaging system for Linux
# Lazydocker: simple TUI for Docker
lazydocker.enable = false; packages = {
sober = true; # Enable Roblox Client
warehouse = true; # Enable Flatpak manager
flatseal = true; # Enable Flatpak permissions manager
};
};
lazydocker.enable = false; # Lazydocker: simple TUI for Docker
/* /*
Gaming Gaming
*/ */
# GameMode: optimizes system performance for gaming gamemode.enable = true; # GameMode: optimizes system performance for gaming
gamemode.enable = true;
# Gamescope: micro-compositor for games gamescope.enable = false; # Gamescope: micro-compositor for games
gamescope.enable = false;
# Prism Launcher: Minecraft modded launcher prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher
prismlauncher.enable = false;
# Steam: platform for buying and playing games steam.enable = true; # Steam: platform for buying and playing games
steam.enable = true;
# SpaceCadet Pinball: classic pinball game spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game
spaceCadetPinball.enable = true;
# TTY Solitaire: terminal based solitaire game ttySolitaire.enable = true; # TTY Solitaire: terminal based solitaire game
ttySolitaire.enable = true;
/* /*
Development Tools Development Tools
*/ */
# Exercism: coding practice platform exercism.enable = true; # Exercism: coding practice platform
exercism.enable = true;
# Gedit: GNOME text editor gedit.enable = false; # Gedit: GNOME text editor
gedit.enable = false;
# Lazygit: simple TUI for git lazygit.enable = false; # Lazygit: simple TUI for git
lazygit.enable = false;
# OpenCode: tools for coding and development opencode.enable = true; # OpenCode: tools for coding and development
opencode.enable = true;
jan.enable = true; # Jan: AI chat UI
/* /*
Communication & Collaboration Communication & Collaboration
*/ */
# Mattermost: open-source Slack alternative mattermost.enable = true; # Mattermost: open-source Slack alternative
mattermost.enable = true;
# Slack: team communication and collaboration tool slack.enable = true; # Slack: team communication and collaboration tool
slack.enable = true;
# Tutanota: secure email client tutanota.enable = true; # Tutanota: secure email client
tutanota.enable = true;
/* /*
Productivity / Knowledge Management Productivity / Knowledge Management
*/ */
# Bitwarden: password manager (desktop) bitwarden.enable = false; # Bitwarden: password manager (desktop)
bitwarden.enable = false;
# Iotas: lightweight notes manager iotas.enable = true; # Iotas: lightweight notes manager
iotas.enable = true;
# Logseq: knowledge base and outliner logseq.enable = false; # Logseq: knowledge base and outliner
logseq.enable = false;
/* /*
Media & Graphics Media & Graphics
*/ */
# Affinity: professional graphics suite affinity.enable = false; # Affinity: professional graphics suite
affinity.enable = false;
# Eye of GNOME: image viewer eyeOfGnome.enable = true; # Eye of GNOME: image viewer
eyeOfGnome.enable = true;
# FreeTube: privacyfriendly YouTube client freetube.enable = false; # FreeTube: privacyfriendly YouTube client
freetube.enable = false;
# GIMP: gnu image manipulation program gimp.enable = false; # GIMP: gnu image manipulation program
gimp.enable = false;
# Kdenlive: video editing software kdenlive.enable = false; # Kdenlive: video editing software
kdenlive.enable = false;
# Plex: media player and server client plex.enable = true; # Plex: media player and server client
plex.enable = true;
/* /*
Utilities / Misc Utilities / Misc
*/ */
# Eddie AirVPN: VPN client eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
eddieAirVPN.enable = true;
# Galculator: simple calculator galculator.enable = true; # Galculator: simple calculator
galculator.enable = true;
# Winboat: Windows remote desktop via RDP winboat.enable = false; # Winboat: Windows remote desktop via RDP
winboat.enable = false;
} }

View File

@@ -2,65 +2,55 @@ _: {
/* /*
Development editors and IDEs Development editors and IDEs
*/ */
# VSCodium: a free and open-source "demicrosofted" VSCode vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
vscodium.enable = false;
# Zed Editor: a modern, highperformance code editor
zed-editor = { zed-editor = {
# Enable Zed Editor enable = true; # Zed Editor: a modern, highperformance code editor
enable = true; remote-server = true; # Remote Server: enable remote editing capabilities
# Remote Server: enable remote editing capabilities
remote-server = true;
}; };
/* /*
Web browsers Web browsers
*/ */
# Librewolf: a privacy-focused Firefox fork librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
librewolf.enable = true;
# Ungoogled Chromium: a privacy-focused Chromium fork ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork
ungoogled-chromium.enable = true;
/* /*
System utilities System utilities
*/ */
# Btop: a resource monitor for the terminal btop.enable = true; # Btop: a resource monitor for the terminal
btop.enable = true;
# Cava: terminal audio visualizer cava.enable = false; # Cava: terminal audio visualizer
cava.enable = false;
# Fastfetch: a fast system information tool fastfetch.enable = true; # Fastfetch: a fast system information tool
fastfetch.enable = true;
/* /*
Communication and synchronization Communication and synchronization
*/ */
# KDE Connect: integrate your phone and desktop kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
kdeconnect.enable = false;
# Nextcloud Client: sync files with a Nextcloud server nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server
nextcloud-client.enable = true;
# Vesktop: a communitydriven Discord client vesktop.enable = true; # Vesktop: a communitydriven Discord client
vesktop.enable = true;
/* /*
Gaming Gaming
*/ */
# Lutris: an open gaming platform lutris.enable = false; # Lutris: an open gaming platform
lutris.enable = false;
/* /*
Media recording and streaming Media recording and streaming
*/ */
# OBS Studio: streaming and recording software obs-studio.enable = false; # OBS Studio: streaming and recording software
obs-studio.enable = false;
/* /*
Office suite Office suite
*/ */
# OnlyOffice: an office suite compatible with Microsoft formats onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats
onlyoffice.enable = true;
/* /*
Learning tools Learning tools
*/ */
# Anki: spacedrepetition flashcard program anki.enable = true; # Anki: spacedrepetition flashcard program
anki.enable = true;
} }

View File

@@ -2,86 +2,89 @@ _: {
/* /*
Container & Packaging Container & Packaging
*/ */
# Docker: container runtime and management docker.enable = true; # Docker: container runtime and management
docker.enable = true;
# Distrobox: containerized development environments distrobox.enable = false; # Distrobox: containerized development environments
distrobox.enable = false;
# Flatpak: universal packaging system for Linux flatpak = {
flatpak.enable = true; enable = true; # Flatpak: universal packaging system for Linux
# Lazydocker: simple TUI for Docker
lazydocker.enable = false; packages = {
sober = true; # Enable Roblox Client
warehouse = true; # Enable Flatpak manager
flatseal = true; # Enable Flatpak permissions manager
};
};
lazydocker.enable = false; # Lazydocker: simple TUI for Docker
/* /*
Gaming Gaming
*/ */
# GameMode: optimizes system performance for gaming gamemode.enable = true; # GameMode: optimizes system performance for gaming
gamemode.enable = true;
# Gamescope: micro-compositor for games gamescope.enable = false; # Gamescope: micro-compositor for games
gamescope.enable = false;
# Prism Launcher: Minecraft modded launcher prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher
prismlauncher.enable = false;
# Steam: platform for buying and playing games steam.enable = true; # Steam: platform for buying and playing games
steam.enable = true;
# SpaceCadet Pinball: classic pinball game spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game
spaceCadetPinball.enable = true;
# TTY Solitaire: terminal based solitaire game ttySolitaire.enable = true; # TTY Solitaire: terminal based solitaire game
ttySolitaire.enable = true;
/* /*
Development Tools Development Tools
*/ */
# Exercism: coding practice platform exercism.enable = true; # Exercism: coding practice platform
exercism.enable = true;
# Gedit: GNOME text editor gedit.enable = false; # Gedit: GNOME text editor
gedit.enable = false;
# Lazygit: simple TUI for git lazygit.enable = false; # Lazygit: simple TUI for git
lazygit.enable = false;
# OpenCode: tools for coding and development opencode.enable = true; # OpenCode: tools for coding and development
opencode.enable = true;
jan.enable = true; # Jan: AI chat UI
/* /*
Communication & Collaboration Communication & Collaboration
*/ */
# Mattermost: open-source Slack alternative mattermost.enable = true; # Mattermost: open-source Slack alternative
mattermost.enable = true;
# Slack: team communication and collaboration tool slack.enable = true; # Slack: team communication and collaboration tool
slack.enable = true;
# Tutanota: secure email client tutanota.enable = true; # Tutanota: secure email client
tutanota.enable = true;
/* /*
Productivity / Knowledge Management Productivity / Knowledge Management
*/ */
# Bitwarden: password manager (desktop) bitwarden.enable = false; # Bitwarden: password manager (desktop)
bitwarden.enable = false;
# Iotas: lightweight notes manager iotas.enable = true; # Iotas: lightweight notes manager
iotas.enable = true;
# Logseq: knowledge base and outliner logseq.enable = false; # Logseq: knowledge base and outliner
logseq.enable = false;
/* /*
Media & Graphics Media & Graphics
*/ */
# Affinity: professional graphics suite affinity.enable = false; # Affinity: professional graphics suite
affinity.enable = false;
# Eye of GNOME: image viewer eyeOfGnome.enable = true; # Eye of GNOME: image viewer
eyeOfGnome.enable = true;
# FreeTube: privacyfriendly YouTube client freetube.enable = false; # FreeTube: privacyfriendly YouTube client
freetube.enable = false;
# GIMP: gnu image manipulation program gimp.enable = false; # GIMP: gnu image manipulation program
gimp.enable = false;
# Kdenlive: video editing software kdenlive.enable = false; # Kdenlive: video editing software
kdenlive.enable = false;
# Plex: media player and server client plex.enable = true; # Plex: media player and server client
plex.enable = true;
/* /*
Utilities / Misc Utilities / Misc
*/ */
# Eddie AirVPN: VPN client eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
eddieAirVPN.enable = true;
# Galculator: simple calculator galculator.enable = true; # Galculator: simple calculator
galculator.enable = true;
# Winboat: Windows remote desktop via RDP winboat.enable = false; # Winboat: Windows remote desktop via RDP
winboat.enable = false;
} }

View File

@@ -2,65 +2,55 @@ _: {
/* /*
Development editors and IDEs Development editors and IDEs
*/ */
# VSCodium: a free and open-source "demicrosofted" VSCode vscodium.enable = false; # VSCodium: a free and open-source "demicrosofted" VSCode
vscodium.enable = false;
# Zed Editor: a modern, highperformance code editor
zed-editor = { zed-editor = {
# Enable Zed Editor enable = true; # Zed Editor: a modern, highperformance code editor
enable = true; remote-server = true; # Remote Server: enable remote editing capabilities
# Remote Server: enable remote editing capabilities
remote-server = true;
}; };
/* /*
Web browsers Web browsers
*/ */
# Librewolf: a privacy-focused Firefox fork librewolf.enable = true; # Librewolf: a privacy-focused Firefox fork
librewolf.enable = true;
# Ungoogled Chromium: a privacy-focused Chromium fork ungoogled-chromium.enable = true; # Ungoogled Chromium: a privacy-focused Chromium fork
ungoogled-chromium.enable = true;
/* /*
System utilities System utilities
*/ */
# Btop: a resource monitor for the terminal btop.enable = true; # Btop: a resource monitor for the terminal
btop.enable = true;
# Cava: terminal audio visualizer cava.enable = false; # Cava: terminal audio visualizer
cava.enable = false;
# Fastfetch: a fast system information tool fastfetch.enable = true; # Fastfetch: a fast system information tool
fastfetch.enable = true;
/* /*
Communication and synchronization Communication and synchronization
*/ */
# KDE Connect: integrate your phone and desktop kdeconnect.enable = false; # KDE Connect: integrate your phone and desktop
kdeconnect.enable = false;
# Nextcloud Client: sync files with a Nextcloud server nextcloud-client.enable = true; # Nextcloud Client: sync files with a Nextcloud server
nextcloud-client.enable = true;
# Vesktop: a communitydriven Discord client vesktop.enable = true; # Vesktop: a communitydriven Discord client
vesktop.enable = true;
/* /*
Gaming Gaming
*/ */
# Lutris: an open gaming platform lutris.enable = false; # Lutris: an open gaming platform
lutris.enable = false;
/* /*
Media recording and streaming Media recording and streaming
*/ */
# OBS Studio: streaming and recording software obs-studio.enable = false; # OBS Studio: streaming and recording software
obs-studio.enable = false;
/* /*
Office suite Office suite
*/ */
# OnlyOffice: an office suite compatible with Microsoft formats onlyoffice.enable = true; # OnlyOffice: an office suite compatible with Microsoft formats
onlyoffice.enable = true;
/* /*
Learning tools Learning tools
*/ */
# Anki: spacedrepetition flashcard program anki.enable = true; # Anki: spacedrepetition flashcard program
anki.enable = true;
} }

View File

@@ -2,86 +2,89 @@ _: {
/* /*
Container & Packaging Container & Packaging
*/ */
# Docker: container runtime and management docker.enable = true; # Docker: container runtime and management
docker.enable = true;
# Distrobox: containerized development environments distrobox.enable = false; # Distrobox: containerized development environments
distrobox.enable = false;
# Flatpak: universal packaging system for Linux flatpak = {
flatpak.enable = true; enable = true; # Flatpak: universal packaging system for Linux
# Lazydocker: simple TUI for Docker
lazydocker.enable = false; packages = {
sober = true; # Enable Roblox Client
warehouse = true; # Enable Flatpak manager
flatseal = true; # Enable Flatpak permissions manager
};
};
lazydocker.enable = false; # Lazydocker: simple TUI for Docker
/* /*
Gaming Gaming
*/ */
# GameMode: optimizes system performance for gaming gamemode.enable = true; # GameMode: optimizes system performance for gaming
gamemode.enable = true;
# Gamescope: micro-compositor for games gamescope.enable = false; # Gamescope: micro-compositor for games
gamescope.enable = false;
# Prism Launcher: Minecraft modded launcher prismlauncher.enable = false; # Prism Launcher: Minecraft modded launcher
prismlauncher.enable = false;
# Steam: platform for buying and playing games steam.enable = true; # Steam: platform for buying and playing games
steam.enable = true;
# SpaceCadet Pinball: classic pinball game spaceCadetPinball.enable = true; # SpaceCadet Pinball: classic pinball game
spaceCadetPinball.enable = true;
# TTY Solitaire: terminal based solitaire game ttySolitaire.enable = true; # TTY Solitaire: terminal based solitaire game
ttySolitaire.enable = true;
/* /*
Development Tools Development Tools
*/ */
# Exercism: coding practice platform exercism.enable = true; # Exercism: coding practice platform
exercism.enable = true;
# Gedit: GNOME text editor gedit.enable = false; # Gedit: GNOME text editor
gedit.enable = false;
# Lazygit: simple TUI for git lazygit.enable = false; # Lazygit: simple TUI for git
lazygit.enable = false;
# OpenCode: tools for coding and development opencode.enable = true; # OpenCode: tools for coding and development
opencode.enable = true;
jan.enable = true; # Jan: AI chat UI
/* /*
Communication & Collaboration Communication & Collaboration
*/ */
# Mattermost: open-source Slack alternative mattermost.enable = true; # Mattermost: open-source Slack alternative
mattermost.enable = true;
# Slack: team communication and collaboration tool slack.enable = true; # Slack: team communication and collaboration tool
slack.enable = true;
# Tutanota: secure email client tutanota.enable = true; # Tutanota: secure email client
tutanota.enable = true;
/* /*
Productivity / Knowledge Management Productivity / Knowledge Management
*/ */
# Bitwarden: password manager (desktop) bitwarden.enable = false; # Bitwarden: password manager (desktop)
bitwarden.enable = false;
# Iotas: lightweight notes manager iotas.enable = true; # Iotas: lightweight notes manager
iotas.enable = true;
# Logseq: knowledge base and outliner logseq.enable = false; # Logseq: knowledge base and outliner
logseq.enable = false;
/* /*
Media & Graphics Media & Graphics
*/ */
# Affinity: professional graphics suite affinity.enable = false; # Affinity: professional graphics suite
affinity.enable = false;
# Eye of GNOME: image viewer eyeOfGnome.enable = true; # Eye of GNOME: image viewer
eyeOfGnome.enable = true;
# FreeTube: privacyfriendly YouTube client freetube.enable = false; # FreeTube: privacyfriendly YouTube client
freetube.enable = false;
# GIMP: gnu image manipulation program gimp.enable = false; # GIMP: gnu image manipulation program
gimp.enable = false;
# Kdenlive: video editing software kdenlive.enable = false; # Kdenlive: video editing software
kdenlive.enable = false;
# Plex: media player and server client plex.enable = true; # Plex: media player and server client
plex.enable = true;
/* /*
Utilities / Misc Utilities / Misc
*/ */
# Eddie AirVPN: VPN client eddieAirVPN.enable = true; # Eddie AirVPN: VPN client
eddieAirVPN.enable = true;
# Galculator: simple calculator galculator.enable = true; # Galculator: simple calculator
galculator.enable = true;
# Winboat: Windows remote desktop via RDP winboat.enable = false; # Winboat: Windows remote desktop via RDP
winboat.enable = false;
} }

View File

@@ -2,16 +2,27 @@
lib, lib,
config, config,
... ...
}: { }: let
mkFlatpakPackage = name: pkgId: {
options.flatpak.packages.${name} = lib.mkEnableOption "Flatpak: ${name}";
config.services.flatpak.packages =
lib.mkIf config.flatpak.packages.${name} [pkgId];
};
flatpakPackages = {
sober = "org.vinegarhq.Sober";
warehouse = "io.github.flattool.Warehouse";
flatseal = "com.github.tchx84.Flatseal";
};
in {
options.flatpak.enable = lib.mkEnableOption "Flatpak"; options.flatpak.enable = lib.mkEnableOption "Flatpak";
config.services.flatpak = lib.mkIf config.flatpak.enable { config.services.flatpak = lib.mkIf config.flatpak.enable {
enable = true; enable = true;
update.onActivation = true; update.onActivation = true;
packages = [ packages = [];
# "org.vinegarhq.Sober"
"io.github.flattool.Warehouse"
"com.github.tchx84.Flatseal"
];
}; };
imports = builtins.attrValues (builtins.mapAttrs mkFlatpakPackage flatpakPackages);
} }

View File

@@ -25,6 +25,7 @@
tutanota = tutanota-desktop; tutanota = tutanota-desktop;
exercism = exercism; exercism = exercism;
opencode = opencode; opencode = opencode;
jan = jan;
lazygit = lazygit; lazygit = lazygit;
prismlauncher = inputs.prismlauncher-cracked.packages.${system}.default; prismlauncher = inputs.prismlauncher-cracked.packages.${system}.default;
spaceCadetPinball = space-cadet-pinball; spaceCadetPinball = space-cadet-pinball;

View File

@@ -17,6 +17,7 @@ in {
"$modifier, D, exec, vesktop" "$modifier, D, exec, vesktop"
"$modifier, G, exec, affinity-v3" "$modifier, G, exec, affinity-v3"
"$modifier, I, exec, iotas" "$modifier, I, exec, iotas"
"$modifier, J, exec, Jan"
"$modifier, L, exec, logseq" "$modifier, L, exec, logseq"
"$modifier, M, exec, plexamp" "$modifier, M, exec, plexamp"
"$modifier, N, exec, dex ${desktopEntriesPath}/garandcloud.desktop" "$modifier, N, exec, dex ${desktopEntriesPath}/garandcloud.desktop"

View File

@@ -75,13 +75,7 @@
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
urls = [ urls = [
{ {
template = "https://search.nixos.org/options"; template = "https://search.nixos.org/options?channel=unstable&query={searchTerms}";
params = [
{
name = "query";
value = "{searchTerms}";
}
];
} }
]; ];
}; };