Compare commits

..

2 Commits

Author SHA1 Message Date
5325aba1cf nuke it all 2026-02-25 00:25:09 +00:00
1ef5057dff Stuff 2026-02-24 23:27:24 +00:00
29 changed files with 138 additions and 598 deletions

8
flake.lock generated
View File

@@ -45,16 +45,16 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1713995372,
"narHash": "sha256-fFE3M0vCoiSwCX02z8VF58jXFRj9enYUSTqjyHAjrds=",
"lastModified": 1771903837,
"narHash": "sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "dd37924974b9202f8226ed5d74a252a9785aedf8",
"rev": "e764fc9a405871f1f6ca3d1394fb422e0a0c3951",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-23.11",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}

View File

@@ -2,7 +2,7 @@
description = "Stationette nix config";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager.url = "github:nix-community/home-manager/release-23.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
@@ -36,13 +36,13 @@
stationette = nixpkgs.lib.nixosSystem {
modules = [
./system/configuration.nix
home-manager.nixosModules.home-manager {
home-manager.users.chris = import ./home;
home-manager.extraSpecialArgs = {
inherit pkgs-unstable;
inherit inputs;
};
}
#home-manager.nixosModules.home-manager {
# home-manager.users.chris = import ./home;
# home-manager.extraSpecialArgs = {
# inherit pkgs-unstable;
# inherit inputs;
# };
#}
];
};
};

View File

@@ -13,7 +13,6 @@
home = {
username = "chris";
homeDirectory = "/home/chris";
};
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion

View File

@@ -1,10 +1,8 @@
{
imports = [
./scripts.nix
./gtk.nix
./packages.nix
./programs.nix
./environment.nix
./scripts.nix
];
nixpkgs = {
@@ -14,6 +12,7 @@
permittedInsecurePackages = [
"electron-25.9.0" # Obsidian
"beekeeper-studio-5.3.4"
];
};
};

View File

@@ -1,31 +0,0 @@
{
home.sessionVariables = {
BROWSER = "firefox";
EDITOR = "nvim";
TERMINAL = "kitty";
NIXOS_OZONE_WL = "1";
QT_QPA_PLATFORMTHEME = "gtk3";
QT_SCALE_FACTOR = "1";
MOZ_ENABLE_WAYLAND = "1";
SDL_VIDEODRIVER = "wayland";
QT_QPA_PLATFORM = "wayland-egl";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
GTK_CSD = "0";
WLR_DRM_DEVICES = "/dev/dri/card0";
WLR_NO_HARDWARE_CURSORS = "1";
CLUTTER_BACKEND = "wayland";
WLR_RENDERER = "vulkan";
XCURSOR_SIZE = "32";
GTK_THEME = "Catppuccin-Macchiato-Compact-Blue-Dark";
XDG_CURRENT_DESKTOP = "hyprland";
XDG_SESSION_DESKTOP = "Hyprland";
XDG_SESSION_TYPE = "wayland";
GTK_USE_PORTAL = "1";
NIXOS_XDG_OPEN_USE_PORTAL = "1";
XDG_CACHE_HOME = "\${HOME}/.cache";
XDG_CONFIG_HOME = "\${HOME}/.config";
#XDG_BIN_HOME = "\${HOME}/.local/bin";
XDG_DATA_HOME = "\${HOME}/.local/share";
};
}

View File

@@ -1,38 +0,0 @@
{ pkgs, ... }:
{
gtk = {
enable = true;
cursorTheme = {
name = "Catppuccin-Macchiato-Blue";
package = pkgs.catppuccin-cursors.macchiatoBlue;
};
theme = {
name = "Catppuccin-Macchiato-Compact-Blue-dark";
package = pkgs.catppuccin-gtk.override {
size = "compact";
accents = ["blue"];
variant = "macchiato";
};
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-folders;
};
gtk3.extraConfig = {
Settings = ''
gtk-application-prefer-dark-theme = 1;
'';
};
gtk4.extraConfig = {
Settings = ''
gtk-application-prefer-dark-theme = 1;
'';
};
};
}

View File

@@ -2,66 +2,64 @@
{
home.packages = with pkgs; [
jetbrains.rider
android-studio
beekeeper-studio
brave
discord
spotify
go
lua
nodePackages.pnpm
(python3.withPackages (python-pkgs: [ python-pkgs.pip python-pkgs.requests ]))
rustup
zig
obsidian
thunderbird
libreoffice-qt
nerd-fonts.fira-code
hunspell
blueberry
steam
steam-run
yuzu-mainline
viewnior
pkgs-unstable.hyprshot
catppuccin-cursors.macchiatoBlue
catppuccin-gtk
papirus-folders
php84Packages.composer
php84Packages.xdebug
php84Extensions.sqlite3
php84Extensions.redis
php84Extensions.sodium
php84Extensions.pgsql
php84Extensions.iconv
php84Extensions.gd
php84Extensions.zip
php
antigravity
gimp
kdePackages.dolphin
enpass
enpass-cli
expressvpn
jellyfin-ffmpeg
inkscape
krita
libreoffice-fresh
nextcloud-client
nodejs_24
signal-desktop
sxiv
tenacity
unzip
zathura
ghostty
wally-cli
youtube-dl
kdePackages.wacomtablet
kdePackages.print-manager
mpv
vlc
telegram-desktop
# jetbrains.rider
# android-studio
# beekeeper-studio
# brave
# discord
# spotify
# go
# lua
# nodePackages.pnpm
# (python3.withPackages (python-pkgs: [ python-pkgs.pip python-pkgs.requests ]))
# rustup
# zig
# obsidian
# thunderbird
# libreoffice-qt
# pkgs-unstable.nerd-fonts.fira-code
# hunspell
# blueberry
# steam
# steam-run
# viewnior
# pkgs-unstable.hyprshot
# catppuccin-cursors.macchiatoBlue
# catppuccin-gtk
# papirus-folders
# pkgs-unstable.php84Packages.composer
# pkgs-unstable.php84Packages.xdebug
# pkgs-unstable.php84Extensions.sqlite3
# pkgs-unstable.php84Extensions.redis
# pkgs-unstable.php84Extensions.sodium
# pkgs-unstable.php84Extensions.pgsql
# pkgs-unstable.php84Extensions.iconv
# pkgs-unstable.php84Extensions.gd
# pkgs-unstable.php84Extensions.zip
# php
# antigravity
# gimp
# kdePackages.dolphin
# enpass
# enpass-cli
# expressvpn
# jellyfin-ffmpeg
# inkscape
# krita
# libreoffice-fresh
# nextcloud-client
# nodejs_24
# signal-desktop
# sxiv
# tenacity
# unzip
# zathura
# ghostty
# wally-cli
# kdePackages.wacomtablet
# kdePackages.print-manager
# mpv
# vlc
# telegram-desktop
];
}

View File

@@ -1,4 +1,4 @@
{ inputs, ... }:
{ pkgs, inputs, ... }:
let
lock-false = {
@@ -12,123 +12,64 @@ let
in
{
programs = {
firefox = {
enable = true;
package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
extraPolicies = {
DisableTelemetry = true;
DisableFirefoxStudies = true;
EnableTrackingProtection = {
Value= true;
Locked = true;
Cryptomining = true;
Fingerprinting = true;
};
DisablePocket = true;
DisableFirefoxAccounts = true;
DisableAccounts = true;
DisableFirefoxScreenshots = true;
OverrideFirstRunPage = "";
OverridePostUpdatePage = "";
DontCheckDefaultBrowser = true;
DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab"
DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
SearchBar = "unified"; # alternative: "separate"
# firefox = {
# enable = true;
# package = pkgs.wrapFirefox pkgs.firefox-unwrapped {
# extraPolicies = {
# DisableTelemetry = true;
# DisableFirefoxStudies = true;
# EnableTrackingProtection = {
# Value= true;
# Locked = true;
# Cryptomining = true;
# Fingerprinting = true;
# };
# DisablePocket = true;
# DisableFirefoxAccounts = true;
# DisableAccounts = true;
# DisableFirefoxScreenshots = true;
# OverrideFirstRunPage = "";
# OverridePostUpdatePage = "";
# DontCheckDefaultBrowser = true;
# DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab"
# DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on"
# SearchBar = "unified"; # alternative: "separate"
/* ---- EXTENSIONS ---- */
ExtensionSettings = {
"*".installation_mode = "allowed"; # blocks all addons except the ones specified below
# Enpass
"firefox-enpass@enpass.io" = {
install_url = "https://dl.enpass.io/stable/extensions/firefox/versions/v6.11.10.2/enpass_password_manager-6.11.10.2.xpi";
installation_mode = "force_installed";
};
};
# /* ---- EXTENSIONS ---- */
# ExtensionSettings = {
# "*".installation_mode = "allowed"; # blocks all addons except the ones specified below
# # Enpass
# "firefox-enpass@enpass.io" = {
# install_url = "https://dl.enpass.io/stable/extensions/firefox/versions/v6.11.10.2/enpass_password_manager-6.11.10.2.xpi";
# installation_mode = "force_installed";
# };
# };
/* ---- PREFERENCES ---- */
# Set preferences shared by all profiles.
Preferences = {
"browser.contentblocking.category" = { Value = "strict"; Status = "locked"; };
"extensions.pocket.enabled" = lock-false;
"extensions.screenshots.disabled" = lock-true;
"browser.topsites.contile.enabled" = lock-false;
"browser.formfill.enable" = lock-false;
"browser.search.suggest.enabled" = lock-false;
"browser.search.suggest.enabled.private" = lock-false;
"browser.urlbar.suggest.searches" = lock-false;
"browser.urlbar.showSearchSuggestionsFirst" = lock-false;
"browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
"browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
"browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
"browser.newtabpage.activity-stream.showSponsored" = lock-false;
"browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
"browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
};
};
};
};
/* ---- PROFILES ---- */
# Switch profiles via about:profiles page.
# For options that are available in Home-Manager see
# https://nix-community.github.io/home-manager/options.html#opt-programs.firefox.profiles
profiles ={
chris = { # choose a profile name; directory is /home/<user>/.mozilla/firefox/chris
id = 0; # 0 is the default profile; see also option "isDefault"
name = "chris"; # name as listed in about:profiles
isDefault = true; # can be omitted; true if profile ID is 0
settings = { # specify profile-specific preferences here; check about:config for options
"browser.startup.homepage" = "https://tower.scarif.space";
# "browser.newtabpage.pinned" = [{
# title = "NixOS";
# url = "https://nixos.org";
# }];
};
search = {
force = true;
default = "holocron";
engines = {
holocron = {
name = "Holocron";
urls = [{
template = "https://holocron.scarif.space/search";
params = [
{ name = "q"; value = "{searchTerms}"; }
];
}];
iconUpdateURL = "https://holocron.scarif.space/static/themes/simple/img/favicon.png";
definedAliases = [ "@h" ]; # Allows you to type '@s query' in the URL bar
};
nix-packages = {
name = "Nix Packages";
urls = [{
template = "https://search.nixos.org/packages";
params = [
{ name = "type"; value = "packages"; }
{ name = "query"; value = "{searchTerms}"; }
];
}];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = [ "@np" ];
};
nixos-wiki = {
name = "NixOS Wiki";
urls = [{ template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; }];
iconMapObj."16" = "https://wiki.nixos.org/favicon.ico";
definedAliases = [ "@nw" ];
};
bing.metaData.hidden = true;
google.metaData.alias = "@g"; # builtin engines only support specifying one additional alias
};
};
};
};
# /* ---- PREFERENCES ---- */
# # Set preferences shared by all profiles.
# Preferences = {
# "browser.contentblocking.category" = { Value = "strict"; Status = "locked"; };
# "extensions.pocket.enabled" = lock-false;
# "extensions.screenshots.disabled" = lock-true;
# "browser.topsites.contile.enabled" = lock-false;
# "browser.formfill.enable" = lock-false;
# "browser.search.suggest.enabled" = lock-false;
# "browser.search.suggest.enabled.private" = lock-false;
# "browser.urlbar.suggest.searches" = lock-false;
# "browser.urlbar.showSearchSuggestionsFirst" = lock-false;
# "browser.newtabpage.activity-stream.feeds.section.topstories" = lock-false;
# "browser.newtabpage.activity-stream.feeds.snippets" = lock-false;
# "browser.newtabpage.activity-stream.section.highlights.includePocket" = lock-false;
# "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = lock-false;
# "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = lock-false;
# "browser.newtabpage.activity-stream.section.highlights.includeVisited" = lock-false;
# "browser.newtabpage.activity-stream.showSponsored" = lock-false;
# "browser.newtabpage.activity-stream.system.showSponsored" = lock-false;
# "browser.newtabpage.activity-stream.showSponsoredTopSites" = lock-false;
# };
# };
# };
# };
};
programs.home-manager.enable = true;
}

View File

@@ -11,5 +11,5 @@
];
# https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion
system.stateVersion = "23.05";
system.stateVersion = "25.11";
}

View File

@@ -2,22 +2,12 @@
{
boot = {
kernelParams = ["nohibernate" "ipv6.disable=1"];
tmp.cleanOnBoot = true;
#kernelParams = ["nohibernate" "ipv6.disable=1"];
#tmp.cleanOnBoot = true;
# supportedFilesystems = ["ntfs"];
loader = {
grub = {
device = "nodev";
efiSupport = true;
enable = true;
useOSProber = true;
timeoutStyle = "menu";
efiInstallAsRemovable = true;
extraConfig = ''
insmod tpm
'';
};
timeout = 300;
systemd-boot.enable = true;
efi.canTouchEfiVariables = true;
};
};
}

View File

@@ -3,22 +3,9 @@
{
imports = [
./boot.nix
./fonts.nix
./gaming.nix
./hardware.nix
./hyprland.nix
./internationalisation.nix
./networking.nix
./nixsettings.nix
./packages.nix
./polkit.nix
./programs.nix
./security.nix
./services.nix
./sound.nix
./theme.nix
./time.nix
./users.nix
./virtualisation.nix
];
}

View File

@@ -1,10 +0,0 @@
{ pkgs, ... }:
{
fonts.packages = with pkgs; [
font-awesome
jetbrains-mono
(nerdfonts.override { fonts = [ "JetBrainsMono" ]; })
];
}

View File

@@ -1,13 +0,0 @@
{ config, pkgs, ... }:
{
nix = {
settings = {
warn-dirty = false;
experimental-features = [ "nix-command" "flakes" ];
auto-optimise-store = true;
substituters = ["https://nix-gaming.cachix.org"];
trusted-public-keys = ["nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="];
};
};
}

View File

@@ -1,12 +0,0 @@
{ config, pkgs, ... }:
{
hardware = {
bluetooth.enable = true;
opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
};
}

View File

@@ -1,21 +0,0 @@
{ config, pkgs, ... }:
{
programs.hyprland = {
enable = true;
};
environment.systemPackages = with pkgs; [
hyprpaper
libnotify
mako
qt5.qtwayland
qt6.qtwayland
swayidle
swaylock-effects
wlogout
wl-clipboard
wofi
waybar
];
}

View File

@@ -1,23 +0,0 @@
{ pkgs, ... }:
{
i18n.defaultLocale = "en_GB.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "en_GB.UTF-8";
LC_IDENTIFICATION = "en_GB.UTF-8";
LC_MEASUREMENT = "en_GB.UTF-8";
LC_MONETARY = "en_GB.UTF-8";
LC_NAME = "en_GB.UTF-8";
LC_NUMERIC = "en_GB.UTF-8";
LC_PAPER = "en_GB.UTF-8";
LC_TELEPHONE = "en_GB.UTF-8";
LC_TIME = "en_GB.UTF-8";
};
i18n.supportedLocales = [
"en_GB.UTF-8/UTF-8"
"en_US.UTF-8/UTF-8"
"ro_RO.UTF-8/UTF-8"
];
}

View File

@@ -4,7 +4,5 @@
networking = {
hostName = "stationette";
networkmanager.enable = true;
enableIPv6 = false;
firewall.enable = false;
};
}

View File

@@ -1,23 +0,0 @@
{ config, pkgs, ... }:
{
documentation.nixos.enable = false;
nixpkgs.config.allowUnfree = true;
nix = {
settings = {
warn-dirty = false;
experimental-features = [ "nix-command" "flakes" ];
auto-optimise-store = true;
substituters = ["https://nix-gaming.cachix.org"];
trusted-public-keys = ["nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4="];
};
gc = {
automatic = true;
dates = "weekly";
options = "--delete-older-than 7d";
};
};
}

View File

@@ -9,23 +9,13 @@
fzf
git
gnumake
lm_sensors
libsForQt5.qt5.qtquickcontrols2
libsForQt5.qt5.qtgraphicaleffects
libsForQt5.qt5.qtsvg
go-task
neofetch
neovim
ripgrep
tldr
unzip
openssl
openssl.dev
pkg-config
wget
xfce.thunar
xdg-desktop-portal-gtk
xdg-desktop-portal-wlr
zip
zoxide
jq
@@ -38,8 +28,10 @@
tmuxinator
wget
zenity
gum
yazi
rsync
p7zip
impala
];
}

View File

@@ -1,27 +0,0 @@
{ pkgs, ... }:
{
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;
};
};
extraConfig = ''
DefaulTimeoutStopSec=10s
'';
};
environment.systemPackages = with pkgs; [
polkit
polkit_gnome
];
}

View File

@@ -1,57 +1,9 @@
{ config, pkgs, ... }:
{
xdg.portal = {
enable = true;
wlr.enable = true;
xdgOpenUsePortal = false;
extraPortals = [
pkgs.xdg-desktop-portal-hyprland
pkgs.xdg-desktop-portal-gtk
];
};
programs = {
steam = {
enable = true;
remotePlay.openFirewall = true;
dedicatedServer.openFirewall = true;
};
zsh = {
enable = true;
};
hyprland = {
enable = true;
xwayland = {
enable = true;
};
portalPackage = pkgs.xdg-desktop-portal-hyprland;
};
gnupg = {
agent = {
enable = true;
enableSSHSupport = true;
};
};
tmux = {
enable = true;
escapeTime = 0;
# plugins = with pkgs; [
# tmuxPlugins.vim-timux-navigator
# tmuxPlugins.resurrect
# tmuxPlugins.continuum
# tmuxPlugins.catppuccin
# ];
# zsh.enable = true;
# mtr.enable = true;
};
};
}

View File

@@ -1,15 +0,0 @@
{ pkgs }:
pkgs.stdenv.mkDerivation {
name = "sddm-theme";
src = pkgs.fetchFromGitHub {
owner = "gpskwlkr";
repo = "sddm-astronaut-theme";
rev = "468a100460d5feaa701c2215c737b55789cba0fc";
sha256 = "1h20b7n6a4pbqnrj22y8v5gc01zxs58lck3bipmgkpyp52ip3vig";
};
installPhase = ''
mkdir -p $out
cp -R ./* $out/
'';
}

View File

@@ -1,7 +0,0 @@
{ pkgs, ... }:
{
security.polkit.enable = true;
security.pam.services.swaylock = {};
security.pam.services.swaylock.fprintAuth = false;
}

View File

@@ -1,21 +0,0 @@
{ config, pkgs, ... }:
{
services = {
dbus.enable = true;
picom.enable = true;
openssh.enable = true;
spice-vdagentd.enable = true;
xserver = {
enable = true;
layout = "gb, us, ro";
xkbOptions = "grp:alt_shift_toggle, caps:swapescape";
displayManager = {
sddm.enable = true;
sddm.theme = "${import ./sddm-theme.nix { inherit pkgs; }}";
};
};
};
}

View File

@@ -1,21 +0,0 @@
{ pkgs, ... }:
{
sound.enable = true;
security.rtkit.enable = true;
hardware.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
wireplumber.enable = true;
};
environment.systemPackages = with pkgs; [
pamixer
pavucontrol
];
}

View File

@@ -1,10 +0,0 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
gnome3.adwaita-icon-theme
glib
gsettings-desktop-schemas
nwg-look
];
}

View File

@@ -1,5 +0,0 @@
{ ... }:
{
time.timeZone = "Europe/London";
}

View File

@@ -5,11 +5,8 @@
isNormalUser = true;
shell = pkgs.zsh;
extraGroups = [
"chris"
"wheel"
"docker"
"qemu"
"kvm"
"libvirtd"
"networkmanager"
];
};

View File

@@ -1,36 +0,0 @@
{ pkgs, ... }:
{
virtualisation = {
spiceUSBRedirection.enable = true;
libvirtd = {
enable = true;
qemu = {
swtpm.enable = true;
ovmf.enable = true;
# ovmf.packages = [ pkgs.OVMFFULL.fd ];
};
};
podman = {
enable = true;
dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
};
};
environment.systemPackages = with pkgs; [
podman-compose
qemu
spice
spice-gtk
spice-protocol
virt-manager
virt-viewer
win-spice
win-virtio
];
}