139 lines
3.9 KiB
Nix
139 lines
3.9 KiB
Nix
{
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
onlyoffice-with-fonts = pkgs.buildFHSEnv {
|
|
name = "onlyoffice-desktopeditors";
|
|
targetPkgs =
|
|
pkgs': with pkgs'; [
|
|
onlyoffice-desktopeditors
|
|
corefonts
|
|
vista-fonts
|
|
fira-code
|
|
fira-code-symbols
|
|
nerd-fonts.fira-code
|
|
dejavu_fonts
|
|
liberation_ttf
|
|
];
|
|
runScript = "onlyoffice-desktopeditors";
|
|
extraInstallCommands = ''
|
|
mkdir -p $out/share/applications
|
|
cp -r ${pkgs.onlyoffice-desktopeditors}/share/icons $out/share/
|
|
cp -r ${pkgs.onlyoffice-desktopeditors}/share/applications/* $out/share/applications/
|
|
substituteInPlace $out/share/applications/onlyoffice-desktopeditors.desktop \
|
|
--replace-fail "${pkgs.onlyoffice-desktopeditors}/bin/onlyoffice-desktopeditors" "$out/bin/onlyoffice-desktopeditors"
|
|
'';
|
|
};
|
|
in
|
|
{
|
|
networking.networkmanager.enable = true;
|
|
|
|
hardware.bluetooth.enable = true;
|
|
# Allow the desktop user to pair/connect devices through bluez without root
|
|
# (bluetoothctl's device flows surface the org.bluez.agent polkit action).
|
|
security.polkit.extraConfig = ''
|
|
polkit.addRule(function(action, subject) {
|
|
if (action.id === "org.bluez.agent" && subject.user === "petere")
|
|
return polkit.Result.YES;
|
|
});
|
|
'';
|
|
|
|
# GNOME Keyring: credential store for desktop apps (Nextcloud OAuth tokens,
|
|
# Element session keys, etc.). The PAM module auto-unlocks the keyring at
|
|
# login so apps get seamless access to stored secrets across reboots.
|
|
services.gnome.gnome-keyring.enable = true;
|
|
|
|
services.flatpak = {
|
|
enable = true;
|
|
packages = [
|
|
"it.mijorus.gearlever"
|
|
"com.github.tchx84.Flatseal"
|
|
];
|
|
# Pin Flathub remote explicitly with GPG verification.
|
|
remotes = [
|
|
{
|
|
name = "flathub";
|
|
location = "https://dl.flathub.org/repo/flathub.flatpakrepo";
|
|
}
|
|
];
|
|
};
|
|
|
|
# Weekly Flatpak garbage collection: remove unused runtimes and orphaned refs.
|
|
systemd.services.flatpak-gc = {
|
|
description = "Flatpak garbage collection (remove unused runtimes)";
|
|
wantedBy = [ "multi-user.target" ];
|
|
serviceConfig = {
|
|
Type = "oneshot";
|
|
ExecStart = "${pkgs.flatpak}/bin/flatpak uninstall --unused -y";
|
|
};
|
|
};
|
|
|
|
systemd.timers.flatpak-gc = {
|
|
description = "Run Flatpak garbage collection weekly";
|
|
wantedBy = [ "timers.target" ];
|
|
timerConfig = {
|
|
OnCalendar = "weekly";
|
|
Persistent = true;
|
|
};
|
|
};
|
|
|
|
# Enable CUPS to print documents.
|
|
services.printing.enable = true;
|
|
|
|
# Enable Avahi for network printer discovery.
|
|
services.avahi = {
|
|
enable = true;
|
|
nssmdns4 = true;
|
|
openFirewall = true;
|
|
publish = {
|
|
enable = true;
|
|
addresses = true;
|
|
userServices = true;
|
|
};
|
|
};
|
|
|
|
# avahi requires /run/avahi-daemon to be owned by the avahi user, and
|
|
# restarts during `nixos-rebuild switch` leave a stale pid file that makes
|
|
# the next start fail ("Failed to create PID file: File exists"). Without
|
|
# both fixes avahi-daemon fails on every rebuild, which also breaks
|
|
# `nixos-rebuild switch` (switch-to-configuration exits non-zero).
|
|
systemd.services.avahi-daemon.preStart = "rm -f /run/avahi-daemon/pid";
|
|
systemd.tmpfiles.rules = [
|
|
"d /run/avahi-daemon 0755 avahi avahi -"
|
|
];
|
|
|
|
services.printing.drivers = [
|
|
pkgs.brlaser
|
|
pkgs.brgenml1lpr
|
|
pkgs.brgenml1cupswrapper
|
|
];
|
|
|
|
hardware.printers.ensurePrinters = [
|
|
{
|
|
name = "Brother_MFC_L2710DW";
|
|
deviceUri = "implicitclass://Brother_MFC_L2710DW_series/";
|
|
model = "drv:///brlaser.drv/brl2710w.ppd"; # Let CUPS determine the PPD from installed drivers
|
|
}
|
|
];
|
|
|
|
programs.firefox.enable = true;
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
vim
|
|
git
|
|
wget
|
|
appimage-run
|
|
bitwarden-desktop
|
|
chromium
|
|
vlc
|
|
python3Packages.python-vlc
|
|
stable.element-desktop
|
|
pkgs.kdePackages.kdenlive
|
|
thunderbird
|
|
nextcloud-client
|
|
nautilus-python
|
|
onlyoffice-with-fonts
|
|
];
|
|
}
|