mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-01-31 16:57:55 +00:00
Gabriel Arazas
3cafa9f613
It's practically enabled every time so why not set them as profiles instead. The structure should be enough for some control over what is enabled.
146 lines
4.1 KiB
Nix
146 lines
4.1 KiB
Nix
# This is where extra desktop goodies can be found.
|
|
# As a note, this is not where you set the aesthetics of your graphical sessions.
|
|
# That can be found in the `themes` module.
|
|
{ config, lib, pkgs, options, ... }:
|
|
|
|
let cfg = config.suites.desktop;
|
|
in {
|
|
options.suites.desktop = {
|
|
enable =
|
|
lib.mkEnableOption "basic desktop-related services and default programs";
|
|
cleanup.enable = lib.mkEnableOption "activation of various cleanup services";
|
|
autoUpgrade.enable = lib.mkEnableOption "auto-upgrade service with this system";
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
|
({
|
|
# Enable Flatpak for additional options for installing desktop applications.
|
|
services.flatpak.enable = true;
|
|
xdg.portal.enable = true;
|
|
|
|
environment.etc =
|
|
let
|
|
urls = {
|
|
"flathub" = {
|
|
url = "https://flathub.org/repo/flathub.flatpakrepo";
|
|
hash = "sha256-M3HdJQ5h2eFjNjAHP+/aFTzUQm9y9K+gwzc64uj+oDo=";
|
|
};
|
|
"flathub-beta" = {
|
|
url = "https://flathub.org/beta-repo/flathub-beta.flatpakrepo";
|
|
hash = "sha256-WCyuPJ+dRjnwJ976/m+jO9oKOk1EEpDZJq2For4PcgY=";
|
|
};
|
|
"gnome-nightly" = {
|
|
url = "https://nightly.gnome.org/gnome-nightly.flatpakrepo";
|
|
hash = "sha256-rFluVpCvgs1iy7YKVnkPh3p6YuF4orbVuOhLUUFRyYM=";
|
|
};
|
|
"kdeapps" = {
|
|
url = "https://distribute.kde.org/kdeapps.flatpakrepo";
|
|
hash = "sha256-dCF9QQYMmqMuzwAS+HYoPAAtwfzO7aVCl8s4RwhneqI=";
|
|
};
|
|
};
|
|
in
|
|
lib.mapAttrs'
|
|
(name: remote:
|
|
lib.nameValuePair
|
|
"flatpak/remotes.d/${name}.flatpakrepo"
|
|
{ source = pkgs.fetchurl remote; })
|
|
urls;
|
|
|
|
programs.extra-container.enable = true;
|
|
|
|
# Enable font-related options for more smoother and consistent experience.
|
|
fonts.fontconfig.enable = true;
|
|
|
|
# Run unpatched binaries with these!
|
|
programs.nix-ld = {
|
|
enable = true;
|
|
libraries =
|
|
let
|
|
xorgLibs = with pkgs.xorg; [
|
|
libX11
|
|
libXScrnSaver
|
|
libXcomposite
|
|
libXcursor
|
|
libXdamage
|
|
libXext
|
|
libXfixes
|
|
libXi
|
|
libXrandr
|
|
libXrender
|
|
libXtst
|
|
libxcb
|
|
libxkbfile
|
|
libxshmfence
|
|
];
|
|
commonLibs = with pkgs; [
|
|
alsa-lib
|
|
cairo
|
|
freetype
|
|
dbus
|
|
icu
|
|
libGL
|
|
libnotify
|
|
mesa
|
|
nss
|
|
pango
|
|
pipewire
|
|
];
|
|
in
|
|
commonLibs ++ xorgLibs ++ options.programs.nix-ld.libraries.default;
|
|
};
|
|
|
|
environment.systemPackages = with pkgs; [
|
|
steam-run # For the heathens that still uses FHS.
|
|
];
|
|
|
|
# Enable running GNOME apps outside GNOME.
|
|
programs.dconf.enable = true;
|
|
|
|
# Enable virtual camera.
|
|
boot.kernelModules = [ "v4l2loopback" ];
|
|
})
|
|
|
|
(lib.mkIf cfg.cleanup.enable {
|
|
# Weekly garbage collection of Nix store.
|
|
nix.gc = {
|
|
automatic = true;
|
|
persistent = true;
|
|
dates = "weekly";
|
|
options = "--delete-older-than 7d";
|
|
};
|
|
|
|
# Run the optimizer.
|
|
nix.optimise = {
|
|
automatic = true;
|
|
dates = [ "weekly" ];
|
|
};
|
|
|
|
# Journal settings for retention.
|
|
services.journald.extraConfig = ''
|
|
MaxRetentionSec="3 month"
|
|
'';
|
|
})
|
|
|
|
(lib.mkIf cfg.autoUpgrade.enable {
|
|
system.autoUpgrade = {
|
|
enable = true;
|
|
flake = "github:foo-dogsquared/nixos-config";
|
|
allowReboot = true;
|
|
persistent = true;
|
|
rebootWindow = {
|
|
lower = "22:00";
|
|
upper = "00:00";
|
|
};
|
|
dates = "weekly";
|
|
flags = [
|
|
"--update-input"
|
|
"nixpkgs"
|
|
"--commit-lock-file"
|
|
"--no-write-lock-file"
|
|
];
|
|
randomizedDelaySec = "1min";
|
|
};
|
|
})
|
|
]);
|
|
}
|