aboutsummaryrefslogtreecommitdiff
path: root/home/rices/schrottkatze/system.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home/rices/schrottkatze/system.nix')
-rw-r--r--home/rices/schrottkatze/system.nix123
1 files changed, 123 insertions, 0 deletions
diff --git a/home/rices/schrottkatze/system.nix b/home/rices/schrottkatze/system.nix
new file mode 100644
index 0000000..13e1516
--- /dev/null
+++ b/home/rices/schrottkatze/system.nix
@@ -0,0 +1,123 @@
+{
+ pkgs,
+ lib,
+ ...
+}: {
+ # Desktop environment - Niri compositor
+ programs.niri.enable = true;
+
+ # Default session
+ services.displayManager.defaultSession = "niri";
+
+ services.xserver.xkb = {
+ layout = "cz";
+ options = "eurosign:e,caps:escape";
+ };
+ # Polkit fix for Niri
+ security.polkit.enable = true;
+ systemd.user.services.niri-flake-polkit.enable = false;
+ systemd.user.services.polkit-gnome-authentication-agent-1 = {
+ description = "polkit-gnome-authentication-agent-1";
+ wantedBy = ["graphical-session.target"];
+ wants = ["graphical-session.target"];
+ after = ["graphical-session.target"];
+ serviceConfig = {
+ Type = "simple";
+ ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
+ Restart = "on-failure";
+ RestartSec = 1;
+ TimeoutStopSec = 10;
+ };
+ };
+
+ # Audio - Pipewire
+ programs.noisetorch.enable = true;
+ services.pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ pulse.enable = true;
+ };
+ environment.systemPackages = with pkgs; [
+ playerctl
+ pulsemixer
+ ];
+
+ # XDG portals
+ xdg.portal.extraPortals = [
+ pkgs.xdg-desktop-portal-cosmic
+ ];
+ xdg.portal.config.common.default = [
+ "gnome"
+ ];
+
+ # Fonts
+ nixpkgs.config.packageOverrides = pkgs: {
+ google-fonts = pkgs.google-fonts.overrideAttrs (oldAttrs: {
+ src = pkgs.fetchFromGitHub {
+ owner = "google";
+ repo = "fonts";
+ rev = "0bd2d5599819aa0774f5ca64c8ac3f54ae3fd54f";
+ sha256 = "sha256-E89GYJKG65Dh7TPI6TVre/4LCxXnxvTAPYS/OPj7nPg=";
+ };
+ installPhase =
+ oldAttrs.installPhase
+ + "mv $out/share/fonts/truetype $out/share/fonts/ttf\n"
+ + "rm $out/share/fonts/ttf/Noto*Emoji*.ttf";
+ });
+ };
+
+ fonts = {
+ packages = with pkgs; [
+ nerd-fonts.fira-code
+ nerd-fonts.departure-mono
+ google-fonts
+ noto-fonts-color-emoji
+ montserrat
+ atkinson-hyperlegible
+ arkpandora_ttf
+ liberation_ttf
+ caladea
+ carlito
+ garamond-libre
+ ocr-a
+ amiri
+ libertine
+ inter
+ b612
+ departure-mono
+ yasashisa-gothic
+ ];
+ fontDir.enable = true;
+ };
+
+ # Stylix configuration - Gruvbox Dark Hard
+ stylix = {
+ enable = true;
+ polarity = "dark";
+ base16Scheme = "${pkgs.base16-schemes}/share/themes/gruvbox-dark-hard.yaml";
+ fonts = {
+ serif = {
+ package = pkgs.libertine;
+ name = "Linux Libertine O";
+ };
+ sansSerif = {
+ package = pkgs.atkinson-hyperlegible;
+ name = "Atkinson Hyperlegible";
+ };
+ monospace = {
+ package = pkgs.nerd-fonts.departure-mono;
+ name = "Departure Mono Nerd Font";
+ };
+ emoji = {
+ package = pkgs.noto-fonts-color-emoji;
+ name = "Noto Color Emoji";
+ };
+ };
+ };
+
+ # Flatpak & misc services
+ services.flatpak.enable = true;
+ services.illum.enable = true;
+ services.upower.enable = true;
+}