nixos/modules/hosts/crow/configuration.nix

199 lines
4.8 KiB
Nix
Raw Normal View History

2026-04-26 16:09:24 +00:00
{ self, inputs, ... }: {
2026-05-20 01:37:16 +00:00
flake.nixosModules.crowConfiguration = { pkgs, ... }: {
2026-04-26 16:09:24 +00:00
imports = [
self.nixosModules.crowHardware
self.nixosModules.nest
2026-04-26 16:09:24 +00:00
self.nixosModules.niri
self.nixosModules.git
2026-05-22 22:12:51 +00:00
self.nixosModules.sddm
self.nixosModules.hsr
self.nixosModules.zsh
2026-05-22 22:04:09 -04:00
self.nixosModules.vesktop
2026-05-23 11:25:52 -04:00
self.nixosModules.fuzzel
2026-06-18 18:41:34 -04:00
self.nixosModules.flameshot
];
2026-04-26 16:09:24 +00:00
environment.systemPackages = with pkgs; [
pavucontrol
bolt-launcher
wine
usbutils
virt-manager
prismlauncher
kubectl
kompose
2026-05-20 01:37:16 +00:00
lens
htop
zip
unzip
dig
traceroute
neovim
wget
pciutils
2026-05-20 01:37:16 +00:00
alacritty
brave
lutris
steam
2026-05-27 16:36:39 -04:00
easyeffects
openssl
jq
2026-07-23 16:27:31 -04:00
aider-chat
2026-06-21 11:44:11 -04:00
# Wrap Element so it knows where gnome-libsecret is
# Additionally, override the config to disable legacy call protocol
(let
elementConfig = pkgs.writeText "element-config.json" (builtins.toJSON {
default_server_config = {
"m.homeserver" = {
base_url = "https://starling.mynest.love";
server_name = "starling.mynest.love";
};
};
features = {
"feature_group_calls" = true;
"feature_video_rooms" = true;
"feature_element_call_video_rooms" = true;
};
element_call = {
url = null;
use_exclusively = true;
};
jitsi = {
preferred_domain = null;
};
});
in symlinkJoin {
2026-06-21 11:44:11 -04:00
name = "element-desktop";
paths = [ element-desktop ];
nativeBuildInputs = [ makeWrapper ];
postBuild = ''
wrapProgram $out/bin/element-desktop \
--add-flags "--password-store=gnome-libsecret" \
--set ELEMENT_DESKTOP_CONFIG_JSON "${elementConfig}"
2026-06-21 11:44:11 -04:00
'';
})
];
2026-07-23 16:27:31 -04:00
environment.variables = {
OLLAMA_API_BASE = "http://127.0.0.1:11434";
2026-07-23 16:45:15 -04:00
AIDER_MODEL = "ollama/ornith:35b";
2026-07-23 16:27:31 -04:00
AIDER_AUTO_COMMITS = "false";
AIDER_DARK_MODE = "true";
};
2026-05-20 01:37:16 +00:00
nixpkgs.overlays = [
# Open LDAP currently has a problem
# with one of the tests. Just disable it
(final: prev: {
openldap = prev.openldap.overrideAttrs (oldAttrs: {
doCheck = false;
});
})
];
networking.networkmanager.enable = true;
networking.hostName = "crow";
fonts.packages = with pkgs; [
nerd-fonts.fira-code
nerd-fonts.droid-sans-mono
noto-fonts
2026-04-26 16:09:24 +00:00
];
services = {
openssh.enable = true;
blueman.enable = true;
};
2026-06-28 11:35:08 -04:00
services.ollama = {
enable = true;
package = pkgs.ollama-rocm;
environmentVariables = {
HSA_OVERRIDE_GFX_VERSION = "10.3.0";
};
2026-07-23 16:45:15 -04:00
loadModels = [ "ornith:35b" ];
2026-06-28 11:35:08 -04:00
};
2026-06-28 11:55:37 -04:00
services.open-webui = {
enable = true;
host = "127.0.0.1";
port = 8080;
environment = {
OLLAMA_API_BASE_URL = "http://127.0.0.1:11434";
# Keep telemetry disabled to ensure complete privacy
ANONYMIZED_TELEMETRY = "False";
DO_NOT_TRACK = "True";
SCARF_NO_ANALYTICS = "True";
};
};
boot = {
loader = {
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
timeout = 1;
};
kernelPackages = pkgs.linuxPackages_latest;
kernelModules = [ "amdgpu" ];
# "Silent" boot
initrd.verbose = false;
kernelParams = [
"quiet"
"splash"
"boot.shell_on_fail"
"loglevel=3"
"rd.systemd.show_status=false"
"rd.udev.log_level=3"
"udev.log_priority=3"
];
};
2026-05-22 20:44:44 -04:00
time.timeZone = "America/New_York";
time.hardwareClockInLocalTime = false;
2026-05-23 11:31:50 -04:00
hardware.graphics = {
enable = true;
enable32Bit = true;
};
2026-07-08 13:48:36 -04:00
hardware.bluetooth = {
enable = true;
powerOnBoot = true;
settings = {
General = {
# Shows battery charge of connected devices on supported
# Bluetooth adapters. Defaults to 'false'.
Experimental = true;
# When enabled other devices can connect faster to us, however
# the tradeoff is increased power consumption. Defaults to
# 'false'.
FastConnectable = true;
};
Policy = {
# Enable all controllers when they are found. This includes
# adapters present on start as well as adapters that are plugged
# in later on. Defaults to 'true'.
AutoEnable = true;
};
};
};
2026-05-20 01:37:16 +00:00
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nix.settings.auto-optimise-store = true;
nix.gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 30d";
};
2026-05-20 01:37:16 +00:00
nixpkgs.config.allowUnfree = true;
system.stateVersion = "26.05";
2026-04-26 16:09:24 +00:00
};
}