configuration.nix/system/default.nix

112 lines
2.6 KiB
Nix
Raw Normal View History

{ stylix }:
{
config,
pkgs,
lib,
...
}:
let
2024-01-14 17:33:16 +01:00
cfg = config.jconfig;
keysFromGithub = lib.attrsets.mapAttrs' (username: sha256: {
name = "pubkeys/${username}";
value = {
mode = "0755";
source = builtins.fetchurl {
inherit sha256;
url = "https://github.com/${username}.keys";
};
};
}) cfg.importSSHKeysFromGithub;
in
{
imports = [
./options.nix
./gui
stylix.nixosModules.stylix
{ stylix = import ./stylix-config.nix { inherit config pkgs; }; }
];
2024-01-14 17:33:16 +01:00
config = lib.mkIf cfg.enable {
2024-01-14 17:33:16 +01:00
boot.plymouth.enable = cfg.styling.enable;
# Enable unlocking the gpg-agent at boot (configured through home.nix)
security.pam.services.login.gnupg.enable = true;
environment.systemPackages = [
# CLI tools
pkgs.fd
pkgs.bat
pkgs.skim
pkgs.ripgrep
pkgs.du-dust
pkgs.curl
pkgs.wget
pkgs.eza
pkgs.zip
pkgs.unzip
2024-01-14 17:33:16 +01:00
];
# Enable dev documentation
documentation.dev.enable = cfg.dev.enable;
2024-05-17 18:50:01 +02:00
programs = {
# Shell prompt
starship = {
enable = true;
settings = lib.mkIf cfg.styling.enable {
format = "$time$all";
add_newline = false;
cmd_duration.min_time = 500;
cmd_duration.show_milliseconds = true;
time = {
format = "[$time](bold yellow) ";
disabled = false;
};
status = {
format = "[$signal_name$common_meaning$maybe_int](red)";
symbol = "[](bold red)";
disabled = false;
};
sudo.disabled = false;
};
};
# Default shell
zsh.enable = true;
2024-01-14 17:33:16 +01:00
};
environment.etc = keysFromGithub;
services.openssh.authorizedKeysFiles = builtins.map (path: "/etc/${path}") (
builtins.attrNames keysFromGithub
);
# Enable printer autodiscovery if printing is enabled
services.avahi = {
2024-05-17 18:50:01 +02:00
inherit (config.services.printing) enable;
nssmdns4 = true;
openFirewall = true;
};
2024-01-14 17:33:16 +01:00
users.defaultUserShell = pkgs.zsh;
# Open ports for spotifyd
2024-05-17 18:50:01 +02:00
networking.firewall = {
allowedUDPPorts = [ 5353 ];
allowedTCPPorts = [ 2020 ];
2024-05-17 18:50:01 +02:00
};
2024-01-14 17:33:16 +01:00
# Nix Settings
2024-05-17 18:50:01 +02:00
nix = {
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
# run between 0 and 45min after boot if run was missed
randomizedDelaySec = "45min";
};
settings = {
auto-optimise-store = true;
experimental-features = [
"nix-command"
"flakes"
];
};
};
2024-01-14 17:33:16 +01:00
};
}