summaryrefslogtreecommitdiff
path: root/archetypes/profiles
diff options
context:
space:
mode:
Diffstat (limited to 'archetypes/profiles')
-rw-r--r--archetypes/profiles/desktop/default.nix141
-rw-r--r--archetypes/profiles/desktop/resources/fontconfig/90-commit-mono-options.conf17
-rw-r--r--archetypes/profiles/desktop/resources/fontconfig/90-tamzen-disable-anti-aliasing.conf14
-rw-r--r--archetypes/profiles/headless/default.nix33
-rw-r--r--archetypes/profiles/pi/default.nix31
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) ];
+}