Apply all pending changes excluding .sops.yaml

This commit is contained in:
Don Harper 2026-05-05 14:20:58 -05:00
parent 7b04942bb2
commit 89929ac69a
20 changed files with 439 additions and 167 deletions

9
.vscode/settings.json vendored Normal file
View file

@ -0,0 +1,9 @@
{
"chat.tools.terminal.autoApprove": {
"nix": true,
"cp": true,
"mkdir": true,
"git add": true,
"git commit": true
}
}

191
README.md
View file

@ -1,4 +1,193 @@
# NixOS-Configs # NixOS-Configs
My NixOS configs My NixOS system configurations managed with Nix flakes, home-manager, and colmena for multi-host deployment.
## Overview
This repository contains NixOS configurations for multiple hosts including workstations, servers, and Raspberry Pi systems. It uses:
- **Nix Flakes** for reproducible builds and dependency management
- **home-manager** for user environment configuration
- **colmena** for multi-host deployment
- **sops-nix** for secrets management
- **Role-based configuration** for modular host setup
## Host Categories
### Workstations
- `loki` - Framework AMD AI 300 (primary development machine)
- `book` - Google Pixelbook 2017
- `dragon` - Custom workstation
- `ace` - Acer C720
- `eve` - Google Pixelbook 2017 (eMMC)
- `pocket2` - Mobile workstation
- `smaug` - ThinkPad x260
### Servers
- `w1` - Hetzner VPS
- `fred` - Acer server
- `harper` - Server
- `harper2` - Server
- `nuwww` - Web server
- `www2` - Web server
- `pihole` - Pi-hole server
### Raspberry Pi Systems
- `pi1` - Raspberry Pi
- `display` - Pi 4 with kiosk display
### Virtual Machines
- `vm` - Generic VM
- `vm1` - VM configuration
## Quick Start
### Prerequisites
- Nix with flakes enabled
- Age key for secrets decryption (see secrets section)
### Building a Host
```bash
# Test build without installing
just test <hostname>
# Apply configuration to host
just switch <hostname>
# Apply and reboot
just bootswitch <hostname>
```
### Updating
```bash
# Update flake.lock
just update
# Apply updates to all hosts
just world
```
### Available Commands
- `just test <host>` - Build and validate configuration
- `just switch <host>` - Apply configuration
- `just boot <host>` - Apply configuration for next boot
- `just world` - Deploy to all hosts
- `just workstation` - Deploy to workstation hosts
- `just server` - Deploy to server hosts
- `just web` - Deploy to web hosts
- `just clean <host>` - Clean old generations and optimize store
- `just update` - Update flake.lock
- `just format` - Format Nix code
## Configuration Structure
### Host Configuration
Each host in `hosts/<hostname>/` follows this pattern:
```nix
{
imports = [ ../templates/workstation.nix ]; # Base template
networking.hostName = "hostname";
variables.address = "100.72.x.x"; # Tailscale IP
roles = {
gui.enable = true;
games.enable = true;
wm = "sway";
};
}
```
### Roles
Hosts are configured using role-based modules:
- `gui` - Graphical user interface packages
- `games` - Gaming packages and Steam
- `citrix` - Citrix Workspace client
- `zoom` - Zoom client
- `kvm` - Virtualization support
- `kmscon` - Console improvements
- `auto-cpufreq` - CPU power management
### Window Managers
- `sway` - Wayland compositor (default for workstations)
- `gnome` - GNOME desktop environment
### Home Manager
User configurations are managed separately:
- `home/common/` - Common packages and settings for all users
- `home/gui/` - GUI-specific user configuration
- `home/work/` - Work-related packages and settings
## Secrets Management
Secrets are encrypted using sops-nix with Age keys.
### Setup
1. Generate Age key pair:
```bash
nix run nixpkgs#age -- -generate-keypair
```
2. Add public key to `.sops.yaml`:
```yaml
keys:
- &host_<name> <public_key>
creation_rules:
- path_regex: secrets.yaml$
key_groups:
- age:
- *host_<name>
```
3. Encrypt secrets:
```bash
sops --encrypt secrets.yaml > secrets.yaml.enc
```
### Usage in Configuration
```nix
# In host configuration
sops.secrets."service/password".path
```
## Development
### Adding a New Host
1. Create `hosts/<hostname>/default.nix`
2. Add hardware configuration if needed
3. Import appropriate template (`workstation.nix`, `server.nix`, etc.)
4. Configure roles and variables
5. Add to `flake.nix` outputs
6. Test with `just test <hostname>`
### Template Types
- `hosts/templates/workstation.nix` - Full desktop/workstation
- `hosts/templates/server.nix` - Server configuration
- `hosts/templates/pi-server.nix` - Raspberry Pi server
### Code Quality
- Format code: `just format`
- Check configuration: `nix flake check`
- Validate secrets: Ensure `.sops.yaml` has correct public keys
## Troubleshooting
### Common Issues
- **Build fails**: Check `nix flake show` for syntax errors
- **Secrets not found**: Verify Age key is in `~/.config/sops/age/keys.txt`
- **Network issues**: Check Tailscale connectivity
- **Home manager conflicts**: Remove backup files: `locate home-manager-backup | xargs rm`
### Logs
Build logs are saved to `nixos-switch.log`. Check this file for detailed error information.
## Contributing
1. Test changes on a single host first
2. Update documentation for new features
3. Clean up FIXME/DELME comments
4. Format code before committing

122
flake.nix
View file

@ -39,17 +39,34 @@
... ...
}: let }: let
inherit (self) outputs; inherit (self) outputs;
lib = nixpkgs.lib // home-manager.lib; nixpkgsPkg = import inputs.nixpkgs {
system = "x86_64-linux";
config = {
allowUnfree = true;
};
};
lib = inputs.nixpkgs.lib // home-manager.lib;
# Helper for consistent specialArgs across all configurations
mkSpecialArgs = { }: {
inherit inputs outputs;
};
# Helper for nixosSystem configuration
mkNixosSystem = { modules, system ? "x86_64-linux" }: lib.nixosSystem {
inherit system;
specialArgs = mkSpecialArgs { };
modules = [ { nixpkgs.config.allowUnfree = true; } ] ++ modules;
};
in { in {
inherit lib; inherit lib;
nixpkgs.config.allowUnfree = true; # Remove redundant allowUnfreePredicate - allowUnfree covers all unfree packages
config.allowUnfree = true; # nixpkgs.config.allowUnfreePredicate = pkg:
nixpkgs.config.allowUnfreePredicate = pkg: # builtins.elem (lib.getName pkg) ["widevine-cdm"];
builtins.elem (lib.getName pkg) ["widevine-cdm"];
colmena = { colmena = {
meta = { meta = {
nixpkgs = import nixpkgs {stdenv.hostPlatform.system = "x86_64-linux";}; nixpkgs = nixpkgsPkg;
specialArgs = {inherit inputs outputs;}; specialArgs = mkSpecialArgs { };
}; };
# ace = import ./hosts/ace/colmena.nix; # Acer C720 # ace = import ./hosts/ace/colmena.nix; # Acer C720
book = import ./hosts/book/colmena.nix; # Google Pixelbook 2017 w/ nvme. book = import ./hosts/book/colmena.nix; # Google Pixelbook 2017 w/ nvme.
@ -66,87 +83,32 @@
nixosConfigurations = { nixosConfigurations = {
# clients # clients
ace = lib.nixosSystem { ace = mkNixosSystem { modules = [./hosts/ace]; };
modules = [./hosts/ace]; dragon = mkNixosSystem { modules = [./hosts/dragon]; };
specialArgs = {inherit inputs outputs;}; book = mkNixosSystem { modules = [./hosts/book]; };
}; loki = mkNixosSystem { modules = [./hosts/loki]; };
dragon = lib.nixosSystem { pocket2 = mkNixosSystem { modules = [./hosts/pocket2]; };
modules = [./hosts/dragon]; smaug = mkNixosSystem { modules = [./hosts/smaug]; };
specialArgs = {inherit inputs outputs;}; t2 = mkNixosSystem { modules = [./hosts/t2]; };
}; pi1 = mkNixosSystem { modules = [./hosts/pi1]; };
book = lib.nixosSystem {
modules = [./hosts/book];
specialArgs = {inherit inputs outputs;};
};
loki = lib.nixosSystem {
modules = [./hosts/loki];
specialArgs = {inherit inputs outputs;};
};
pocket2 = lib.nixosSystem {
modules = [./hosts/pocket2];
specialArgs = {inherit inputs outputs;};
};
smaug = lib.nixosSystem {
modules = [./hosts/smaug];
specialArgs = {inherit inputs outputs;};
};
t2 = lib.nixosSystem {
modules = [./hosts/t2];
specialArgs = {inherit inputs outputs;};
};
pi1 = lib.nixosSystem {
modules = [./hosts/pi1];
specialArgs = {inherit inputs outputs;};
};
# servers # servers
display = lib.nixosSystem { display = mkNixosSystem { modules = [./hosts/display]; };
modules = [./hosts/display]; fred = mkNixosSystem { modules = [./hosts/fred]; };
specialArgs = {inherit inputs outputs;}; vm = mkNixosSystem {
};
fred = lib.nixosSystem {
modules = [./hosts/fred];
specialArgs = {inherit inputs outputs;};
};
vm = lib.nixosSystem {
modules = [ modules = [
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix" "${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix"
"${nixpkgs}/nixos/modules/installer/cd-dvd/channel.nix" "${nixpkgs}/nixos/modules/installer/cd-dvd/channel.nix"
./hosts/vm ./hosts/vm
]; ];
specialArgs = {inherit inputs outputs;};
}; };
harper2 = lib.nixosSystem { harper2 = mkNixosSystem { modules = [./hosts/harper2]; };
modules = [./hosts/harper2]; harper = mkNixosSystem { modules = [./hosts/harper]; };
specialArgs = {inherit inputs outputs;}; nuwww = mkNixosSystem { modules = [./hosts/nuwww]; };
}; pihole = mkNixosSystem { modules = [./hosts/pihole]; };
harper = lib.nixosSystem { www2 = mkNixosSystem { modules = [./hosts/www2]; };
modules = [./hosts/harper]; w1 = mkNixosSystem { modules = [./hosts/w1]; };
specialArgs = {inherit inputs outputs;}; # w2 = mkNixosSystem { modules = [./hosts/w2]; };
};
nuwww = lib.nixosSystem {
modules = [./hosts/nuwww];
specialArgs = {inherit inputs outputs;};
};
pihole = lib.nixosSystem {
modules = [./hosts/pihole];
specialArgs = {inherit inputs outputs;};
};
www2 = lib.nixosSystem {
modules = [./hosts/www2];
specialArgs = {inherit inputs outputs;};
};
w1 = lib.nixosSystem {
modules = [./hosts/w1];
specialArgs = {inherit inputs outputs;};
};
# w2 = lib.nixosSystem {
# modules = [./hosts/w2];
# specialArgs = {
# inherit inputs outputs;
# };
# };
}; };
}; };
} }

View file

@ -3,6 +3,7 @@
outputs, outputs,
pkgs, pkgs,
pkgs-stable, pkgs-stable,
lib,
... ...
}: { }: {
imports = [inputs.home-manager.nixosModules.home-manager]; imports = [inputs.home-manager.nixosModules.home-manager];
@ -26,7 +27,7 @@
home = { home = {
username = "don"; username = "don";
homeDirectory = "/home/don"; homeDirectory = "/home/don";
stateVersion = "25.11"; stateVersion = lib.mkDefault "25.11";
}; };
programs = { programs = {
home-manager = {enable = true;}; home-manager = {enable = true;};

View file

@ -23,9 +23,12 @@ in {
./terminals.nix ./terminals.nix
]; ];
fonts = {fontconfig = {enable = true;};}; fonts = {fontconfig = {enable = true;};};
nixpkgs.config.allowUnfree = true;
nixpkgs.overlays = [ nixpkgs.overlays = [
(final: prev: { (final: prev: {
qutebrowser = prev.qutebrowser.override {enableWideVine = true;}; qutebrowser = prev.qutebrowser.override {
enableWideVine = true;
};
}) })
]; ];
home.packages = with pkgs; [ home.packages = with pkgs; [
@ -68,7 +71,6 @@ in {
# telegram-desktop # telegram-desktop
texlive.combined.scheme-medium texlive.combined.scheme-medium
# watchmate # watchmate
widevine-cdm
wlsunset wlsunset
# yt-dlp # yt-dlp
]; ];

View file

@ -244,9 +244,6 @@
}; };
}; };
qt = { qt = {
args = [
"widevine-path=${pkgs.widevine-cdm}/share/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so"
];
workarounds = {remove_service_workers = true;}; workarounds = {remove_service_workers = true;};
}; };
spellcheck = {languages = ["en-US"];}; spellcheck = {languages = ["en-US"];};

View file

@ -1,44 +1,11 @@
{ { lib, config, pkgs, inputs, outputs, home-manager, ... }:
lib,
config,
pkgs,
inputs,
outputs,
home-manager,
...
}:
with lib; let with lib; let
cfg = config.roles.citrix; cfg = config.roles.citrix;
# FIXME : remove when new version of Citrix is released
pkgs =
# DELME
import (builtins.fetchTarball {
# DELME
url = "https://github.com/NixOS/nixpkgs/archive/29b6e7097f50955f49a81d2665fb21c94c43df19.tar.gz"; # DELME
sha256 = "0zrkfxj130gbgixgk8yaxk5d9s5ppj667x38n4vys4zxw5r60bjz"; # DELME
}) {
# DELME
config = {
# DELME
allowUnfree = true; # DELME
allowInsecure = true; # DELME
permittedInsecurePackages = [
# DELME
"libsoup-2.74.3" # DELME
]; # DELME
}; # DELME
}; # DELME
citrix_workspace_overlay = pkgs.citrix_workspace; # DELME
in { in {
options.roles.citrix = {enable = lib.mkEnableOption "citrix tools";}; options.roles.citrix = {enable = lib.mkEnableOption "citrix tools";};
config = mkIf cfg.enable { config = mkIf cfg.enable {
# FIXME : remove when new version of Citrix is released home-manager.users.don.home.packages = with pkgs; [citrix_workspace];
# home-manager.users.don.home.packages = with pkgs; [citrix_workspace];
home-manager.users.don.home.packages = with pkgs; [citrix_workspace_overlay]; # DELME
nixpkgs.config.permittedInsecurePackages = ["libsoup-2.74.3"]; nixpkgs.config.permittedInsecurePackages = ["libsoup-2.74.3"];
# home-manager.users.don.home.packages = with pkgs;
# [ citrix_workspace_24_11_0 ];
home-manager.users.don.home.file."ICAClient" = { home-manager.users.don.home.file."ICAClient" = {
recursive = true; recursive = true;
source = ./files/citrix; source = ./files/citrix;

View file

@ -0,0 +1,48 @@
{
lib,
config,
pkgs,
inputs,
outputs,
home-manager,
...
}:
with lib; let
cfg = config.roles.citrix;
# FIXME : remove when new version of Citrix is released
pkgs =
# DELME
import (builtins.fetchTarball {
# DELME
url = "https://github.com/NixOS/nixpkgs/archive/29b6e7097f50955f49a81d2665fb21c94c43df19.tar.gz"; # DELME
sha256 = "0zrkfxj130gbgixgk8yaxk5d9s5ppj667x38n4vys4zxw5r60bjz"; # DELME
}) {
# DELME
config = {
# DELME
allowUnfree = true; # DELME
allowInsecure = true; # DELME
permittedInsecurePackages = [
# DELME
"libsoup-2.74.3" # DELME
]; # DELME
}; # DELME
}; # DELME
citrix_workspace_overlay = pkgs.citrix_workspace; # DELME
in {
options.roles.citrix = {enable = lib.mkEnableOption "citrix tools";};
config = mkIf cfg.enable {
# FIXME : remove when new version of Citrix is released
# home-manager.users.don.home.packages = with pkgs; [citrix_workspace];
home-manager.users.don.home.packages = with pkgs; [citrix_workspace_overlay]; # DELME
nixpkgs.config.permittedInsecurePackages = ["libsoup-2.74.3"];
# home-manager.users.don.home.packages = with pkgs;
# [ citrix_workspace_24_11_0 ];
home-manager.users.don.home.file."ICAClient" = {
recursive = true;
source = ./files/citrix;
target = ".ICAClient";
};
};
}

View file

@ -1,29 +1,21 @@
{ { inputs, outputs, lib, config, pkgs, ... }: {
inputs,
outputs,
lib,
config,
pkgs,
...
}: {
imports = [ imports = [
../templates/workstation.nix
inputs.nixos-hardware.nixosModules.google-pixelbook inputs.nixos-hardware.nixosModules.google-pixelbook
inputs.sops-nix.nixosModules.sops
./hardware-configuration.nix ./hardware-configuration.nix
# ../disko/mmcblk.nix
../workstation
]; ];
# Host-specific configuration
networking.hostName = "book"; networking.hostName = "book";
variables.address = "100.72.121.75"; variables.address = "100.72.121.75";
variables.swayScale = "1.5"; variables.swayScale = "1.5";
# Enable roles for this host
roles = { roles = {
citrix.enable = false;
zoom.enable = false;
gui.enable = true; gui.enable = true;
kmscon.enable = true; kmscon.enable = true;
auto-cpufreq.enable = true; auto-cpufreq.enable = true;
gnome-calendar.enable = true; gnome-calendar.enable = true;
}; };
wm = {sway.enable = true;}; wm.sway.enable = true;
} }

23
hosts/common/boot.nix Normal file
View file

@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }: {
# Common boot configuration
boot = {
loader = {
systemd-boot = {
enable = true;
configurationLimit = 10;
};
efi.canTouchEfiVariables = true;
timeout = 3;
};
# Plymouth for boot splash
plymouth.enable = true;
# Kernel parameters
kernelParams = ["quiet" "splash"];
# Console settings
consoleLogLevel = 0;
initrd.verbose = false;
};
}

View file

@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }: {
# Common networking configuration
networking = {
networkmanager.enable = true;
enableIPv6 = true;
useDHCP = false;
dhcpcd.enable = false;
};
# Firewall
networking.firewall = {
enable = true;
allowPing = true;
};
# DNS
networking.nameservers = [
"1.1.1.1"
"8.8.8.8"
];
}

View file

@ -1,20 +1,15 @@
{ { inputs, outputs, lib, config, pkgs, ... }: {
inputs,
outputs,
lib,
config,
pkgs,
...
}: {
imports = [ imports = [
../templates/server.nix
inputs.nixos-hardware.nixosModules.raspberry-pi-4 inputs.nixos-hardware.nixosModules.raspberry-pi-4
inputs.sops-nix.nixosModules.sops
./hardware-configuration.nix ./hardware-configuration.nix
../pi-server
./kiosk.nix ./kiosk.nix
]; ];
# Host-specific configuration
networking.hostName = "display"; networking.hostName = "display";
variables.address = "100.72.208.107"; variables.address = "100.72.208.107";
nixpkgs.overlays = [ nixpkgs.overlays = [
(final: super: { (final: super: {
makeModulesClosure = x: makeModulesClosure = x:

View file

@ -17,7 +17,7 @@
networking.hostName = "fred"; networking.hostName = "fred";
variables.address = "100.72.236.170"; variables.address = "100.72.236.170";
boot = { boot = {
binfmt.emulatedSystems = ["aarch64-linux"]; binfmt.emulatedSystems = lib.optional (config.system != "aarch64-linux") [ "aarch64-linux" ];
loader = { loader = {
systemd-boot = {enable = true;}; systemd-boot = {enable = true;};
efi = { efi = {

View file

@ -1,22 +1,16 @@
{ { inputs, outputs, lib, config, pkgs, ... }: {
inputs,
outputs,
lib,
config,
pkgs,
...
}: {
imports = [ imports = [
../templates/workstation.nix
inputs.nixos-hardware.nixosModules.framework-amd-ai-300-series inputs.nixos-hardware.nixosModules.framework-amd-ai-300-series
inputs.sops-nix.nixosModules.sops
./hardware-configuration.nix ./hardware-configuration.nix
# ../disko/nvme.nix
../workstation
]; ];
# Host-specific configuration
networking.hostName = "loki"; networking.hostName = "loki";
variables.address = "100.72.0.1"; variables.address = "100.72.0.1";
variables.swayScale = "1.2"; variables.swayScale = "1.2";
# Enable roles for this host
roles = { roles = {
citrix.enable = true; citrix.enable = true;
zoom.enable = true; zoom.enable = true;
@ -26,9 +20,9 @@
games.enable = true; games.enable = true;
auto-cpufreq.enable = true; auto-cpufreq.enable = true;
gnome-calendar.enable = true; gnome-calendar.enable = true;
primary.enable = false;
lmstudio.enable = true;
ollama.enable = true;
}; };
primary.enable = false; wm.sway.enable = true;
lmstudio.enable = true;
ollama.enable = true;
wm = {sway.enable = true;};
} }

26
hosts/roles/default.nix Normal file
View file

@ -0,0 +1,26 @@
{ lib, ... }: {
options.roles = {
citrix = lib.mkEnableOption "Citrix Workspace client";
zoom = lib.mkEnableOption "Zoom client";
gui = lib.mkEnableOption "GUI environment";
games = lib.mkEnableOption "Gaming packages and Steam";
kvm = lib.mkEnableOption "Virtualization support (libvirtd, waydroid)";
kmscon = lib.mkEnableOption "Console improvements";
auto-cpufreq = lib.mkEnableOption "CPU power management";
gnome-calendar = lib.mkEnableOption "GNOME Calendar integration";
tlp = lib.mkEnableOption "TLP power management";
wine = lib.mkEnableOption "Wine for Windows compatibility";
# Window manager selection
wm = lib.mkOption {
type = lib.types.enum ["sway" "gnome" "none"];
default = "none";
description = "Window manager to enable";
};
# Special host-specific roles
primary = lib.mkEnableOption "Primary workstation designation";
lmstudio = lib.mkEnableOption "LM Studio AI tools";
ollama = lib.mkEnableOption "Ollama AI server";
};
}

View file

@ -65,7 +65,7 @@ in {
# Bootloader. # Bootloader.
boot = { boot = {
binfmt.emulatedSystems = ["aarch64-linux"]; binfmt.emulatedSystems = lib.optional (config.system != "aarch64-linux") [ "aarch64-linux" ];
kernelPackages = pkgs.linuxPackages_latest; kernelPackages = pkgs.linuxPackages_latest;
kernelParams = ["consoleblank=60"]; kernelParams = ["consoleblank=60"];
#loader = { #loader = {

View file

@ -0,0 +1,23 @@
{ inputs, outputs, lib, config, pkgs, ... }: {
imports = [
inputs.sops-nix.nixosModules.sops
../server
../common/boot.nix
../common/networking.nix
../common/tailscale.nix
../../home/pi-server.nix
../../modules/beszel-agent.nix
];
config = {
# Common server setup
nix.settings.trusted-users = ["root" "don"];
# Server-specific Nix settings
nix.gc = {
automatic = true;
dates = "daily";
options = "--delete-older-than 7d";
};
};
}

View file

@ -0,0 +1,17 @@
{ inputs, outputs, lib, config, pkgs, ... }: {
imports = [
inputs.sops-nix.nixosModules.sops
../workstation
../common/boot.nix
../common/networking.nix
../common/tailscale.nix
../../home
../../home/gui
../wm/sway
];
config = {
# Common workstation setup
nix.settings.trusted-users = ["root" "don"];
};
}

View file

@ -164,14 +164,14 @@ in {
# Bootloader. # Bootloader.
boot = { boot = {
binfmt.emulatedSystems = ["aarch64-linux"]; binfmt.emulatedSystems = lib.optional (config.system != "aarch64-linux") [ "aarch64-linux" ];
# kernelPackages = pkgs.linuxPackages_latest; # kernelPackages = pkgs.linuxPackages_latest;
kernelPackages = pkgs.linuxPackages_zen; kernelPackages = pkgs.linuxPackages_zen;
kernelParams = ["consoleblank=60" "mem_sleep_default=deep"]; kernelParams = ["consoleblank=60" "mem_sleep_default=deep"];
# extraModulePackages = [config.boot.kernelPackages.ddcci-driver]; # extraModulePackages = [config.boot.kernelPackages.ddcci-driver];
# kernelModules = ["i2c-dev" "ddcci_backlight"]; # kernelModules = ["i2c-dev" "ddcci_backlight"];
loader = loader =
if (pkgs.hostPlatform != lib.mkDefault "aarch64-linux") if config.system != "aarch64-linux"
then { then {
systemd-boot = {enable = true;}; systemd-boot = {enable = true;};
efi = { efi = {
@ -314,7 +314,7 @@ in {
fonts.packages = with pkgs; [ fonts.packages = with pkgs; [
anonymousPro anonymousPro
font-awesome font-awesome
# jetbrains-mono # FIXME Causing build error? 2026-02-25 jetbrains-mono
nerd-fonts.symbols-only nerd-fonts.symbols-only
nerd-fonts.roboto-mono nerd-fonts.roboto-mono
nerd-fonts.monaspace nerd-fonts.monaspace

View file

@ -1,5 +1,5 @@
HOSTNAME := `hostname -s` HOSTNAME := `hostname -s`
nixcmd := "nix --extra-experimental-features flakes --extra-experimental-features nix-command" nixcmd := "nix --extra-experimental-features nix-command"
# Do as test build without installing # Do as test build without installing
test hostname=(HOSTNAME): test hostname=(HOSTNAME):
@ -72,6 +72,12 @@ update:
@{{nixcmd}} flake update &> nixos-switch.log || ( cat nixos-switch.log && false ) @{{nixcmd}} flake update &> nixos-switch.log || ( cat nixos-switch.log && false )
@rm -f nixos-switch.log @rm -f nixos-switch.log
# Check flake configuration
check:
@echo "Checking flake configuration"
@{{nixcmd}} flake check &> nixos-switch.log || ( cat nixos-switch.log && false )
@rm -f nixos-switch.log
# Clean up # Clean up
clean hostname=(HOSTNAME): clean hostname=(HOSTNAME):
@echo "Cleaning old entries and store" @echo "Cleaning old entries and store"