saturnOS-template/default.nix

70 lines
2.1 KiB
Nix

# this is the main config which adds saturnOS components to the system
# everything in this file *should* be portable accross all devices
# portability failures in this file are a bug and should be reported
# this file will be used as is by the config script
# the script will pull updates from this file occasionally
{ config, pkgs, lib, ... }:
{
imports = [
./modules # modules are used to add functionality currently not in base nixos, such as pretty hostnames
# these features may be upstreamed at some point
./system # system is for configuration relevant specifically
# to the system it's running on and not in base saturn
];
# nix options
nix.settings = {
experimental-features = "nix-command flakes"; # enables "nix ___" support
auto-optimise-store = true; # will attempt to reduce size from soft-links
};
nix.gc = {
automatic = true; # enables garbage collection
dates = "weekly"; # runs weekly
options = "--delete-older-than 30d"; # all packages / downloaded derivations older than 30d are deleted
};
# enable gnome
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
# enable dconf configuration for gnome and other supported applications
programs.dconf.enable = true;
# configure pipewire
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
};
# install packages to the base saturn system
nixpkgs.config.allowUnfree = true;
environment.systemPackages = with pkgs; [
];
# set fish as default shell for all users
users.defaultUserShell = pkgs.fish;
# suid wrapper ( for things which need privelidged acccess, or additional configuration )
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
pinentryFlavor = "gnome3";
};
programs.fish.enable = true;
# enable / configure services
services.printing.enable = true; # printing
services.openssh.enable = true; # remote shell
services.flatpak.enable = true; # enables flatpak
}