Compare commits

...

160 Commits

Author SHA1 Message Date
16980bf9f4 migrate to 25.11; remove teamspeak and jellyfin player due to webkit deprecation; 2025-11-28 00:42:44 +00:00
4fc8b0f4fa ignore container failures; lets try vesktop again; update resharper code 2025-11-26 17:29:22 +00:00
3a9d27adb8 move lsfg to gaming; add notes for 24.11 release; 2025-11-18 22:48:25 +00:00
079ba8a9d5 add oomd; swap back from tlp to power profiles; update resharper code; remove more mozilla bs 2025-11-17 16:01:31 +00:00
48c40f8124 update 2025-11-12 21:13:48 +00:00
c3171bd792 remove nftables (linux uses this by default now anyways i think?)
add busybox since its basically expected by some programs (comes with xz)
make virtualisation a proper module so i can flip between docker and podman (i will make podman work one day i swear)
add waydroid back in
electrum is busted for now
make resharper a bit more modular
add new firefox bs
2025-11-07 11:28:21 +00:00
a64a137724 Merge branch 'master' of https://git.worble.xyz/worble/nixos 2025-10-27 13:57:04 +00:00
d776ce0667 update ff profile 2025-10-27 13:56:41 +00:00
70a7c6d30a add nix path; remove openrgb due to build issues; use unstable teams cause mic issues; 2025-10-27 13:56:33 +00:00
f648311d04 flake update 2025-10-22 13:02:41 +01:00
8f5a18577f change to binary wrapper 2025-10-21 18:49:01 +01:00
4a49961bc0 omg i fixed vscode resharper i am a nix GOD 2025-10-21 18:23:20 +01:00
9f51eaf5fc finally embrace the sidebar revamp 2025-10-21 17:19:59 +01:00
bfc2435b43 add mkvtoolnix; remove kodi; move mangohud to gaming; playing with vscode resharper-code; 2025-10-21 11:33:52 +01:00
86abbf360e minor updates to firefox; change battery to balance power; tried adding resharper but doesnt work lmao 2025-10-15 14:37:23 +01:00
f33924569f update flake.lock 2025-10-15 13:30:09 +01:00
72558d3d07 fix flake paths 2025-10-14 21:58:42 +01:00
03f7b779bd Merge branch 'master' of https://git.worble.xyz/worble/nixos 2025-10-14 21:55:49 +01:00
21f1600fdc give each device its own flake.nix to stop constant lock file changes causing merge issues 2025-10-14 21:54:43 +01:00
c55f1eb9d7 update flake.lock 2025-10-14 21:50:02 +01:00
c7d7cb845b wrap wine and umu to avoid flooding session with variables 2025-10-14 14:31:38 +01:00
30441810be update flake.lock 2025-10-14 12:56:21 +01:00
531fafcb52 merge 2025-10-14 12:54:50 +01:00
89a15a63e8 minor cleanup; use gamescope default args instead of wrapper 2025-10-13 23:54:00 +01:00
66e7e4fdc0 update flake.lock 2025-10-13 21:38:47 +01:00
f66ef91e85 move ntsync to the correct option; make extra mpv stuff a config option; add some gaming helper scripts + default env vars 2025-10-13 17:59:46 +01:00
d5d9396b6d update flake.lock 2025-10-12 23:35:30 +01:00
fb5b7abbd4 update flake.lock 2025-10-12 01:38:26 +01:00
4684925c97 update flake.lock 2025-10-10 23:43:39 +01:00
c4b4e682b1 fix gnome; swap to appindicator 2025-10-10 23:39:06 +01:00
950fe60383 add tablet modes for firefox and gnome 2025-10-10 23:18:42 +01:00
6c69dab6fa remove random files 2025-10-10 16:26:37 +01:00
8a3698ce15 add gnome for starlite 2025-10-10 16:24:42 +01:00
869c6b4707 merge 2025-10-10 14:16:28 +01:00
25158bedf1 move more networking stuff to networking module; add ntsync to kernel for tuxedo; use unstable for wine 2025-10-10 14:15:24 +01:00
363f42c829 update flake.lock 2025-10-10 10:19:44 +01:00
38f691cacd update flake.lock 2025-10-09 23:29:34 +01:00
e592ca5e0a update flake.lock 2025-10-08 22:13:00 +01:00
bf6f379a4f merge 2025-10-08 22:11:29 +01:00
6378246c2c update flake.lock 2025-10-08 22:00:33 +01:00
300c36245e update flake.lock 2025-10-07 22:03:10 +01:00
9ef91f7ab5 update flake.lock 2025-10-05 16:56:04 +01:00
249afa0b65 update flake.lock 2025-10-04 00:20:42 +01:00
730b115bf8 update flake.lock 2025-10-02 23:08:15 +01:00
499900014e update flake.lock 2025-10-02 00:20:16 +01:00
80c13f0ee3 update flake.lock 2025-09-30 22:27:46 +01:00
7049373384 update flake.lock 2025-09-29 23:49:31 +01:00
12cab79679 update flake.lock 2025-09-28 00:52:59 +01:00
cf9b2a0cdb update flake.lock 2025-09-27 01:03:16 +01:00
6a45fca8d5 refactor and modularize base.nix futher; use default.nix when possible 2025-09-26 11:49:00 +01:00
db9826339f update flake.lock 2025-09-25 00:01:53 +01:00
00b67e55bc update flake.lock 2025-09-23 23:11:19 +01:00
3d037d2dbd update flake.lock 2025-09-22 23:34:19 +01:00
7adcf7baa5 update flake.lock 2025-09-21 00:08:49 +01:00
ac5216413e back to docker; add npmrc for not executing scripts; update hx script; 2025-09-20 21:12:50 +01:00
93cee2d49a update flake.lock 2025-09-19 23:19:43 +01:00
0a9037abaa update flake.lock 2025-09-18 23:47:14 +01:00
49bca53aa7 update flake.lock 2025-09-17 23:58:51 +01:00
3fe1471c0f update flake.lock 2025-09-16 23:11:45 +01:00
226188b263 update flake.lock 2025-09-12 23:14:58 +01:00
d3bf4cce17 update flake.lock 2025-09-11 21:07:47 +01:00
a8480384e7 update flake.lock 2025-09-10 23:14:41 +01:00
a60c7b8ca5 update flake.lock 2025-09-09 23:11:36 +01:00
a3073c0895 update flake.lock 2025-09-08 00:30:28 +01:00
8b472eae63 update flake.lock 2025-09-06 23:20:17 +01:00
190c58639f use zramswap instead of file; use sudo-rs; remove discover; readd docker compose; remove redundant comments (I cant believe fullscreen finally works and i didnt even change anything); joplin desktop needs unstable; 2025-09-04 17:10:42 +01:00
03efdeddc5 update flake.lock 2025-09-02 23:05:24 +01:00
edd7dbccfa update flake.lock 2025-08-31 00:18:58 +01:00
41dc3f8112 update flake.lock 2025-08-28 00:12:14 +01:00
e7233faed1 update flake.lock 2025-08-25 02:31:50 +01:00
dd4ca5a69e lots of updates; playing with wine 2025-08-23 14:51:32 +01:00
cd1aac83b2 update flake.lock 2025-08-23 00:40:05 +01:00
20d5a43dd7 update flake.lock 2025-08-20 23:17:35 +01:00
6ecc69eb2e update flake.lock 2025-08-15 23:16:57 +01:00
beac80516d update flake.lock 2025-08-15 00:26:00 +01:00
d6d6603df6 update flake.lock 2025-08-13 23:04:41 +01:00
4e6e74b2f8 update flake.lock 2025-08-12 00:57:53 +01:00
03e1cf00a1 update flake.lock 2025-08-09 01:16:47 +01:00
ab7b90bcb2 update flake.lock 2025-08-08 02:06:56 +01:00
e230dea138 update flake.lock 2025-08-05 23:23:44 +01:00
19fa7c2fc1 update flake.lock 2025-08-05 01:20:59 +02:00
c5d34c86b8 update flake.lock 2025-08-03 01:00:07 +01:00
3b557449c9 update flake.lock 2025-08-02 00:58:38 +01:00
074962e7a9 move mpv to own folder; remove unneccessary wayland support override 2025-08-01 10:12:30 +01:00
e4b45eeb4a add lsfg; use programs gpu screen recorder; remove unused programs; biome lsp is way out of date; 2025-08-01 09:55:42 +01:00
36264583b2 update flake.lock 2025-07-31 23:43:10 +01:00
c2dd8138aa update flake.lock 2025-07-31 14:52:13 +01:00
7d0c3d2751 update flake.lock 2025-07-30 22:36:23 +01:00
7a16c9dc40 update flake.lock 2025-07-28 00:12:45 +02:00
b7ada15fb9 update flake.lock 2025-07-26 01:02:02 +02:00
bd5507a366 update flake.lock 2025-07-22 23:56:53 +02:00
d8538369ef update flake.lock 2025-07-19 15:28:17 +02:00
8233861699 enable chrony as default nts provider; use automatic timezond for timezone; 2025-07-19 15:22:52 +02:00
b9e7e22ddd lots of changes yes im bad i should commit more often sue me 2025-07-15 09:58:45 +01:00
c08da164ac update flake.lock 2025-07-14 23:27:27 +01:00
2fbd529e59 update flake.lock 2025-07-13 00:12:00 +01:00
0dec323af5 update flake.lock 2025-07-11 23:31:39 +01:00
27b3ec6a46 update flake.lock 2025-07-10 00:14:07 +01:00
4c06e18113 update flake.lock 2025-07-06 00:03:18 +01:00
617cf08fc8 update flake.lock 2025-07-03 23:59:28 +01:00
761000913a update flake.lock 2025-07-01 00:23:51 +01:00
e5503bbf58 update flake.lock 2025-06-30 00:26:28 +01:00
a997dee6ba update flake.lock 2025-06-30 00:03:07 +01:00
739518cdac merge 2025-06-30 00:01:06 +01:00
72ae66c403 update flake.lock 2025-06-26 00:20:31 +01:00
fe9531c732 update flake.lock 2025-06-23 23:51:20 +01:00
a1f96ee51d update flake.lock 2025-06-23 00:25:29 +01:00
7b4c789cae update flake.lock 2025-06-21 00:43:28 +01:00
52d33c1204 update flake.lock 2025-06-19 23:27:55 +01:00
ed349bd4e6 yazi: manager -> mgr
helix: add ruff for python
2025-06-19 22:36:42 +01:00
55c0df89fd make nix index shallow
readd distrobox
add ts6-client
setup vscode for  python
2025-06-17 19:20:29 +01:00
6981f2cee2 update flake.lock 2025-06-16 22:34:22 +01:00
5a63b14c5b update flake.lock 2025-06-16 00:06:24 +01:00
730bfc0d28 update flake.lock 2025-06-12 23:41:23 +01:00
56467e6f40 update flake.lock 2025-06-10 23:28:00 +01:00
9fed42aba1 update flake.lock 2025-06-09 22:39:16 +01:00
c2472925bf update flake.lock 2025-06-08 00:09:59 +01:00
e192b9401d update flake.lock 2025-06-07 00:40:41 +01:00
60b79b65b5 update flake.lock 2025-06-06 00:17:28 +01:00
55a3afc085 update flake.lock 2025-06-04 23:31:12 +01:00
7acbaa0a6d update flake.lock 2025-06-03 14:12:14 +01:00
347cc444b9 update flake.lock 2025-06-03 00:17:04 +01:00
5159cf50c9 add shell command to fix nix when it gets in a tizz; add nix-index so fish no longer throws a wobbly when you call a commaand that doesnt exist; remove shell format since bash ide can now use it; add packages for gamescope to steam 2025-06-02 14:03:19 +01:00
2c1dfb7eb8 remove manual blesh in favor of bash.blesh.enable 2025-06-02 13:27:49 +01:00
2b1fa4df5b add fish 2025-06-02 13:26:56 +01:00
f72b5ef8a8 update flake.lock 2025-06-01 21:38:43 +01:00
c1ad79003d update flake.lock 2025-05-30 23:46:51 +01:00
f9e672cb8f remove tux since its broken for now; remove unneeded vscode exts; use initextraa instead of bashrc 2025-05-30 10:50:34 +01:00
ae21fe1426 update flake.lock 2025-05-29 23:21:44 +01:00
0e6929eeed update flake.lock 2025-05-28 23:13:45 +01:00
7767ff77ba fix emoji on firefox; use unstable joplin 2025-05-28 17:44:07 +01:00
a04a6b81f1 update flake.lock 2025-05-28 17:26:04 +01:00
57901ae14e update flake.lock 2025-05-27 23:24:06 +01:00
73325a848c update flake.lock 2025-05-26 21:32:46 +01:00
7da24cbbfb enable gamescope 2025-05-22 22:19:43 +01:00
fc60f584cf remove unused godot code 2025-05-22 15:18:52 +01:00
95608f2bfa add pipewire auto gain control block; update to 25.05; add wireshark gui; ryubing->stable; nerd-fonts new packaging; godot-mono->stable; update vscode 2025-05-22 15:18:30 +01:00
64eae63335 update flake.lock 2025-05-22 10:33:26 +01:00
f34bf9c853 update flake.lock 2025-05-22 10:29:57 +01:00
ce675dd168 update flake.lock 2025-05-21 21:07:25 +01:00
aa9a9df476 update flake.lock 2025-05-20 23:37:43 +01:00
32355dd7ee update flake.lock 2025-05-19 22:17:31 +01:00
218f8fa0e7 update flake.lock 2025-05-16 23:04:41 +01:00
3466a8aba0 update flake.lock 2025-05-15 00:08:52 +01:00
72cbcd5551 enable wireshark; add retry on systemd service; 2025-05-14 16:09:26 +01:00
340a2ab92f update flake.lock 2025-05-14 00:26:34 +01:00
6046f90c81 update flake.lock 2025-05-13 00:22:48 +01:00
3221c78b23 update flake.lock 2025-05-12 00:59:34 +01:00
ee264ae42d update flake.lock 2025-05-10 01:52:06 +01:00
8f5e6d6c10 update flake.lock 2025-05-08 00:26:42 +01:00
f83178aa06 update flake.lock 2025-05-06 23:52:38 +01:00
9c35d324b9 update flake.lock 2025-05-05 00:29:27 +01:00
e8ee2672c9 update flake.lock 2025-05-04 00:49:09 +01:00
82cbe88da2 update flake.lock 2025-05-03 00:34:26 +01:00
3aa4557971 add c# support to hx 2025-05-01 21:48:06 +01:00
18c9a5d628 update flake.lock 2025-04-30 23:34:17 +01:00
dbbfc3d8ff update flake.lock 2025-04-30 13:13:22 +01:00
769dc917b5 update flake.lock 2025-04-30 00:29:08 +01:00
5e771a9c2c always pull before updating; commit lock file if changed; add inputs to gaming dev; change vscode repo names 2025-04-29 21:57:03 +01:00
632a1f13c5 update flake.lock 2025-04-29 21:54:19 +01:00
46 changed files with 1479 additions and 767 deletions

View File

@@ -0,0 +1,13 @@
{ ... }:
{
imports = [
./fonts.nix
./location-time.nix
./networking.nix
./nix-settings.nix
./oomd.nix
./pipewire.nix
./programs.nix
];
}

View File

@@ -1,12 +1,15 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
fonts.enableDefaultPackages = true; fonts = {
fonts.packages = with pkgs; [ enableDefaultPackages = true;
noto-fonts fontconfig.useEmbeddedBitmaps = true;
noto-fonts-cjk-sans packages = with pkgs; [
noto-fonts-cjk-serif noto-fonts
]; noto-fonts-cjk-sans
noto-fonts-cjk-serif
];
};
# Select internationalisation properties. # Select internationalisation properties.
i18n = { i18n = {

View File

@@ -1,43 +0,0 @@
{ pkgs, lib, ... }:
let
kwin = lib.concatStringsSep " " [
"${lib.getBin pkgs.kdePackages.kwin}/bin/kwin_wayland"
"--no-global-shortcuts"
"--no-kactivities"
"--no-lockscreen"
"--locale1"
"--inputmethod maliit-keyboard"
];
in
{
services.xserver.enable = true; # optional
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
settings = {
Wayland = {
CompositorCommand = kwin;
};
};
};
services.desktopManager.plasma6.enable = true;
# For cursor in steam?
xdg.icons.fallbackCursorThemes = [ "breeze_cursors" ];
environment.systemPackages = with pkgs;
[ maliit-keyboard ] ++ (with kdePackages; [
sddm-kcm
plasma-disks
partitionmanager
filelight
ffmpegthumbs
kcalc
]);
}

View File

@@ -0,0 +1,14 @@
{ ... }:
{
# Set your time zone.
# time.timeZone = "Europe/London";
services.automatic-timezoned.enable = true;
services.chrony = {
enable = true;
};
services.geoclue2 = {
enable = true;
geoProviderUrl = "https://api.beacondb.net/v1/geolocate";
};
}

View File

@@ -0,0 +1,41 @@
{ pkgs, ... }:
{
# networking.hostName = "nixos"; # Define your hostname.
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking = {
networkmanager = {
# Easiest to use and most distros use this by default.
enable = true;
wifi.powersave = false;
};
firewall = {
enable = true;
};
};
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Open ports in the firewall.
# 443 Helldivers crashes internet otherwise
# networking.firewall.allowedTCPPorts = [ 443 ];
# networking.firewall.allowedUDPPorts = [ 443 ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Block list
# networking.stevenblack.enable = true;
# services.resolved.enable = true;
services.mullvad-vpn = {
enable = true;
package = pkgs.mullvad-vpn;
};
}

View File

@@ -1,4 +1,4 @@
{ ... }: { inputs, ... }:
{ {
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
@@ -6,11 +6,13 @@
nix.settings.auto-optimise-store = true; nix.settings.auto-optimise-store = true;
nix.gc.automatic = true; nix.gc.automatic = true;
nix.gc.options = "--delete-older-than 7d"; nix.gc.options = "--delete-older-than 7d";
# https://github.com/nix-community/nixd/blob/main/nixd/docs/configuration.md
nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
# programs.nix-ld = { programs.nix-ld = {
# enable = true; enable = true;
# # libraries = pkgs.steam-run.fhsenv.args.multiPkgs pkgs; # libraries = pkgs.steam-run.fhsenv.args.multiPkgs pkgs;
# libraries = pkgs.appimageTools.defaultFhsEnvArgs.targetPkgs pkgs; # libraries = pkgs.appimageTools.defaultFhsEnvArgs.targetPkgs pkgs;
# }; };
} }

View File

@@ -0,0 +1,10 @@
{ ... }:
{
systemd.oomd = {
enable = true;
enableRootSlice = true;
enableSystemSlice = true;
enableUserSlices = true;
};
}

View File

@@ -0,0 +1,35 @@
{ ... }:
{
# Enable sound.
# hardware.pulseaudio.enable = true;
# OR
services.pipewire = {
enable = true;
pulse.enable = true;
extraConfig.pipewire-pulse = {
"10-prevent-agc" = {
"pulse.rules" = [
{
matches = [
{ "application.process.binary" = "chrome"; }
{ "application.process.binary" = "Discord"; }
{ "application.process.binary" = "teams"; }
{ "application.process.binary" = "electron"; }
{ "application.process.binary" = "skypeforlinux"; }
{ "application.process.binary" = "telegram-desktop"; }
{ "application.process.binary" = "vivaldi"; }
{ "application.process.binary" = "chromium"; }
{ "application.process.binary" = "zoom"; }
];
actions = {
quirks = [
"block-source-volume"
];
};
}
];
};
};
};
}

View File

@@ -0,0 +1,37 @@
{ pkgs, ... }:
{
security.sudo-rs.enable = true;
services.fwupd.enable = true;
services.flatpak.enable = true;
programs.bash.blesh.enable = true;
programs.fish.enable = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# utils
uutils-coreutils-noprefix
vim
curl
inetutils
dig
exfatprogs
rar
zstd
p7zip
busybox
libva-utils
smartmontools
appimage-run
# dicts
nuspell
hunspellDicts.en-gb-large
# For cursor in steam?
xsettingsd
xorg.xrdb
];
}

View File

@@ -5,89 +5,24 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
imports = imports = [ ./base ];
[
./base/nix-settings.nix
./base/fonts.nix
./base/kde.nix
];
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernelPackages = pkgs.linuxPackages_latest;
swapDevices = [{
device = "/var/lib/swapfile";
size = 16 * 1024;
}];
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
hardware.enableRedistributableFirmware = true; hardware.enableRedistributableFirmware = true;
hardware.enableAllFirmware = true; hardware.enableAllFirmware = true;
# networking.hostName = "nixos"; # Define your hostname. # Disks / Swap / etc
# Pick only one of the below networking options. # swapDevices = [{
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. # device = "/var/lib/swapfile";
networking.networkmanager = { # size = 16 * 1024; # 16 GB
# Easiest to use and most distros use this by default. # }];
enable = true; zramSwap.enable = true; # Creates a zram block device and uses it as a swap device
wifi.powersave = false;
};
# Set your time zone.
time.timeZone = "Europe/London";
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
# hardware.pulseaudio.enable = true;
# OR
services.pipewire = {
enable = true;
pulse.enable = true;
};
services.fstrim.enable = true; services.fstrim.enable = true;
# services.resolved.enable = true;
services.mullvad-vpn = {
enable = true;
package = pkgs.mullvad-vpn;
};
services.fwupd.enable = true;
services.geoclue2 = {
enable = true;
geoProviderUrl = "https://api.beacondb.net/v1/geolocate";
};
services.flatpak.enable = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs;
[
# utils
vim
curl
inetutils
rar
libva-utils
smartmontools
appimage-run
# dicts
nuspell
hunspellDicts.en-gb-large
# For cursor in steam?
xsettingsd
xorg.xrdb
];
# Some programs need SUID wrappers, can be configured further or are # Some programs need SUID wrappers, can be configured further or are
# started in user sessions. # started in user sessions.
@@ -102,16 +37,6 @@
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
# services.openssh.enable = true; # services.openssh.enable = true;
# Open ports in the firewall.
# 443 Helldivers crashes internet otherwise
# networking.firewall.allowedTCPPorts = [ 443 ];
# networking.firewall.allowedUDPPorts = [ 443 ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# Block list
# networking.stevenblack.enable = true;
# Copy the NixOS configuration file and link it from the resulting system # Copy the NixOS configuration file and link it from the resulting system
# (/run/current-system/configuration.nix). This is useful in case you # (/run/current-system/configuration.nix). This is useful in case you
# accidentally delete configuration.nix. # accidentally delete configuration.nix.
@@ -135,5 +60,4 @@
# #
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
system.stateVersion = "24.05"; # Did you read the comment? system.stateVersion = "24.05"; # Did you read the comment?
} }

View File

@@ -4,18 +4,40 @@
hardware.graphics.enable32Bit = true; # For 32 bit applications hardware.graphics.enable32Bit = true; # For 32 bit applications
hardware.steam-hardware.enable = true; hardware.steam-hardware.enable = true;
programs.gamemode.enable = true;
programs.gamescope = {
enable = true;
# capSysNice = true;
args = [
"-H 1080"
];
};
programs.steam = { programs.steam = {
enable = true; enable = true;
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server gamescopeSession.enable = true;
#gamescopeSession.enable = true;
protontricks.enable = true; protontricks.enable = true;
extraCompatPackages = [ pkgs.proton-ge-bin ]; extraCompatPackages = [ pkgs.proton-ge-bin ];
package = pkgs.steam.override {
extraPkgs = pkgs': with pkgs'; [
xorg.libXcursor
xorg.libXi
xorg.libXinerama
xorg.libXScrnSaver
libpng
libpulseaudio
libvorbis
stdenv.cc.cc.lib # Provides libstdc++.so.6
libkrb5
keyutils
];
};
}; };
programs.gamemode.enable = true;
programs.gamescope.enable = true;
# ensure users who need access to this have `cdrom` as `extraGroups` programs.cdemu.enable = true; # Remember to add users to the cdrom group for this to work
# Wait for https://github.com/NixOS/nixpkgs/pull/397358 to be in stable to reenable
programs.cdemu.enable = true; environment.systemPackages = with pkgs;[
lsfg-vk
lsfg-vk-ui
];
} }

View File

@@ -0,0 +1,27 @@
{ pkgs, config, lib, ... }:
with lib;
{
options.gnome.tablet = mkOption {
type = types.bool;
default = false;
};
config = {
services.xserver.enable = true;
services.xserver.displayManager.gdm.enable = true;
services.xserver.desktopManager.gnome.enable = true;
# To disable installing GNOME's suite of applications
# and only be left with GNOME shell.
# services.gnome.core-apps.enable = false;
services.gnome.core-developer-tools.enable = false;
services.gnome.games.enable = false;
environment.gnome.excludePackages = with pkgs; [ gnome-tour gnome-user-docs ];
environment.systemPackages = with pkgs.gnomeExtensions; [
appindicator
] ++ optionals config.gnome.tablet [
touchup
];
};
}

View File

@@ -0,0 +1,24 @@
{ pkgs, ... }:
{
# Install Japanese IME MOZC
i18n.inputMethod = {
enable = true;
type = "fcitx5";
# ibus = {
# engines = with pkgs.ibus-engines; [ mozc anthy ];
# panel = "${pkgs.kdePackages.plasma-desktop}/libexec/kimpanel-ibus-panel";
# };
fcitx5 = {
waylandFrontend = true;
addons = with pkgs; [
fcitx5-mozc
fcitx5-anthy
];
};
};
environment.systemPackages = [
pkgs.kdePackages.fcitx5-configtool
];
}

View File

@@ -0,0 +1,29 @@
{ pkgs, ... }:
{
services.xserver.enable = true; # optional
# Configure keymap in X11
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
};
services.desktopManager.plasma6.enable = true;
environment.plasma6.excludePackages = [ pkgs.kdePackages.discover ];
# For cursor in steam?
# xdg.icons.fallbackCursorThemes = [ "breeze_cursors" ];
programs.partition-manager.enable = true;
environment.systemPackages = with pkgs.kdePackages;[
sddm-kcm
plasma-disks
filelight
ffmpegthumbs
kcalc
];
}

View File

@@ -1,21 +1,21 @@
{ ... }: { ... }:
{ {
services.power-profiles-daemon.enable = false; services.power-profiles-daemon.enable = true;
services.tlp = { # services.tlp = {
enable = true; # enable = true;
settings = { # settings = {
RESTORE_DEVICE_STATE_ON_STARTUP = 1; # RESTORE_DEVICE_STATE_ON_STARTUP = 1;
USB_AUTOSUSPEND = 0; # USB_AUTOSUSPEND = 0;
PLATFORM_PROFILE_ON_AC = "performance"; # PLATFORM_PROFILE_ON_AC = "performance";
PLATFORM_PROFILE_ON_BAT = "low-power"; # PLATFORM_PROFILE_ON_BAT = "low-power";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; # CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; # CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power";
CPU_BOOST_ON_AC = 1; # CPU_BOOST_ON_AC = 1;
CPU_BOOST_ON_BAT = 0; # CPU_BOOST_ON_BAT = 0;
}; # };
}; # };
# Enable touchpad support (enabled default in most desktopManager). # Enable touchpad support (enabled by default in most desktopManagers).
services.libinput.enable = true; services.libinput.enable = true;
} }

View File

@@ -1,25 +1,53 @@
{ pkgs, ... }: { pkgs, lib, config, ... }:
with lib;
{ {
virtualisation = { options.virtualisation.containerManagement = mkOption {
containers = { type = types.enum [ "docker" "podman" ];
# Enable common container config files in /etc/containers default = "docker";
enable = true; };
};
libvirtd = { config = {
enable = true; virtualisation = {
qemu.vhostUserPackages = [ pkgs.virtiofsd ]; containers = {
}; # Enable common container config files in /etc/containers
# remember to add the necessary users to the docker group enable = true;
docker = { };
enable = true; libvirtd = {
storageDriver = "btrfs"; enable = true;
}; qemu = {
# waydroid = { vhostUserPackages = [ pkgs.virtiofsd ];
# enable = true; };
# }; };
# remember to add the necessary users to the podman group
podman = {
enable = if (config.virtualisation.containerManagement == "podman") then true else false;
dockerSocket.enable = true;
dockerCompat = true;
defaultNetwork.settings.dns_enabled = true;
};
# remember to add the necessary users to the docker group
docker = {
enable = if (config.virtualisation.containerManagement == "docker") then true else false;
storageDriver = "btrfs";
};
waydroid = {
enable = true;
package = pkgs.waydroid-nftables;
};
};
programs.virt-manager.enable = true;
environment.systemPackages = with pkgs;[
waydroid-helper
] ++ optionals (config.virtualisation.containerManagement == "podman") [
docker-compose
# podman-compose
podman-tui
podman-desktop
] ++ optionals (config.virtualisation.containerManagement == "docker") [
lazydocker
];
}; };
programs.virt-manager.enable = true;
# environment.systemPackages = with pkgs;[ podman-compose ];
} }

View File

@@ -1,28 +1,32 @@
{ {
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11?shallow=1"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11?shallow=1";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable?shallow=1"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable?shallow=1"; # use by inputs.nixpkgs-unstable.legacyPackages."${pkgs.stdenv.hostPlatform.system}".[package name]
nixos-hardware.url = "github:NixOS/nixos-hardware/master?shallow=1";
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions?shallow=1";
home-manager = { home-manager = {
url = "github:nix-community/home-manager/release-24.11?shallow=1"; url = "github:nix-community/home-manager/release-25.11?shallow=1";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
disko = {
url = "github:nix-community/disko?shallow=1"; nix-index-database = {
url = "github:nix-community/nix-index-database?shallow=1";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions?shallow=1";
system-manager = { system-manager = {
url = "github:numtide/system-manager?shallow=1"; url = "github:numtide/system-manager?shallow=1";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nix-system-graphics = { nix-system-graphics = {
url = "github:soupglasses/nix-system-graphics?shallow=1"; url = "github:soupglasses/nix-system-graphics?shallow=1";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
}; };
outputs = { self, nixpkgs, nixos-hardware, home-manager, system-manager, nix-system-graphics, ... }@inputs: outputs = { nixpkgs, home-manager, system-manager, nix-system-graphics, nix-index-database, ... }@inputs:
let let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = import nixpkgs { pkgs = import nixpkgs {
@@ -31,23 +35,13 @@
}; };
in in
{ {
nixosConfigurations.tuxedo = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
./devices/tuxedo/configuration.nix
];
};
nixosConfigurations.starlite = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
nixos-hardware.nixosModules.starlabs-starlite-i5
./devices/starlite/configuration.nix
];
};
packages.${system}.homeConfigurations.deck = home-manager.lib.homeManagerConfiguration { packages.${system}.homeConfigurations.deck = home-manager.lib.homeManagerConfiguration {
inherit pkgs; inherit pkgs;
extraSpecialArgs = { inherit inputs; }; extraSpecialArgs = { inherit inputs; };
modules = [ ./devices/deck/home.nix ]; modules = [
nix-index-database.homeModules.nix-index
./home.nix
];
}; };
systemConfigs.deck = system-manager.lib.makeSystemConfig { systemConfigs.deck = system-manager.lib.makeSystemConfig {
modules = [ modules = [

View File

@@ -1,17 +1,17 @@
{ pkgs, ... }: { pkgs, ... }:
let let
homeUpdateLocation = "/home/deck/Projects/nixos#deck"; homeUpdateLocation = "/home/deck/Projects/nixos/devices/deck#deck";
in in
{ {
imports = [ imports = [
../../home-manager/base.nix ../../home-manager
../../home-manager/gaming.nix ../../home-manager/gaming.nix
../../home-manager/development/vscode.nix ../../home-manager/development/vscode.nix
]; ];
terminal.homeUpdateLocation = homeUpdateLocation; terminal.homeUpdateLocation = homeUpdateLocation;
terminal.flakeUpdateLocation = "/home/deck/Projects/nixos"; terminal.flakeUpdateLocation = "/home/deck/Projects/nixos/devices/deck";
nixpkgs.config = { nixpkgs.config = {
allowUnfree = true; allowUnfree = true;

View File

@@ -2,21 +2,27 @@
# your system. Help is available in the configuration.nix(5) man page, on # your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). # https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ inputs, ... }: { inputs, pkgs, ... }:
{ {
imports = imports =
[ [
../../configuration/base.nix ../../configuration
# Include the results of the hardware scan. # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
inputs.disko.nixosModules.default inputs.disko.nixosModules.default
./disk-config.nix ./disk-config.nix
inputs.home-manager.nixosModules.default inputs.home-manager.nixosModules.default
../../configuration/modules/laptop.nix ../../configuration/modules/laptop.nix
../../configuration/modules/gnome.nix
]; ];
gnome.tablet = true;
networking.hostName = "starlite"; # Define your hostname. networking.hostName = "starlite"; # Define your hostname.
environment.systemPackages = with pkgs.gnomeExtensions; [
touchup
];
# Define a user account. Don't forget to set a password with passwd. # Define a user account. Don't forget to set a password with passwd.
users.users.worble = { users.users.worble = {
@@ -29,6 +35,9 @@
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager = { home-manager = {
extraSpecialArgs = { inherit inputs; }; extraSpecialArgs = { inherit inputs; };
sharedModules = [
inputs.nix-index-database.homeModules.nix-index
];
users = { users = {
"worble" = import ./home.nix; "worble" = import ./home.nix;
}; };

160
devices/starlite/flake.lock generated Normal file
View File

@@ -0,0 +1,160 @@
{
"nodes": {
"disko": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1760701190,
"narHash": "sha256-y7UhnWlER8r776JsySqsbTUh2Txf7K30smfHlqdaIQw=",
"owner": "nix-community",
"repo": "disko",
"rev": "3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "disko",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1758463745,
"narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.05",
"repo": "home-manager",
"type": "github"
}
},
"nix-index-database": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1760846226,
"narHash": "sha256-xmU8kAsRprJiTGBTaGrwmjBP3AMA9ltlrxHKFuy5JWc=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "5024e1901239a76b7bf94a4cd27f3507e639d49e",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-index-database",
"type": "github"
}
},
"nix-vscode-extensions": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1761098495,
"narHash": "sha256-aE2Vp0Q/Ra95sHk/YgQI6z9PvqPttgcIVUk3uSOWj9g=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "bd4690e402591e99a091dcd49663d3d6c9bf0ada",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1760958188,
"narHash": "sha256-2m1S4jl+GEDtlt2QqeHil8Ny456dcGSKJAM7q3j/BFU=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "d6645c340ef7d821602fd2cd199e8d1eed10afbc",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixos-hardware",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1759770925,
"narHash": "sha256-CZwkCtzTNclqlhuwDsVtGoRumTpqCUK0xSnFIMgd8ls=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "674c2b09c59a220204350ced584cadaacee30038",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixpkgs",
"rev": "674c2b09c59a220204350ced584cadaacee30038",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1760878510,
"narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5e2a59a5b1a82f89f2c7e598302a9cacebb72a67",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1760862643,
"narHash": "sha256-PXwG0TM7Ek87DNx4LbGWuD93PbFeKAJs4FfALtp7Wo0=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "33c6dca0c0cb31d6addcd34e90a63ad61826b28c",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"disko": "disko",
"home-manager": "home-manager",
"nix-index-database": "nix-index-database",
"nix-vscode-extensions": "nix-vscode-extensions",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable"
}
}
},
"root": "root",
"version": 7
}

View File

@@ -0,0 +1,35 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11?shallow=1";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable?shallow=1"; # use by inputs.nixpkgs-unstable.legacyPackages."${pkgs.stdenv.hostPlatform.system}".[package name]
home-manager = {
url = "github:nix-community/home-manager/release-25.11?shallow=1";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-index-database = {
url = "github:nix-community/nix-index-database?shallow=1";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-hardware.url = "github:NixOS/nixos-hardware/master?shallow=1";
disko = {
url = "github:nix-community/disko?shallow=1";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions?shallow=1";
};
outputs = { nixpkgs, nixos-hardware, ... }@inputs:
{
nixosConfigurations.starlite = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
nixos-hardware.nixosModules.starlabs-starlite-i5
./configuration.nix
];
};
};
}

View File

@@ -2,12 +2,13 @@
{ {
imports = [ imports = [
../../home-manager/base.nix ../../home-manager
../../home-manager/development/vscode.nix ../../home-manager/development/vscode.nix
]; ];
terminal.nixUpdateLocation = "/home/worble/Projects/nixos#starlite"; terminal.nixUpdateLocation = "/home/worble/Projects/nixos/devices/starlite#starlite";
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos"; terminal.flakeUpdateLocation = "/home/worble/Projects/nixos/devices/starlite";
firefox.tablet = true;
home.username = "worble"; home.username = "worble";
home.homeDirectory = "/home/worble"; home.homeDirectory = "/home/worble";

View File

@@ -2,12 +2,12 @@
# your system. Help is available in the configuration.nix(5) man page, on # your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). # https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ inputs, ... }: { inputs, pkgs, ... }:
{ {
imports = imports =
[ [
../../configuration/base.nix ../../configuration
# Include the results of the hardware scan. # Include the results of the hardware scan.
./hardware-configuration.nix ./hardware-configuration.nix
inputs.disko.nixosModules.default inputs.disko.nixosModules.default
@@ -16,21 +16,30 @@
../../configuration/modules/laptop.nix ../../configuration/modules/laptop.nix
../../configuration/modules/virtualisation.nix ../../configuration/modules/virtualisation.nix
../../configuration/modules/gaming.nix ../../configuration/modules/gaming.nix
../../configuration/modules/kde.nix
../../configuration/modules/i18n.nix
]; ];
networking.hostName = "tuxedo"; # Define your hostname. networking.hostName = "tuxedo"; # Define your hostname.
# options iwlmvm power_scheme=1 https://wireless.docs.kernel.org/en/latest/en/users/drivers/iwlwifi.html#features
# options iwlwifi 11n_disable=4 https://wiki.gentoo.org/wiki/Iwlwifi#Network_crashes_under_heavy_load
boot.extraModprobeConfig = '' boot.extraModprobeConfig = ''
options iwlwifi 11n_disable=8 power_save=0
options iwlmvm power_scheme=1 options iwlmvm power_scheme=1
options iwlwifi 11n_disable=8 power_save=0
''; '';
services.hardware.openrgb.enable = true; boot.kernelModules = [
"ntsync"
];
fileSystems."/mnt/HDD1" = { # services.hardware.openrgb.enable = true;
#device = "/dev/disk/by-uuid/35763dc3-c736-4714-ade7-40bf49ad50dd";
virtualisation.containerManagement = "docker";
fileSystems."/mnt/HDD2" = {
fsType = "ext4"; fsType = "ext4";
label = "HDD1"; label = "HDD2";
options = [ options = [
# If you don't have this options attribute, it'll default to "defaults" # If you don't have this options attribute, it'll default to "defaults"
# boot options for fstab. Search up fstab mount options you can use # boot options for fstab. Search up fstab mount options you can use
@@ -40,22 +49,48 @@
]; ];
}; };
hardware.tuxedo-drivers.enable = true; # hardware.tuxedo-drivers.enable = true;
programs.nix-ld.enable = true; programs.wireshark = {
enable = true;
package = pkgs.wireshark;
dumpcap.enable = true;
};
# programs.gpu-screen-recorder.enable = true; # For promptless recording on both CLI and GUI
# programs.obs-studio = {
# enable = true;
# enableVirtualCamera = true;
# };
environment.systemPackages = with pkgs;[
distrobox
gpu-screen-recorder-gtk
];
# Define a user account. Don't forget to set a password with passwd. # Define a user account. Don't forget to set a password with passwd.
users.users.worble = { users.users.worble = {
initialPassword = "password"; initialPassword = "password";
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" "gamemode" "docker" "cdrom" ]; # Enable sudo for the user. extraGroups = [
"wheel"
"gamemode"
"docker"
"podman"
"cdrom"
"wireshark"
"kvm" # for android studio
]; # Enable sudo for the user.
linger = true; linger = true;
}; };
home-manager = { home-manager = {
useGlobalPkgs = true; useGlobalPkgs = true;
extraSpecialArgs = { inherit inputs; }; extraSpecialArgs = { inherit inputs; };
sharedModules = [ ]; sharedModules = [
inputs.nix-index-database.homeModules.nix-index
];
users = { users = {
"worble" = import ./home.nix; "worble" = import ./home.nix;
}; };

143
devices/tuxedo/flake.lock generated Normal file
View File

@@ -0,0 +1,143 @@
{
"nodes": {
"disko": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1764110879,
"narHash": "sha256-xanUzIb0tf3kJ+PoOFmXEXV1jM3PjkDT/TQ5DYeNYRc=",
"owner": "nix-community",
"repo": "disko",
"rev": "aecba248f9a7d68c5d1ed15de2d1c8a4c994a3c5",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "disko",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1764177491,
"narHash": "sha256-dhX2abFWxeXab3Aad4Pg1xGtn9W84/qetNXfmYUwktw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "2217780c39169a9c77915200137550c2ef0fa974",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.11",
"repo": "home-manager",
"type": "github"
}
},
"nix-index-database": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1763870992,
"narHash": "sha256-NPyc76Wxmv/vAsXJ8F+/8fXECHYcv2YGSqdiSHp/F/A=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "d7423982c7a26586aa237d130b14c8b302c7a367",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-index-database",
"type": "github"
}
},
"nix-vscode-extensions": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1764208554,
"narHash": "sha256-9cHI5OyIcTuaWYrgq3ng7W0q+wgX8II2fkqCHNot5jY=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "8cd52edf9dea91d1610c50b494dc20636b61b862",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1759770925,
"narHash": "sha256-CZwkCtzTNclqlhuwDsVtGoRumTpqCUK0xSnFIMgd8ls=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "674c2b09c59a220204350ced584cadaacee30038",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nixpkgs",
"rev": "674c2b09c59a220204350ced584cadaacee30038",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1763966396,
"narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5ae3b07d8d6527c42f17c876e404993199144b6a",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1764020296,
"narHash": "sha256-6zddwDs2n+n01l+1TG6PlyokDdXzu/oBmEejcH5L5+A=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "a320ce8e6e2cc6b4397eef214d202a50a4583829",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"disko": "disko",
"home-manager": "home-manager",
"nix-index-database": "nix-index-database",
"nix-vscode-extensions": "nix-vscode-extensions",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable"
}
}
},
"root": "root",
"version": 7
}

33
devices/tuxedo/flake.nix Normal file
View File

@@ -0,0 +1,33 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11?shallow=1";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable?shallow=1"; # use by inputs.nixpkgs-unstable.legacyPackages."${pkgs.stdenv.hostPlatform.system}".[package name]
home-manager = {
url = "github:nix-community/home-manager/release-25.11?shallow=1";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-index-database = {
url = "github:nix-community/nix-index-database?shallow=1";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko?shallow=1";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions?shallow=1";
};
outputs = { nixpkgs, ... }@inputs:
{
nixosConfigurations.tuxedo = nixpkgs.lib.nixosSystem {
specialArgs = { inherit inputs; };
modules = [
./configuration.nix
];
};
};
}

View File

@@ -1,15 +1,17 @@
{ pkgs, ... }: { pkgs, config, inputs, ... }:
{ {
imports = [ imports = [
../../home-manager/base.nix ../../home-manager
../../home-manager/development/all.nix ../../home-manager/development
../../home-manager/gaming.nix ../../home-manager/gaming.nix
../../home-manager/streamlink.nix
]; ];
terminal.nixUpdateLocation = "/home/worble/Projects/nixos#tuxedo"; terminal.nixUpdateLocation = "/home/worble/Projects/nixos/devices/tuxedo#tuxedo";
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos"; terminal.flakeUpdateLocation = "/home/worble/Projects/nixos/devices/tuxedo";
helix.fullInstall = true; helix.fullInstall = true;
mpv.high-quality = true;
home.username = "worble"; home.username = "worble";
home.homeDirectory = "/home/worble"; home.homeDirectory = "/home/worble";
@@ -29,36 +31,30 @@
# comms # comms
teams-for-linux teams-for-linux
teamspeak6-client
# media # media
jellyfin-media-player # TODO: disabled due to qt5-web-engine vulnerable https://github.com/NixOS/nixpkgs/pull/435067
# jellyfin-media-player
haruna haruna
fooyin
strawberry
mpc-qt
# misc # misc
electrum # TODO: uncomment when ecdsa is updated
gpu-screen-recorder-gtk # https://github.com/NixOS/nixpkgs/pull/456881
syncthing # electrum
dbeaver-bin dbeaver-bin
ruffle ruffle
popsicle popsicle
]; mkvtoolnix
home.file = { # for headset tune
# shaders for mpv headsetcontrol
".config/mpv/shaders".source = pkgs.fetchzip { ];
url = "https://github.com/bloc97/Anime4K/releases/download/v4.0.1/Anime4K_v4.0.zip";
sha256 = "sha256-9B6U+KEVlhUIIOrDauIN3aVUjZ/gQHjFArS4uf/BpaM=";
stripRoot = false;
};
};
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.
programs = { programs = {
firefox = { firefox = {
profiles.work = import ../../home-manager/firefox/firefox-profile.nix // { profiles.work = (import ../../home-manager/firefox/firefox-profile.nix { tablet = config.firefox.tablet; }) // {
id = 1; id = 1;
name = "work"; name = "work";
isDefault = false; isDefault = false;
@@ -72,47 +68,28 @@
}; };
mpv = { mpv = {
enable = true;
config = { config = {
profile = "gpu-hq"; screenshot-directory = "/mnt/HDD2/Pictures/";
vo = "gpu-next";
gpu-api = "vulkan";
hwdec = "vulkan";
screenshot-directory = "/mnt/HDD1/Pictures/";
screenshot-template = "%F/%F_snapshot_%P";
glsl-shaders = "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl";
}; };
extraInput = ''
# Optimized shaders for higher-end GPU:
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B (HQ)"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C (HQ)"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A+A (HQ)"
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B+B (HQ)"
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C+A (HQ)"
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"
'';
}; };
mangohud = { topgrade = {
enable = true;
settings = { settings = {
preset = 1; misc = {
ignore_failures = [ "containers" ];
};
}; };
}; };
kodi = {
enable = true;
package = pkgs.kodi.withPackages (exts: [ exts.pvr-iptvsimple ]);
};
}; };
systemd.user = { systemd.user = {
services = { services = {
rclone-media = { rclone-media = {
Unit = { Unit = {
Description = "rclone-media /mnt/HDD1/Videos/"; Description = "rclone-media /mnt/HDD2/Videos/";
After = [ "network.target" "mnt-HDD1.mount" ]; After = [ "network.target" "mnt-HDD2.mount" ];
# Maybe? https://unix.stackexchange.com/questions/281650/systemd-unit-requiresmountsfor-vs-conditionpathisdirectory
# RequiresMountsFor = "/mnt/HDD2/Videos/";
}; };
Install = { Install = {
@@ -120,6 +97,8 @@
}; };
Service = { Service = {
RestartSec = 10;
Restart = "on-failure";
Type = "exec"; Type = "exec";
ExecStart = "${pkgs.writeShellApplication { ExecStart = "${pkgs.writeShellApplication {
name = "rclone-media"; name = "rclone-media";
@@ -127,7 +106,7 @@ runtimeInputs = [ pkgs.inotify-tools pkgs.libnotify pkgs.rclone ];
text = '' text = ''
function rclonecopy { function rclonecopy {
file=$1 file=$1
changed_rel=''${file#"/mnt/HDD1/Videos"} changed_rel=''${file#"/mnt/HDD2/Videos"}
notify-send -a "rclone-media" "rclone for $file triggered" notify-send -a "rclone-media" "rclone for $file triggered"
if rclone copyto "$file" media:"media-7gM2gcrxRjXqfj$changed_rel" ; then if rclone copyto "$file" media:"media-7gM2gcrxRjXqfj$changed_rel" ; then
notify-send -a "rclone-media" "rclone complete for $file" notify-send -a "rclone-media" "rclone complete for $file"
@@ -139,7 +118,7 @@ text = ''
inotifywait -mr \ inotifywait -mr \
--format '%w%f' \ --format '%w%f' \
-e close_write \ -e close_write \
/mnt/HDD1/Videos/ | /mnt/HDD2/Videos/ |
while read -r file; do while read -r file; do
rclonecopy "$file" rclonecopy "$file"
done done

3
fix-nix.sh Normal file
View File

@@ -0,0 +1,3 @@
# Occasionally the nix store can get into a tizz and all updates will fail
# This should fix that
sudo nix-store --repair --verify --check-contents

215
flake.lock generated
View File

@@ -1,215 +0,0 @@
{
"nodes": {
"disko": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1745812220,
"narHash": "sha256-hotBG0EJ9VmAHJYF0yhWuTVZpENHvwcJ2SxvIPrXm+g=",
"owner": "nix-community",
"repo": "disko",
"rev": "d0c543d740fad42fe2c035b43c9d41127e073c78",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "disko",
"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": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1745557122,
"narHash": "sha256-eqSo9ugzsqhFgaDFYUZj943nurlX4L6f+AW0skJ4W+M=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "dd26f75fb4ec1c731d4b1396eaf4439ce40a91c1",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-24.11",
"repo": "home-manager",
"type": "github"
}
},
"nix-system-graphics": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1737457219,
"narHash": "sha256-nX9dxoATDCSQgWw/iv6BngXDJEyHVYYEvHEVQ7Ig3fI=",
"owner": "soupglasses",
"repo": "nix-system-graphics",
"rev": "9c875e0c56cf2eb272b9102a4f3e24e4e31629fd",
"type": "github"
},
"original": {
"owner": "soupglasses",
"repo": "nix-system-graphics",
"type": "github"
}
},
"nix-vscode-extensions": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1745891836,
"narHash": "sha256-UJpwh09VKotfAoZRz6NNYZ1mepbhlkvYuoUSnMdUXCs=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "7387c46187fb2bbeb8bd1c94368a666e7bbd60c6",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1745907084,
"narHash": "sha256-Q8SpDbTI95vtKXgNcVl1VdSUhhDOORE8R77wWS2rmg8=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "f1e52a018166e1a324f832de913e12c0e55792d0",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "master",
"repo": "nixos-hardware",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1744868846,
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
"type": "github"
},
"original": {
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
"type": "github"
}
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1745794561,
"narHash": "sha256-T36rUZHUART00h3dW4sV5tv4MrXKT7aWjNfHiZz7OHg=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5461b7fa65f3ca74cef60be837fd559a8918eaa0",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1745868005,
"narHash": "sha256-hZScOyQphT4RUmSEJX+2OxjIlGgLwSd8iW1LNtAWIOs=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "330d0a4167924b43f31cc9406df363f71b768a02",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-24.11",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"disko": "disko",
"home-manager": "home-manager",
"nix-system-graphics": "nix-system-graphics",
"nix-vscode-extensions": "nix-vscode-extensions",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable",
"system-manager": "system-manager"
}
},
"system-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1744139528,
"narHash": "sha256-ABIcmxzf8399pJzXqHzShXtzw7iC+zxjhOxp/qS0fQk=",
"owner": "numtide",
"repo": "system-manager",
"rev": "803322102ed51f29c250d4bff2973625adc4a521",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "system-manager",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

View File

@@ -1,2 +1,2 @@
#!/usr/bin/env bash #!/usr/bin/env bash
home-manager switch --flake "/home/$(whoami)/Projects/nixos#$(whoami)" home-manager switch --flake "$HOME/Projects/nixos/devices/$(whoami)#$(whoami)"

View File

@@ -1,66 +0,0 @@
{ pkgs, lib, ... }:
{
imports = [
./base/fonts.nix
./base/terminal.nix
./firefox/firefox.nix
];
home.packages = with pkgs;[
# general
thunderbird
keepassxc
qbittorrent
libreoffice-qt
joplin-desktop
# comms
teamspeak_client
vesktop
];
# set breeze as default cursor
home.file.".icons/default".source = "${pkgs.kdePackages.breeze}/share/icons/breeze_cursors";
home.sessionVariables = {
NIXOS_OZONE_WL = "1";
};
services.nextcloud-client = {
enable = true;
package = pkgs.nextcloud-client;
startInBackground = true;
};
programs = {
home-manager.enable = true;
chromium = {
enable = true;
package = pkgs.brave;
};
mpv = lib.mkDefault {
enable = true;
package = (
pkgs.mpv-unwrapped.wrapper {
scripts = with pkgs.mpvScripts; [
uosc
sponsorblock
];
mpv = pkgs.mpv-unwrapped.override {
waylandSupport = true;
};
}
);
config = {
video-sync = "display-resample";
interpolation = "yes";
screenshot-directory = "~/Pictures/";
screenshot-template = "%F/%F_snapshot_%P";
};
};
};
}

View File

@@ -0,0 +1,9 @@
{ ... }:
{
imports = [
./fonts.nix
./mpv.nix
./terminal.nix
];
}

View File

@@ -2,10 +2,10 @@
{ {
home.packages = with pkgs;[ home.packages = with pkgs;[
liberation_ttf
ubuntu-sans ubuntu-sans
ubuntu-sans-mono ubuntu-sans-mono
(nerdfonts.override { fonts = [ "SpaceMono" ]; }) nerd-fonts.space-mono
corefonts
]; ];
fonts.fontconfig = { fonts.fontconfig = {

72
home-manager/base/mpv.nix Normal file
View File

@@ -0,0 +1,72 @@
{ pkgs, lib, config, ... }:
with lib;
{
options.mpv = {
high-quality = mkOption {
type = types.bool;
default = false;
};
};
config = {
home.file = {
".config/mpv/shaders" = {
enable = config.mpv.high-quality;
source = pkgs.fetchzip {
url = "https://github.com/bloc97/Anime4K/releases/download/v4.0.1/Anime4K_v4.0.zip";
sha256 = "sha256-9B6U+KEVlhUIIOrDauIN3aVUjZ/gQHjFArS4uf/BpaM=";
stripRoot = false;
};
};
};
programs = {
mpv = {
enable = true;
package = (
pkgs.mpv-unwrapped.wrapper {
scripts = with pkgs.mpvScripts; [
uosc
sponsorblock
];
mpv = pkgs.mpv-unwrapped;
}
);
config = mkMerge [{
screenshot-directory = lib.mkDefault "~/Pictures/";
screenshot-template = lib.mkDefault "%F/%F_snapshot_%P";
sub-ass-use-video-data = lib.mkDefault "aspect-ratio";
}
(mkIf config.mpv.high-quality
{
profile = lib.mkDefault "gpu-hq";
vo = lib.mkDefault "gpu-next";
gpu-api = lib.mkDefault "auto";
gpu-context = lib.mkDefault "auto";
hwdec = lib.mkDefault "auto";
glsl-shaders = lib.mkDefault "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl";
})];
scriptOpts = {
uosc = {
time_precision = lib.mkDefault 3;
};
};
extraInput =
if config.mpv.high-quality then ''
# Optimized shaders for higher-end GPU:
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)"
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B (HQ)"
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C (HQ)"
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A+A (HQ)"
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B+B (HQ)"
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C+A (HQ)"
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"
'' else "";
};
};
};
}

View File

@@ -8,38 +8,57 @@ with lib;
options.terminal = { options.terminal = {
nixUpdateLocation = mkOption { nixUpdateLocation = mkOption {
type = lib.types.nullOr lib.types.str; type = types.nullOr types.str;
default = null; default = null;
}; };
flakeUpdateLocation = mkOption { flakeUpdateLocation = mkOption {
type = lib.types.nullOr lib.types.str; type = types.nullOr types.str;
default = null; default = null;
}; };
homeUpdateLocation = mkOption { homeUpdateLocation = mkOption {
type = lib.types.nullOr lib.types.str; type = types.nullOr types.str;
default = null; default = null;
}; };
}; };
config = { config = {
home.packages = with pkgs;[ home.packages = with pkgs;[
blesh nerd-fonts.space-mono
(nerdfonts.override { fonts = [ "SpaceMono" ]; })
]; ];
programs = { programs = {
bash = { bash = {
enable = true; enable = true;
bashrcExtra = '' initExtra = ''
source $(blesh-share)/ble.sh if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
bleopt canvas_winch_action=redraw-prev then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
fi
''; '';
}; };
fish = {
enable = true;
interactiveShellInit = ''
set fish_greeting # Disable greeting
'';
};
nix-index = {
enable = true;
enableBashIntegration = true;
enableFishIntegration = true;
};
delta = {
enable = true;
enableGitIntegration = true;
};
git = { git = {
enable = true; enable = true;
delta.enable = true; settings = {
extraConfig = {
credential = { credential = {
helper = [ "cache --timeout 21600" "${pkgs.git-credential-manager}/bin/git-credential-manager" "${pkgs.git-credential-oauth}/bin/git-credential-oauth" ]; helper = [ "cache --timeout 21600" "${pkgs.git-credential-manager}/bin/git-credential-manager" "${pkgs.git-credential-oauth}/bin/git-credential-oauth" ];
credentialStore = "secretservice"; credentialStore = "secretservice";
@@ -93,8 +112,11 @@ with lib;
zellij = { zellij = {
enable = true; enable = true;
enableBashIntegration = true; enableBashIntegration = true;
enableFishIntegration = true;
settings = { settings = {
theme = "dracula"; theme = "dracula";
show_startup_tips = false;
default_mode = "locked";
}; };
}; };
@@ -119,6 +141,7 @@ with lib;
eza = { eza = {
enable = true; enable = true;
enableBashIntegration = true; enableBashIntegration = true;
enableFishIntegration = true;
git = true; git = true;
extraOptions = [ extraOptions = [
"--color=auto" "--color=auto"
@@ -131,7 +154,7 @@ with lib;
yazi = { yazi = {
enable = true; enable = true;
settings = { settings = {
manager = { mgr = {
sort_by = "natural"; sort_by = "natural";
show_hidden = true; show_hidden = true;
}; };
@@ -155,6 +178,24 @@ with lib;
settings = mkMerge [{ settings = mkMerge [{
misc = { misc = {
assume_yes = true; assume_yes = true;
disable = [
"android_studio"
"jetbrains_aqua"
"jetbrains_clion"
"jetbrains_datagrip"
"jetbrains_dataspell"
"jetbrains_gateway"
"jetbrains_goland"
"jetbrains_idea"
"jetbrains_mps"
"jetbrains_phpstorm"
"jetbrains_pycharm"
"jetbrains_rider"
"jetbrains_rubymine"
"jetbrains_rustrover"
"jetbrains_toolbox"
"jetbrains_webstorm"
];
}; };
} }
(mkIf (nixUpdateLocation != null) { (mkIf (nixUpdateLocation != null) {
@@ -169,7 +210,7 @@ with lib;
}) })
(mkIf (flakeUpdateLocation != null) { (mkIf (flakeUpdateLocation != null) {
pre_commands = { pre_commands = {
nix-flake-update = "sudo nix flake update --flake ${flakeUpdateLocation}"; nix-flake-update = "${(pkgs.writeShellScriptBin "nix-flake-update" "sudo nix flake update --flake ${flakeUpdateLocation}")}/bin/nix-flake-update";
}; };
})]; })];
}; };

68
home-manager/default.nix Normal file
View File

@@ -0,0 +1,68 @@
{ pkgs, lib, ... }:
{
imports = [
./base
./firefox
];
home.packages = with pkgs;[
# general
thunderbird
qbittorrent
libreoffice-qt
# 25.11 Can move to stable when https://github.com/NixOS/nixpkgs/pull/460058 gets backported
joplin-desktop
# comms
# TODO: disabled due to qt5-web-engine vulnerable https://github.com/NixOS/nixpkgs/pull/435067
# teamspeak3
teamspeak6-client
discord
vesktop
# media
strawberry
];
# set breeze as default cursor
# For cursor in steam?
# home.file.".icons/default".source = "${pkgs.kdePackages.breeze}/share/icons/breeze_cursors";
home.file.".npmrc".text = lib.generators.toINIWithGlobalSection { } {
globalSection = {
ignore-scripts = "true";
};
};
xdg.configFile."capacitor/sysconfig.json".text = lib.generators.toJSON { } {
machine = "00000000-0000-0000-0000-000000000000";
signup = false;
telemetry = false;
};
home.sessionVariables = {
NIXOS_OZONE_WL = "1";
};
services.nextcloud-client = {
enable = true;
package = pkgs.nextcloud-client;
startInBackground = true;
};
programs = {
home-manager.enable = true;
chromium = {
enable = true;
package = pkgs.brave;
};
keepassxc = {
enable = true;
# add in 25.12?
# autostart = true;
};
};
}

View File

@@ -0,0 +1,36 @@
# { pkgs, ... }:
# let
# androidEnv = pkgs.androidenv.override { licenseAccepted = true; };
# androidComp = (
# androidEnv.composeAndroidPackages {
# toolsVersion = null;
# includeEmulator = true;
# includeNDK = true;
# platformVersions = [
# "latest"
# "25"
# ];
# includeSystemImages = true;
# systemImageTypes = [
# "default"
# ];
# abiVersions = [
# "x86_64"
# "armeabi-v7a"
# "arm64-v8a"
# ];
# }
# );
# android-studio = (pkgs.android-studio.withSdk androidComp.androidsdk);
# in
# {
# home.sessionVariables = {
# ANDROID_HOME = "${androidComp.androidsdk}/libexec/android-sdk";
# ANDROID_SDK_ROOT = "${androidComp.androidsdk}/libexec/android-sdk";
# ANDROID_NDK_ROOT = "${androidComp.androidsdk}/libexec/android-sdk/ndk-bundle";
# };
# home.packages = [
# pkgs.android-studio
# ];
# }

View File

@@ -2,10 +2,11 @@
{ {
imports = [ imports = [
./vscode.nix # ./android.nix
./helix.nix
./dotnet.nix ./dotnet.nix
./sql.nix
./games.nix ./games.nix
./helix.nix
./sql.nix
./vscode.nix
]; ];
} }

View File

@@ -3,15 +3,6 @@
{ {
home.packages = with pkgs;[ home.packages = with pkgs;[
jetbrains.rider jetbrains.rider
# Remove when https://github.com/NixOS/nixpkgs/issues/393332 resolved (likely when 25.05 is out) godot-mono
# godot-mono
(symlinkJoin {
name = "godot-mono";
paths = [ inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".godot-mono ];
buildInputs = [ makeWrapper ];
postBuild = ''
wrapProgram $out/bin/godot4-mono --set DOTNET_SYSTEM_GLOBALIZATION_INVARIANT 1
'';
})
]; ];
} }

View File

@@ -4,7 +4,7 @@ with lib;
{ {
options.helix = { options.helix = {
fullInstall = mkOption { fullInstall = mkOption {
type = lib.types.nullOr lib.types.bool; type = types.bool;
default = false; default = false;
}; };
}; };
@@ -17,31 +17,46 @@ with lib;
settings = { settings = {
theme = "dracula"; theme = "dracula";
}; };
extraPackages = with pkgs;[ gcc ]; extraPackages = with pkgs;[
gcc
] ++ (optionals config.helix.fullInstall [
#nix
nixd
nixpkgs-fmt
#dotnet
omnisharp-roslyn
netcoredbg
# rust
rustfmt
clippy
rust-analyzer
lldb
#python
ruff
# shell
shfmt
bash-language-server
fish-lsp
# misc
hyprls
marksman
# web
superhtml
biome
] ++ (with nodePackages;[
vscode-langservers-extracted
typescript-language-server
]));
} }
(mkIf config.helix.fullInstall { (mkIf config.helix.fullInstall {
extraPackages = with pkgs;[
marksman
shfmt
bash-language-server
superhtml
nixd
nixpkgs-fmt
biome
] ++ (with nodePackages;[
vscode-langservers-extracted
typescript-language-server
]);
languages = { languages = {
language = [ language = [
{
name = "nix";
language-servers = [ "nixd" "nil" ];
}
{
name = "html";
language-servers = [ "superhtml" "vscode-html-language-server" ];
}
{ {
name = "bash"; name = "bash";
formatter = { command = "shfmt"; }; formatter = { command = "shfmt"; };

View File

@@ -1,91 +1,121 @@
{ inputs, pkgs, ... }: { inputs, pkgs, ... }:
let let
openvsx-extensions = inputs.nix-vscode-extensions.extensions.x86_64-linux.open-vsx; openvsx = inputs.nix-vscode-extensions.extensions.x86_64-linux.open-vsx;
vscode-extensions = inputs.nix-vscode-extensions.extensions.x86_64-linux.vscode-marketplace; vscode-marketplace = inputs.nix-vscode-extensions.extensions.x86_64-linux.vscode-marketplace;
resharper-code-version = "0.0.15";
resharper-code = (pkgs.vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "resharper-code";
version = resharper-code-version;
publisher = "jetbrains";
};
vsix = builtins.fetchurl {
name = "jetbrains.resharper-code.zip";
url = "https://download.jetbrains.com/product?code=VSCRS&latest&distribution=linuxX64&type=eap&version=${resharper-code-version}";
sha256 = "sha256:eef138c4fdd035031577f4c483c2155c4dd5ce91cfd1b9a2489c138aeb6cb99e";
};
}).overrideAttrs (old: {
nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.makeBinaryWrapper ];
postFixup = ''
wrapProgram $out/share/vscode/extensions/jetbrains.resharper-code/resharper/linux-x64/JetBrains.VsCode.Backend \
--prefix LD_LIBRARY_PATH : ${pkgs.dotnet-sdk.icu}/lib
'';
});
in in
{ {
home.packages = with pkgs;[ home.packages = with pkgs;[
(nerdfonts.override { fonts = [ "SpaceMono" ]; }) nerd-fonts.space-mono
]; ];
programs = { programs = {
vscode = { vscode = {
enable = true; enable = true;
package = inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".vscodium; package = pkgs.vscodium;
mutableExtensionsDir = false; mutableExtensionsDir = false;
enableUpdateCheck = false; profiles.default = {
enableExtensionUpdateCheck = false; enableUpdateCheck = false;
extensions = with vscode-extensions;[ enableExtensionUpdateCheck = false;
biomejs.biome extensions = [
mkhl.direnv resharper-code # Requires DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
dracula-theme.theme-dracula ] ++ (with openvsx;[
dbaeumer.vscode-eslint biomejs.biome
eamodio.gitlens mkhl.direnv
pkief.material-icon-theme dracula-theme.theme-dracula
jnoortheen.nix-ide dbaeumer.vscode-eslint
esbenp.prettier-vscode pkief.material-icon-theme
humao.rest-client jnoortheen.nix-ide
loriscro.super esbenp.prettier-vscode
mads-hartmann.bash-ide-vscode loriscro.super
foxundermoon.shell-format mads-hartmann.bash-ide-vscode
dart-code.flutter ms-vscode.wasm-wasi-core
ms-vscode.wasm-wasi-core rust-lang.rust-analyzer
rust-lang.rust-analyzer tamasfe.even-better-toml
tamasfe.even-better-toml mikestead.dotenv
mikestead.dotenv ms-python.python
] ++ [ vscode-extensions.bradlc.vscode-tailwindcss ]; ms-python.debugpy
userSettings = with pkgs;{ charliermarsh.ruff
"workbench.iconTheme" = "material-icon-theme"; ]) ++ (with vscode-marketplace;[
"window.titleBarStyle" = "custom"; bradlc.vscode-tailwindcss
"workbench.colorTheme" = "Dracula Theme"; ]);
"explorer.compactFolders" = false; userSettings = with pkgs;{
"chat.commandCenter.enabled" = false; "workbench.iconTheme" = "material-icon-theme";
"window.titleBarStyle" = "custom";
"editor.fontFamily" = "'SpaceMono Nerd Font', 'monospace', monospace"; "workbench.colorTheme" = "Dracula Theme";
"editor.fontSize" = 16; "explorer.compactFolders" = false;
"editor.formatOnSave" = true; "chat.commandCenter.enabled" = false;
"editor.codeActionsOnSave" = { "terminal.integrated.automationProfile.linux" = {
"source.organizeImports" = "always"; "path" = "/bin/sh";
};
"files.autoSave" = "onWindowChange";
"[typescript]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
"[javascript]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
"[javascriptreact]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
"[typescriptreact]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
"[json]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
"[jsonc]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
"biome.lsp.bin" = "${biome}/bin/biome";
"biome.requireConfigFile" = true;
"typescript.preferences.preferTypeOnlyAutoImports" = true;
"nix.enableLanguageServer" = true; # Enable LSP.
"nix.serverPath" = "${nixd}/bin/nixd"; # The path to the LSP server executable.
"nix.serverSettings" = {
nixd = {
formatting.command = [ "${nixpkgs-fmt}/bin/nixpkgs-fmt" ];
}; };
"editor.fontFamily" = "'SpaceMono Nerd Font', 'monospace', monospace";
"editor.fontSize" = 16;
"editor.formatOnSave" = true;
"editor.codeActionsOnSave" = {
"source.organizeImports" = "always";
};
"files.autoSave" = "onWindowChange";
"[typescript]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
"[javascript]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
"[javascriptreact]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
"[typescriptreact]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
"[json]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
"[jsonc]" = {
"editor.defaultFormatter" = "biomejs.biome";
};
# "biome.lsp.bin" = "${biome}/bin/biome";
#"biome.requireConfigFile" = true;
"typescript.preferences.preferTypeOnlyAutoImports" = true;
"nix.enableLanguageServer" = true; # Enable LSP.
"nix.serverPath" = "${nixd}/bin/nixd"; # The path to the LSP server executable.
"nix.serverSettings" = {
nixd = {
formatting.command = [ "${nixpkgs-fmt}/bin/nixpkgs-fmt" ];
};
};
"bashIde.shellcheckPath" = "${shellcheck}/bin/shellcheck";
"bashIde.shfmt.path" = "${shfmt}/bin/shfmt";
"rust-analyzer.rustfmt.overrideCommand" = [ "${rustfmt}/bin/rustfmt" ];
"tailwindCSS.classFunctions" = [ "cva" "cx" ];
}; };
"bashIde.shellcheckPath" = "${shellcheck}/bin/shellcheck";
"shellformat.path" = "${shfmt}/bin/shfmt";
"rust-analyzer.rustfmt.overrideCommand" = [ "${rustfmt}/bin/rustfmt" ];
}; };
}; };
}; };

View File

@@ -0,0 +1,73 @@
{ lib, config, pkgs, ... }:
with lib;
{
options.firefox = {
tablet = mkOption {
type = types.bool;
default = false;
};
};
config = {
programs = {
firefox = {
enable = true;
package = pkgs.firefox;
languagePacks = [
"en-GB"
];
policies = {
"DisplayMenuBar" = if config.firefox.tablet then false else true;
"ExtensionSettings" = with builtins;
let
extension = shortId: uuid: {
name = uuid;
value = {
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
installation_mode = "normal_installed";
};
};
in
listToAttrs [
# Security / Privacy
(extension "ublock-origin" "uBlock0@raymondhill.net")
(extension "keepassxc-browser" "keepassxc-browser@keepassxc.org")
(extension "cookie-autodelete" "CookieAutoDelete@kennydo.com")
# Annoyances
(extension "sponsorblock" "sponsorBlocker@ajay.app")
(extension "bandcamp-player-volume-control" "{308ec088-284a-40fe-ae14-7c917526f694}")
# UI / CSS
(extension "darkreader" "addon@darkreader.org")
(extension "rsspreview" "{7799824a-30fe-4c67-8b3e-7094ea203c94}")
(extension "tree-style-tab" "treestyletab@piro.sakura.ne.jp")
(extension "traduzir-paginas-web" "{036a55b4-5e72-4d05-a06c-cba2dfcc134a}")
# Additional Functionality
(extension "betterttv" "firefox@betterttv.net")
(extension "multi-account-containers" "@testpilot-containers")
(extension "gumbo-twitch-companion" "{59a39734-1e66-452e-a7b8-cc79f72062f0}")
(extension "joplin-web-clipper" "{8419486a-54e9-11e8-9401-ac9e17909436}")
(extension "tab-reloader" "jid0-bnmfwWw2w2w4e4edvcdDbnMhdVg@jetpack")
(extension "tab-session-manager" "Tab-Session-Manager@sienori")
(extension "user-agent-string-switcher" "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}")
(extension "violentmonkey" "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}")
];
# To add additional extensions, find it on addons.mozilla.org, find
# the short ID in the url (like https://addons.mozilla.org/en-US/firefox/addon/!SHORT_ID!/)
# Then, download the XPI by filling it in to the install_url template, unzip it,
# run `jq .browser_specific_settings.gecko.id manifest.json` or
# `jq .applications.gecko.id manifest.json` to get the UUID
};
profiles.default = (import ./firefox-profile.nix { tablet = config.firefox.tablet; }) // {
id = 0;
name = "default";
isDefault = true;
};
};
};
};
}

View File

@@ -1,61 +1,105 @@
{ tablet ? false }:
{ {
settings = { settings = {
# data privacy # data privacy
"browser.discovery.enabled" = false; "browser.discovery.enabled" = false;
"dom.security.https_only_mode" = true; "dom.security.https_only_mode" = true;
# no autofill # no autofill
"extensions.formautofill.addresses.enabled" = false; "extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false; "extensions.formautofill.creditCards.enabled" = false;
# stop fonts # stop fonts
"browser.display.use_document_fonts" = 0; "browser.display.use_document_fonts" = 0;
# dont show about:config warning # dont show about:config warning
"browser.aboutConfig.showWarning" = false; "browser.aboutConfig.showWarning" = false;
# dont offer to save passwords # dont offer to save passwords
"signon.rememberSignons" = false; "signon.rememberSignons" = false;
# home page # home page
"browser.startup.homepage" = "about:blank"; "browser.startup.homepage" = "about:blank";
# blank new tab # blank new tab
"browser.newtabpage.enabled" = false; "browser.newtabpage.enabled" = false;
# compact density # compact density
"browser.uidensity" = 1; "browser.uidensity" = if tablet then 2 else 1;
# dont draw tabs in titlebar
"browser.tabs.drawInTitlebar" = false;
# autoscroll middleclick
"general.autoScroll" = true;
# dont paste on middlemouse
"middlemouse.paste" = false;
# userChrome # userChrome
"toolkit.legacyUserProfileCustomizations.stylesheets" = true; "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
# dont draw tabs in titlebar
"browser.tabs.drawInTitlebar" = false;
# autoscroll middleclick
"general.autoScroll" = true;
# dont paste on middlemouse
"middlemouse.paste" = false;
# menu bar # menu bar
"ui.key.menuAccessKeyFocuses" = false; "ui.key.menuAccessKeyFocuses" = false;
# use kde file picker
# use desktop file picker
"widget.use-xdg-desktop-portal.file-picker" = 1; "widget.use-xdg-desktop-portal.file-picker" = 1;
# sidebar at right # sidebar at right
"sidebar.position_start" = false; "sidebar.position_start" = false;
# new sidebar
"sidebar.revamp" = true;
"sidebar.verticalTabs" = true;
"browser.tabs.hoverPreview.enabled" = false;
"browser.tabs.hoverPreview.showThumbnails" = false;
"browser.tabs.groups.hoverPreview.enabled" = false;
# disable pocket # disable pocket
"extensions.pocket.enabled" = false; "extensions.pocket.enabled" = false;
# browser links should be new tab # browser links should be new tab
"browser.link.open_newwindow.restriction" = 0; "browser.link.open_newwindow.restriction" = 0;
# allow custom search enginers
# allow custom search engines
"browser.urlbar.update2.engineAliasRefresh" = true; "browser.urlbar.update2.engineAliasRefresh" = true;
# do not retrieve suggestions as you type https://blog.mozilla.org/en/firefox/better-search-suggestions/
"browser.urlbar.quicksuggest.online.enabled" = false;
# do not trim http
"browser.urlbar.trimURLs" = false;
# force enable hardware accel # force enable hardware accel
"media.hardware-video-decoding.force-enabled" = true; "media.hardware-video-decoding.force-enabled" = true;
# vaapi # vaapi
"media.ffmpeg.vaapi.enabled" = true; "media.ffmpeg.vaapi.enabled" = true;
# downloads ask to save or open
# downloads
# ask to save or open
"browser.download.always_ask_before_handling_new_types" = true; "browser.download.always_ask_before_handling_new_types" = true;
# downloads always ask download location # always ask download location
"browser.download.useDownloadDir" = false; "browser.download.useDownloadDir" = false;
# download to tmp dir, NOT Downloads (seriously Mozilla?) # download to tmp dir, NOT Downloads (seriously Mozilla?)
"browser.download.start_downloads_in_tmp_dir" = true; "browser.download.start_downloads_in_tmp_dir" = true;
# widevine # widevine
"browser.eme.ui.enabled" = false; "browser.eme.ui.enabled" = false;
"media.eme.enabled" = false; "media.eme.enabled" = false;
# media control keys # media control keys
"media.hardwaremediakeys.enabled" = false; "media.hardwaremediakeys.enabled" = false;
# restore tabs on startup # restore tabs on startup
"browser.startup.page" = 3; "browser.startup.page" = 3;
# open in new tabs
"browser.tabs.loadBookmarksInTabs" = true;
# AI
"browser.ml.chat.page" = false;
# AI tab groups
"browser.tabs.groups.smart.userEnabled" = false;
/* Arkenfox Begin */ /* Arkenfox Begin */
/* 0320: disable recommendation pane in about:addons (uses Google Analytics) ***/ /* 0320: disable recommendation pane in about:addons (uses Google Analytics) ***/
@@ -133,16 +177,19 @@
"browser.contentblocking.category" = "strict"; "browser.contentblocking.category" = "strict";
}; };
userChrome = '' userChrome = ''
/* Hide tab bar in FF Quantum */ /* Remove old sidebar header */
@-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml) { #sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header {
#TabsToolbar { display: none;
visibility: collapse !important; }
margin-bottom: 21px !important;
}
#sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header { /* Remove sidebar revamp header */
visibility: collapse !important; #sidebar-panel-header {
} display: none;
}
/* Allow complete collapse of sidebar revamp */
#sidebar-main:not([sidebar-launcher-expanded]) {
width: 0;
} }
''; '';
} }

View File

@@ -1,64 +0,0 @@
{ pkgs, ... }:
{
programs = {
firefox = {
enable = true;
package = pkgs.firefox;
languagePacks = [
"en-GB"
];
policies = {
"DisplayMenuBar" = true;
"ExtensionSettings" = with builtins;
let
extension = shortId: uuid: {
name = uuid;
value = {
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
installation_mode = "normal_installed";
};
};
in
listToAttrs [
# Security / Privacy
(extension "ublock-origin" "uBlock0@raymondhill.net")
(extension "keepassxc-browser" "keepassxc-browser@keepassxc.org")
(extension "cookie-autodelete" "CookieAutoDelete@kennydo.com")
# Annoyances
(extension "sponsorblock" "sponsorBlocker@ajay.app")
(extension "bandcamp-player-volume-control" "{308ec088-284a-40fe-ae14-7c917526f694}")
# UI / CSS
(extension "darkreader" "addon@darkreader.org")
(extension "rsspreview" "{7799824a-30fe-4c67-8b3e-7094ea203c94}")
(extension "tree-style-tab" "treestyletab@piro.sakura.ne.jp")
(extension "traduzir-paginas-web" "{036a55b4-5e72-4d05-a06c-cba2dfcc134a}")
# Additional Functionality
(extension "betterttv" "firefox@betterttv.net")
(extension "multi-account-containers" "@testpilot-containers")
(extension "gumbo-twitch-companion" "{59a39734-1e66-452e-a7b8-cc79f72062f0}")
(extension "joplin-web-clipper" "{8419486a-54e9-11e8-9401-ac9e17909436}")
(extension "tab-reloader" "jid0-bnmfwWw2w2w4e4edvcdDbnMhdVg@jetpack")
(extension "tab-session-manager" "Tab-Session-Manager@sienori")
(extension "user-agent-string-switcher" "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}")
(extension "violentmonkey" "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}")
];
# To add additional extensions, find it on addons.mozilla.org, find
# the short ID in the url (like https://addons.mozilla.org/en-US/firefox/addon/!SHORT_ID!/)
# Then, download the XPI by filling it in to the install_url template, unzip it,
# run `jq .browser_specific_settings.gecko.id manifest.json` or
# `jq .applications.gecko.id manifest.json` to get the UUID
};
profiles.default = import
./firefox-profile.nix // {
id = 0;
name = "default";
isDefault = true;
};
};
};
}

View File

@@ -1,12 +1,86 @@
{ inputs, pkgs, ... }: { pkgs, inputs, ... }:
let
pkgs_unstable = inputs.nixpkgs-unstable.legacyPackages."${pkgs.stdenv.hostPlatform.system}";
# https://simpler-website.pages.dev/html/2021/1/wine-environment-variables/#wineesync
wine-wrapped = (pkgs.writeShellApplication {
name = "wine";
runtimeInputs = [ pkgs_unstable.wineWowPackages.stagingFull ];
text = ''
export WINEPREFIX="''${WINEPREFIX:-"$HOME/Games/wine/default"}"
wine "$@"
'';
});
# https://github.com/GloriousEggroll/proton-ge-custom?tab=readme-ov-file#modification
# These aren't yet documented in the README:
# PROTON_MEDIA_USE_GST=1 will tell proton to use the winegstreamer backend instead of the default winedmo backend (the winedmo backend was introduced in Proton 10 and is the current preferred video playback method). This can be useful for games with videos that may have worked in Proton 9 but regressed in Proton 10.
# PROTON_GST_VIDEO_ORIENTATION=<orientation> can be any of the following: vertical-flip, horizontal-flip, rotate-180, automatic. This is useful if some games have videos that are upside down or otherwise not oriented correctly.
umu-wrapped = (pkgs.writeShellApplication {
name = "umu-run";
runtimeInputs = [ pkgs_unstable.umu-launcher ];
text = ''
export PROTONPATH="''${PROTONPATH:-"GE-Proton"}"
export PROTON_ENABLE_WAYLAND="''${PROTON_ENABLE_WAYLAND:-"0"}"
umu-run "$@"
'';
});
# proton with ja_JP
umu-ja = (pkgs.writeShellApplication {
name = "umu-ja";
runtimeInputs = [ umu-wrapped ];
text = "LANG=ja_JP.utf8 umu-run \"$@\"";
});
# wine with ja_JP
wine-ja = (pkgs.writeShellApplication {
name = "wine-ja";
runtimeInputs = [ wine-wrapped ];
text = "LANG=ja_JP.utf8 wine \"$@\"";
});
in
{ {
home.packages = with pkgs;[ home.packages = with pkgs;[
steamguard-cli # Wine / Proton
umu-wrapped
umu-ja
wine-wrapped
wine-ja
pkgs_unstable.winetricks
bottles bottles
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".ryubing (heroic.override {
extraPkgs = pkgs: [
pkgs.umu-launcher
pkgs.gamescope
pkgs.mangohud
];
})
# Steam
steamguard-cli
# Emulators
pkgs_unstable.ryubing
mgba mgba
# Cheat engine
scanmem scanmem
heroic
]; ];
programs = {
mangohud = {
enable = true;
enableSessionWide = true;
settings = {
preset = 1;
};
settingsPerApplication = {
mpv = {
no_display = true;
};
};
};
};
} }

View File

@@ -0,0 +1,42 @@
{ pkgs, lib, ... }:
let
proxies = [
"https://eu.luminous.dev" # (Europe)
"https://eu2.luminous.dev" # (Europe 2)
"https://as.luminous.dev" # (Asia)
"https://lb-eu.cdn-perfprod.com" # (Europe)
"https://lb-eu2.cdn-perfprod.com" # (Europe 2)
"https://lb-eu4.cdn-perfprod.com" # (Europe 4)
"https://lb-eu5.cdn-perfprod.com" # (Europe 5)
"https://lb-eu3.cdn-perfprod.com" # (Europe 3, using Russia-only proxies)
"https://lb-na.cdn-perfprod.com" # (NA)
"https://lb-as.cdn-perfprod.com" # (Asia)
"https://lb-sa.cdn-perfprod.com" # (SA)
];
in
{
programs.streamlink = {
enable = true;
settings = {
player = "${pkgs.mpv}/bin/mpv";
player-args = "--cache 2048";
player-no-close = true;
twitch-low-latency = true;
twitch-disable-ads = true;
default-stream = "best";
};
plugins = {
# It is important this is called "twitch" and overwrites the default plugin
twitch = {
settings = {
twitch-proxy-playlist = lib.concatStringsSep "," proxies;
};
src = builtins.readFile (pkgs.fetchurl {
url = "https://github.com/2bc4/streamlink-ttvlol/releases/download/7.0.0-20241105/twitch.py";
hash = "sha256-WbxLNkxG64BlnfI/RwY5N0bqEkO/D6u14nYMyTuveN8=";
});
};
};
};
}

View File

@@ -1,2 +1,2 @@
#!/usr/bin/env bash #!/usr/bin/env bash
sudo nixos-rebuild switch --flake "/home/worble/Projects/nixos#$(hostname)" sudo nixos-rebuild switch --flake "$HOME/Projects/nixos/devices/$(hostname)#$(hostname)"