diff options
Diffstat (limited to 'archetypes/profiles')
5 files changed, 236 insertions, 0 deletions
diff --git a/archetypes/profiles/desktop/default.nix b/archetypes/profiles/desktop/default.nix new file mode 100644 index 0000000..6c5d509 --- /dev/null +++ b/archetypes/profiles/desktop/default.nix @@ -0,0 +1,141 @@ +{ lib, pkgs, ... }: let + mkDesktop = lib.mkOverride 920; + + nixosConfig = { + _archetypes.collections = { + desktop = { + utilities.enable = mkDesktop true; + thumbnailers.enable = mkDesktop true; + firefox.enable = mkDesktop true; + xserver = { + enable = mkDesktop true; + utilities.enable = mkDesktop true; + }; + }; + development = { + utilities.enable = mkDesktop true; + }; + fonts.enable = mkDesktop true; + }; + + security = { + _doas.enable = mkDesktop true; + _polkit = { + enable = mkDesktop true; + gnome.enable = mkDesktop true; + allowUserPowerControls = mkDesktop true; + }; + }; + + programs = { + _ddcutil.enable = mkDesktop true; + _home-manager.enable = mkDesktop true; + }; + + services = { + xserver = { + windowManager._awesome.enable = mkDesktop true; + enableTearFree = mkDesktop true; + }; + _geoclue2.enable = mkDesktop true; + _pipewire.enable = mkDesktop true; + _printing.enable = mkDesktop true; + _ssh.enable = mkDesktop true; + tlp.enable = mkDesktop true; + + # Ensure video group can change backlight + udev.extraRules = mkDesktop '' + SUBSYSTEM=="backlight", ACTION=="add", RUN+="${pkgs.coreutils}/bin/chgrp video /sys/class/backlight/%k/brightness", RUN+="${pkgs.coreutils}/bin/chmod g+w /sys/class/backlight/%k/brightness" + ''; + }; + }; + + homeConfig = { + gtk = { + enable = mkDesktop true; + _mintTheme.enable = mkDesktop true; + font.name = mkDesktop "sans-serif"; + cursorTheme.name = mkDesktop "Adwaita"; + }; + + qt._gtkPlatformTheme.enable = mkDesktop true; + + fonts.fontconfig = { + enable = mkDesktop true; + defaultFonts = { + # These fonts are added above in fonts collection + sansSerif = mkDesktop [ "Inter" ]; + monospace = mkDesktop [ "CommitMono" ]; + }; + configFile = { + tamzen-disable-anti-aliasing = { + enable = true; + source = ./resources/fontconfig/90-tamzen-disable-anti-aliasing.conf; + }; + commit-mono-options = { + enable = true; + source = ./resources/fontconfig/90-commit-mono-options.conf; + }; + }; + }; + + programs = { + _pcmanfm.openAsRootOption.enable = mkDesktop true; + _st = { + enable = mkDesktop true; + font = { + name = mkDesktop "JetBrainsMonoNL Nerd Font Mono"; + # Default attrs + attrs = { + size = 12; + antialias = true; + autohint = true; + }; + }; + }; + firefox._configure = mkDesktop true; + htop._configure = mkDesktop true; + zathura = { + enable = mkDesktop true; + options = { + selection-clipboard = mkDesktop "clipboard"; # Copy highlighted text + }; + }; + }; + + services = { + _redshift.enable = true; + #polkit-gnome.enable = mkDesktop true; # Doesn't work on X + }; + + home._repos = { + enable = mkDesktop true; + desktop = mkDesktop true; + }; + + xdg = { + autostart = { + enable = mkDesktop true; + entries = mkDesktop [ + "${pkgs.redshift}/share/applications/redshift-gtk.desktop" + "${pkgs.unclutter-desktop-entry}/share/applications/unclutter.desktop" + ]; + }; + }; + + xdg.mimeApps._defaultCategoryApplications = { + enable = true; + categoryApplications = { + audio = [ "mpv" ]; + directory = [ "pcmanfm" ]; + email = [ "thunderbird" ]; + image = [ "nsxiv" ]; + pdf = [ "org.pwmt.zathura-pdf-mupdf" ]; + text = [ "nvim" ]; + video = [ "mpv" ]; + }; + }; + }; +in { + imports = [ (lib._mkProfileArchetype "desktop" nixosConfig homeConfig) ]; +} diff --git a/archetypes/profiles/desktop/resources/fontconfig/90-commit-mono-options.conf b/archetypes/profiles/desktop/resources/fontconfig/90-commit-mono-options.conf new file mode 100644 index 0000000..9c7373a --- /dev/null +++ b/archetypes/profiles/desktop/resources/fontconfig/90-commit-mono-options.conf @@ -0,0 +1,17 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> + +<fontconfig> + <description>Enable opentype features for CommitMono to make it match better with Inter as its monospace counterpart</description> + <match target="font"> + <test name="family" compare="eq" ignore-blanks="true"> + <string>CommitMono</string> + </test> + <edit name="fontfeatures" mode="append"> + <string>ss03 on</string> <!-- smart case --> + <string>ss04 on</string> <!-- symbol spacing --> + <string>cv02 on</string> <!-- alt g --> + <string>cv06 on</string> <!-- alt 6 & 9 --> + </edit> + </match> +</fontconfig> diff --git a/archetypes/profiles/desktop/resources/fontconfig/90-tamzen-disable-anti-aliasing.conf b/archetypes/profiles/desktop/resources/fontconfig/90-tamzen-disable-anti-aliasing.conf new file mode 100644 index 0000000..5bf94d7 --- /dev/null +++ b/archetypes/profiles/desktop/resources/fontconfig/90-tamzen-disable-anti-aliasing.conf @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> + +<fontconfig> + <description>Disable anti-aliasing for Tamzen since it is a bitmap font</description> + <match target="pattern"> + <test name="family" compare="eq" qual="any"> + <string>Tamzen</string> + </test> + <edit name="antialias" mode="assign"> + <bool>false</bool> + </edit> + </match> +</fontconfig> diff --git a/archetypes/profiles/headless/default.nix b/archetypes/profiles/headless/default.nix new file mode 100644 index 0000000..3441aa4 --- /dev/null +++ b/archetypes/profiles/headless/default.nix @@ -0,0 +1,33 @@ +{ lib, ... }: let + mkHeadless = lib.mkOverride 910; + + nixosConfig = { + _archetypes.collections = { + development = { + utilities.enable = mkHeadless true; + }; + }; + + security = { + _doas.enable = mkHeadless true; + }; + + programs = { + _ddcutil.enable = mkHeadless true; + }; + + services = { + _ssh.enable = mkHeadless true; + }; + }; + + homeConfig = { + # Disable fontconfig features explicitly to avoid warnings + fonts.fontconfig = { + subpixelRendering = mkHeadless "none"; + hinting = mkHeadless "none"; + }; + }; +in { + imports = [ (lib._mkProfileArchetype "headless" nixosConfig homeConfig) ]; +} diff --git a/archetypes/profiles/pi/default.nix b/archetypes/profiles/pi/default.nix new file mode 100644 index 0000000..8ea33e4 --- /dev/null +++ b/archetypes/profiles/pi/default.nix @@ -0,0 +1,31 @@ +{ lib, pkgs, ... }: let + mkPi = lib.mkOverride 900; + + nixosConfig = { + # Use the extlinux boot loader. (NixOS wants to enable GRUB by default) + boot.loader.grub.enable = false; + # Enables the generation of /boot/extlinux/extlinux.conf + boot.loader.generic-extlinux-compatible.enable = true; + }; + + homeConfig = { + # Use raspian logo in fastfetch + programs.fastfetch = { + enable = mkPi true; + settings = { + logo.source = mkPi "raspbian"; + # Default options for the rest of this + # TODO figure out how to just override logo and keep defaults w/config file + modules = [ + "title" "separator" "os" "host" "kernel" "uptime" + "packages" "shell" "display" "de" "wm" "wmtheme" "theme" + "icons" "font" "cursor" "terminal" "terminalfont" "cpu" + "gpu" "memory" "swap" "disk" "localip" "battery" + "poweradapter" "locale" "break" "colors" + ]; + }; + }; + }; +in { + imports = [ (lib._mkProfileArchetype "pi" nixosConfig homeConfig) ]; +} |
