Compare commits

...

11 commits

Author SHA1 Message Date
Jo
e5cf3d49ad 🐛 Fix incorrect usage of mkIf (oops)
Some checks failed
Trufflehog: check for exposed secrets / Run trufflehog (push) Has been cancelled
Nix: check for unused code / Run deadnix (push) Has been cancelled
Nix: validate flake.lock / Check Lockfile (push) Has been cancelled
Nix: validate flake / Validate x86_64-linux (push) Has been cancelled
2025-12-16 03:19:58 +01:00
Jo
d01579f0a4 📌 Pin system state version to 26.05 2025-12-16 03:10:12 +01:00
Jo
a443208100 🐛 Fix gnome extension overwrite issue 2025-12-16 03:09:47 +01:00
Jo
b35c6547da ♻️ Move Zed and Ghostty user config to correct location 2025-12-16 03:09:23 +01:00
Jo
99459402d2 ♻️ pkgs.system => pkgs.stdenv.hostPlatform.system 2025-12-16 02:41:20 +01:00
Jo
8f2a2d6ead 🔧 Add Vicinae Gnome extension 2025-12-16 02:40:25 +01:00
Jo
54c1625886 📌 Pin flake dependencies (2025-12-16) 2025-12-16 01:45:35 +01:00
Jo
c48551f4be ♻️ Move firefox user config into correct directory 2025-12-16 01:44:05 +01:00
Jo
5da4af521e 🔧 Require discord for Zed rich presence and add oxlint 2025-12-16 01:43:26 +01:00
Jo
4b5b7e41f4 ♻️ Remove obsolete options and clean up nesting/comments 2025-12-16 01:42:31 +01:00
Jo
8a3989ce0b ♻️ Move user-specific gnome config out of global context 2025-12-16 01:40:19 +01:00
17 changed files with 199 additions and 235 deletions

76
flake.lock generated
View file

@ -7,11 +7,11 @@
]
},
"locked": {
"lastModified": 1762198582,
"narHash": "sha256-P9giW/1Crn7ekQt4YIbONJ/hKFaHkTwyhz82FCjh+OM=",
"lastModified": 1765485905,
"narHash": "sha256-fk6zFzzcwz6su99K7UTxS2497+z/Cdk3FzNsacsmZKA=",
"owner": "catppuccin",
"repo": "nix",
"rev": "08716214674ca27914daa52e6fa809cc022b581e",
"rev": "b49c675acd80931fc8b54290920a90189b461dcf",
"type": "github"
},
"original": {
@ -56,11 +56,11 @@
]
},
"locked": {
"lastModified": 1762040540,
"narHash": "sha256-z5PlZ47j50VNF3R+IMS9LmzI5fYRGY/Z5O5tol1c9I4=",
"lastModified": 1765495779,
"narHash": "sha256-MhA7wmo/7uogLxiewwRRmIax70g6q1U/YemqTGoFHlM=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "0010412d62a25d959151790968765a70c436598b",
"rev": "5635c32d666a59ec9a55cab87e898889869f7b71",
"type": "github"
},
"original": {
@ -69,24 +69,6 @@
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
@ -94,11 +76,11 @@
]
},
"locked": {
"lastModified": 1762296971,
"narHash": "sha256-Jyv3L5rrUYpecON+9zyFz2VqgTSTsIG35fXuCyuCQv0=",
"lastModified": 1765682243,
"narHash": "sha256-yeCxFV/905Wr91yKt5zrVvK6O2CVXWRMSrxqlAZnLp0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "34fe48801d2a5301b814eaa1efb496499d06cebc",
"rev": "58bf3ecb2d0bba7bdf363fc8a6c4d49b4d509d03",
"type": "github"
},
"original": {
@ -114,11 +96,11 @@
]
},
"locked": {
"lastModified": 1752413064,
"narHash": "sha256-bcWxBAAvf5hp0TmMbYrwU4SlBxc5sB/T2VsIBdX1gDk=",
"lastModified": 1762539883,
"narHash": "sha256-GvlAAIpM/iZtl/EtI+LTzEsQ2qlUkex9i4xRUZXmadM=",
"owner": "Lxtharia",
"repo": "minegrub-theme",
"rev": "040b163268be6e7cf743ba990177525dc47ed944",
"rev": "2fa2012472fbfcfea17b82655dd27456fa507ee7",
"type": "github"
},
"original": {
@ -138,11 +120,11 @@
]
},
"locked": {
"lastModified": 1762305918,
"narHash": "sha256-wVPT9kNpQH4PyRdhZH7oqBlBk8aoNMOYVcy4OzYBjh0=",
"lastModified": 1765785762,
"narHash": "sha256-lagKpVUJfcp8Duq4a9rAp4H3iBEnXk0EieYTTZl8Js8=",
"owner": "kaylorben",
"repo": "nixcord",
"rev": "9c6b54492dcee998fc5981e1a21b34b243e85d3e",
"rev": "d0bbc2feaacac65c692e4ed32ec4996257b8b21c",
"type": "github"
},
"original": {
@ -153,11 +135,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1762267440,
"narHash": "sha256-WHjEJ80oYbWyNu0dxysBs5oMlBc5w7YYzL1/UPj4iGo=",
"lastModified": 1764440730,
"narHash": "sha256-ZlJTNLUKQRANlLDomuRWLBCH5792x+6XUJ4YdFRjtO4=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "2e85ae1b7030df39269d29118b1f74944d0c8f15",
"rev": "9154f4569b6cdfd3c595851a6ba51bfaa472d9f3",
"type": "github"
},
"original": {
@ -168,11 +150,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1762111121,
"narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=",
"lastModified": 1765472234,
"narHash": "sha256-9VvC20PJPsleGMewwcWYKGzDIyjckEz8uWmT0vCDYK0=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4",
"rev": "2fbfb1d73d239d2402a8fe03963e37aab15abe8b",
"type": "github"
},
"original": {
@ -203,11 +185,11 @@
]
},
"locked": {
"lastModified": 1760998189,
"narHash": "sha256-ee2e1/AeGL5X8oy/HXsZQvZnae6XfEVdstGopKucYLY=",
"lastModified": 1765684837,
"narHash": "sha256-fJCnsYcpQxxy/wit9EBOK33c0Z9U4D3Tvo3gf2mvHos=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "5a7d18b5c55642df5c432aadb757140edfeb70b3",
"rev": "94d8af61d8a603d33d1ed3500a33fcf35ae7d3bc",
"type": "github"
},
"original": {
@ -233,17 +215,17 @@
},
"vicinae": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixpkgs"
]
],
"systems": "systems"
},
"locked": {
"lastModified": 1762271689,
"narHash": "sha256-pzlrIfOSk0MaEYNbhQ5gDKMA7XmrcuoJaEOP/IZ/dNk=",
"lastModified": 1765272078,
"narHash": "sha256-etv2HJA9OWvTkjnrjaNSqvebu9gWLIGPYb9PWr4qkfM=",
"owner": "vicinaehq",
"repo": "vicinae",
"rev": "9f202f5d1d445558605926bfdd6e1be7b6bdb4ef",
"rev": "32cf6b1f82e007cddba9c9ae037eff670219cd55",
"type": "github"
},
"original": {

View file

@ -41,13 +41,13 @@ in
betterSettings.enable = true;
betterUploadButton.enable = true;
blurNSFW.enable = true;
clearURLs.enable = true;
blurNsfw.enable = true;
clearUrLs.enable = true;
callTimer.enable = true;
consoleJanitor.enable = true;
copyEmojiMarkdown.enable = true;
userMessagesPronouns.enable = true;
reviewDB.enable = true;
reviewDb.enable = true;
# Vesktop exclusive
webRichPresence.enable = true;

View file

@ -3,10 +3,28 @@ let
inherit (lib) mkIf;
in
{
puzzlevision.apps.firefox = {
enable = true;
extensions = [
"uBlock0@raymondhill.net"
"ATBC@EasonWong"
"languagetool-webextension@languagetool.org"
"firefox-enpass@enpass.io"
"firefox@tampermonkey.net"
"wappalyzer@crunchlabz.com"
"{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}"
"{d49033ac-8969-488c-afb0-5cdb73957f41}"
];
};
programs.firefox = mkIf config.programs.firefox.enable {
# Required settings for Onebar
profiles.default.settings = {
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
# Fixes an issue regarding URL bar content cut-off
# https://git.gay/freeplay/Firefox-Onebar/issues/30
"browser.urlbar.trimHttps" = true;
};
};

View file

@ -0,0 +1,4 @@
{ ... }:
{
programs.ghostty.enable = true;
}

View file

@ -0,0 +1,9 @@
{ ... }:
{
puzzlevision.apps.zed = {
enable = true;
enable-nix = true;
enable-php = true;
enable-python = true;
};
}

View file

@ -9,36 +9,15 @@
./apps/firefox
./apps/vicinae
./apps/packettracer
./apps/ghostty
./apps/zed
./desktop/gnome
];
puzzlevision = {
themes.catppuccin.enable = true;
apps = {
zed.enable = true;
firefox = {
enable = true;
extensions = [
"uBlock0@raymondhill.net"
"ATBC@EasonWong"
"languagetool-webextension@languagetool.org"
"firefox-enpass@enpass.io"
"firefox@tampermonkey.net"
"wappalyzer@crunchlabz.com"
"{7a7a4a92-a2a0-41d1-9fd7-1e92480d612d}"
"{d49033ac-8969-488c-afb0-5cdb73957f41}"
];
};
};
cli = {
direnv.enable = true;
};
};
programs = {
ghostty.enable = true;
cli.direnv.enable = true;
};
sops.secrets.wakatime-cfg = {
@ -49,12 +28,11 @@
home.packages = with pkgs; [
## GENERAL
teams-for-linux
enpass
youtube-music
teams-for-linux
## EDITORS
apostrophe
jetbrains.phpstorm
obsidian
@ -68,5 +46,5 @@
shopware-cli
];
home.stateVersion = "25.05";
home.stateVersion = "25.11";
}

View file

@ -1,4 +1,45 @@
{ ... }:
{
puzzlevision.desktop.gnome.wallpaper = ../wallpapers/macchiato-waves.jpg;
pkgs,
...
}:
{
puzzlevision.desktop.gnome = {
enabled-extensions = with pkgs.gnomeExtensions; [
user-themes
blur-my-shell
appindicator
unite
color-picker
clipboard-history
vicinae
];
favorite-apps = [
"org.gnome.Nautilus.desktop"
"obsidian.desktop"
"firefox.desktop"
"dev.zed.Zed.desktop"
];
wallpaper = ../wallpapers/macchiato-waves.jpg;
};
dconf.settings = {
"org/gnome/shell/extensions/unite" = {
show-window-buttons = "never";
hide-window-titlebars = "maximized";
use-activities-text = false;
extend-left-box = false;
reduce-panel-spacing = false;
show-legacy-tray = false;
show-appmenu-button = false;
show-desktop-name = false;
enable-titlebar-actions = false;
restrict-to-primary-screen = false;
hide-activities-button = "never";
autofocus-windows = true;
notifications-position = "right";
};
};
}

View file

@ -13,7 +13,10 @@ let
in
{
options.${namespace}.apps.zed = {
enable = mkEnableOption "zed, the graphical editor from the future";
enable = mkEnableOption "Zed, the graphical editor from the future, with a sane base configuration.";
enable-nix = mkEnableOption "support for the Nix language, based on nixd, in Zed.";
enable-php = mkEnableOption "support for the PHP language, based on phpactor and pretty-php, in Zed.";
enable-python = mkEnableOption "support for the Python language, based on pylsp, in Zed.";
};
config = mkIf cfg.enable {
@ -21,6 +24,19 @@ in
enable = true;
userSettings = {
### Disable telemetry
telemetry = {
diagnostics = false;
metrics = false;
};
### Disable collaborative features
show_call_status_icon = false;
collaboration_panel.button = false;
### Disable AI features
disable_ai = true;
### Theme settings
icon_theme = mkForce {
dark = mkIf config.catppuccin.enable "Catppuccin Macchiato";
@ -32,19 +48,6 @@ in
light = mkIf config.catppuccin.enable "Catppuccin Latte (blue)";
};
### Disable telemetry
telemetry = {
diagnostics = false;
metrics = false;
};
### Remove useless features and stuff
show_call_status_icon = false;
collaboration_panel.button = false;
### Disable AI features entirely
disable_ai = true;
### Formatting and saving settings
formatter = "language_server";
format_on_save = "on";
@ -63,7 +66,7 @@ in
### Language specific configurations
languages = {
Nix = {
Nix = mkIf cfg.enable-nix {
language_servers = [
"nixd"
"!nil"
@ -77,7 +80,7 @@ in
tab_size = 2;
};
PHP = {
PHP = mkIf cfg.enable-php {
language_servers = [
"phpactor"
"!intelephense"
@ -98,14 +101,14 @@ in
html = true;
svelte = true;
scss = true;
biome = true; # Formatting and utility tool, like ESlint, prettier, etc...
oxc = true;
# Languages
nix = true;
php = true;
nix = mkIf cfg.enable-nix true;
php = mkIf cfg.enable-php true;
sql = true;
toml = true;
pylsp = true; # Python
pylsp = mkIf cfg.enable-python true; # Python
fish = true;
# Docker
@ -117,8 +120,7 @@ in
catppuccin-icons = mkIf config.catppuccin.enable true;
# Other
discord-presence = true;
git-firefly = true;
discord-presence = mkIf config.programs.nixcord.enable true;
wakatime = true;
};
};
@ -133,15 +135,17 @@ in
}
];
extraPackages = with pkgs; [
### Nix
extraPackages =
with pkgs;
[ oxlint ]
++ lib.optionals cfg.enable-nix [
nixd
nixfmt-rfc-style
### Python
]
++ lib.optionals cfg.enable-python [
python3Packages.python-lsp-server
### PHP
]
++ lib.optionals cfg.enable-php [
php
phpPackages.composer
pretty-php

View file

@ -7,7 +7,7 @@
...
}:
let
inherit (lib) mkIf mkOption;
inherit (lib) mkIf;
inherit (self) namespace;
inherit (self.lib) mkOpt;
@ -15,58 +15,21 @@ let
in
{
options.${namespace}.desktop.gnome = with lib.types; {
enabled-extensions = mkOption {
type = listOf package;
default = with pkgs.gnomeExtensions; [
enabled-extensions = mkOpt (listOf package) (with pkgs.gnomeExtensions; [
user-themes
blur-my-shell
appindicator
unite
color-picker
clipboard-history
];
example = [
dash-to-dock
blur-my-shell
];
description = "Specify gnome extensions to install.";
};
favorite-apps = mkOption {
type = listOf str;
default = [
]) "Specify gnome extensions to install.";
favorite-apps = mkOpt (listOf str) [
"org.gnome.Nautilus.desktop"
"obsidian.desktop"
"firefox.desktop"
"dev.zed.Zed.desktop"
];
example = [
"org.gnome.Nautilus.desktop"
"obsidian.desktop"
];
description = "Specify your favorite apps (sorted left to right).";
};
extensions = {
unite = {
show-window-buttons = mkOption {
type = str;
default = "never";
example = "never | maximized | tiled | both | always";
description = "Specify when Unite should display window buttons within the top panel.";
};
hide-window-titlebars = mkOption {
type = str;
default = "maximized";
example = "never | maximized | tiled | both | always";
description = "Specify when Unite should hide window titlebars.";
};
};
blur-my-shell = {
enable-blur = mkOpt bool false "Whether to enable blur-my-shell application blur.";
};
};
wallpaper =
mkOpt path ../wallpapers/building_top_sit_dusk.jpg
"Specify the path of your prefered Gnome wallpaper.";
] "Specify your favorite apps (sorted left to right).";
wallpaper = mkOpt path ./wallpaper.jpg "Specify the path of your prefered Gnome wallpaper.";
};
config = mkIf osConfig.${namespace}.desktop.gnome.enable {
@ -78,33 +41,6 @@ in
enabled-extensions = lib.forEach cfg.enabled-extensions (x: x.extensionUuid);
disabled-extensions = [ ]; # Make sure none of our extensions are disabled on system rebuild
};
"org/gnome/shell/extensions/unite" =
mkIf (builtins.elem pkgs.gnomeExtensions.unite cfg.enabled-extensions)
{
show-window-buttons = cfg.extensions.unite.show-window-buttons;
hide-window-titlebars = cfg.extensions.unite.hide-window-titlebars;
use-activities-text = false;
extend-left-box = false;
reduce-panel-spacing = false;
show-legacy-tray = false;
show-appmenu-button = false;
show-desktop-name = false;
enable-titlebar-actions = false;
restrict-to-primary-screen = false;
hide-activities-button = "never";
autofocus-windows = true;
notifications-position = "right";
};
"org/gnome/shell/extensions/blur-my-shell/applications" =
mkIf cfg.extensions.blur-my-shell.enable-blur
{
blur = true;
sigma = 30;
opacity = 230;
enable-all = true;
dynamic-opacity = false;
};
"org/gnome/desktop/background" = {
picture-uri = "file://${cfg.wallpaper}";
picture-uri-dark = "file://${cfg.wallpaper}";

View file

Before

Width:  |  Height:  |  Size: 2.8 MiB

After

Width:  |  Height:  |  Size: 2.8 MiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 702 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 MiB

View file

@ -17,7 +17,7 @@ let
inherit (self.lib) dirToModuleList;
# The identifier of the current system type, e.g. "x86_64-linux" or "aarch64-darwin"
system = pkgs.system;
system = pkgs.stdenv.hostPlatform.system;
cfg = config.${namespace}.users;
userSubmodule = types.submodule {

View file

@ -11,6 +11,12 @@
programs.steam.enable = true;
# Create some helpful groups for development
# and permission related reasons.
users.groups = {
www-data.gid = 33;
};
puzzlevision = {
users.jo = {
enable = true;
@ -18,26 +24,21 @@
extraGroups = [
"wheel"
"docker"
"www-data"
];
};
archetypes.laptop.enable = true;
system.kernel.version = "linuxPackages_6_17";
};
boot = {
# Grub configuration
loader.grub = {
# Minecraft bootloader theme
minegrub-theme = {
boot.loader.grub.minegrub-theme = {
enable = true;
splash = "100% Flakes!";
background = "background_options/1.18 - [Caves And Cliffs 2].png";
boot-options-count = 4;
};
};
};
networking.hostName = "puzzlevision";
system.stateVersion = "25.11";
system.stateVersion = "26.05";
}

View file

@ -1,9 +1,12 @@
{
pkgs,
lib,
inputs,
config,
...
}:
let
inherit (lib) mkIf;
in
{
imports = [
inputs.nixos-hardware.nixosModules.common-pc-laptop-ssd
@ -26,31 +29,27 @@
blacklistedKernelModules = [
"rtw88_8821ce" # Block the default network-card driver.
];
};
# Enable OpenGL and install additional drivers for intel video acceleration
hardware = {
graphics = {
enable = true;
extraPackages = with pkgs; [
intel-ocl
intel-media-driver
libva-vdpau-driver
libvdpau-va-gl
];
# Increase swappiness, if ZRAM swap is enabled,
# as it doesn't come with the same "speed" caveats as standard swap.
kernel.sysctl = mkIf config.zramSwap.enable {
"vm.swappiness" = 140;
};
};
# Broader firmware and hardware support
hardware = {
enableAllFirmware = true;
enableAllHardware = true;
};
environment.sessionVariables = {
LIBVA_DRIVER_NAME = "iHD";
# Enable ZRAM
zramSwap = {
enable = true;
priority = 100;
};
# Enable ZRAM and disable standard SWAP
zramSwap.enable = true;
# Disable standard swap
swapDevices = [ ];
services = {
@ -67,7 +66,7 @@
CPU_MIN_PERF_ON_AC = 0;
CPU_MAX_PERF_ON_AC = 100;
CPU_MIN_PERF_ON_BAT = 0;
CPU_MAX_PERF_ON_BAT = 30;
CPU_MAX_PERF_ON_BAT = 40;
};
};
@ -75,17 +74,9 @@
power-profiles-daemon.enable = false;
# Kill processes before they can cause an OOM exception
earlyoom = {
enable = true;
};
earlyoom.enable = true;
# Enable Thermald for improved overheating protection
thermald.enable = true;
# Instruct XServer to use the correct video drivers
xserver.videoDrivers = [
"i915"
"intel"
];
};
}