Compare commits

...

28 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
29 changed files with 703 additions and 365 deletions

View File

@@ -6,6 +6,7 @@
./location-time.nix
./networking.nix
./nix-settings.nix
./oomd.nix
./pipewire.nix
./programs.nix
];

View File

@@ -5,14 +5,14 @@
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking = {
nftables = {
enable = true;
};
networkmanager = {
# Easiest to use and most distros use this by default.
enable = true;
wifi.powersave = false;
};
firewall = {
enable = true;
};
};
# Configure network proxy if necessary
@@ -23,7 +23,6 @@
# services.printing.enable = true;
# Open ports in the firewall.
networking.firewall.enable = true;
# 443 Helldivers crashes internet otherwise
# networking.firewall.allowedTCPPorts = [ 443 ];
# networking.firewall.allowedUDPPorts = [ 443 ];

View File

@@ -1,4 +1,4 @@
{ ... }:
{ inputs, ... }:
{
nixpkgs.config.allowUnfree = true;
@@ -6,6 +6,8 @@
nix.settings.auto-optimise-store = true;
nix.gc.automatic = true;
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 = {
enable = true;

View File

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

View File

@@ -8,30 +8,30 @@
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
environment.systemPackages = with pkgs; [
# utils
uutils-coreutils-noprefix
vim
curl
inetutils
dig
exfatprogs
rar
zstd
xz
p7zip
rar
zstd
p7zip
busybox
libva-utils
smartmontools
appimage-run
libva-utils
smartmontools
appimage-run
# dicts
nuspell
hunspellDicts.en-gb-large
# dicts
nuspell
hunspellDicts.en-gb-large
# For cursor in steam?
xsettingsd
xorg.xrdb
];
# For cursor in steam?
xsettingsd
xorg.xrdb
];
}

View File

@@ -8,14 +8,13 @@
programs.gamescope = {
enable = true;
# capSysNice = true;
# args = [
# "-H 1080"
# ];
args = [
"-H 1080"
];
};
programs.steam = {
enable = true;
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;
protontricks.enable = true;
extraCompatPackages = [ pkgs.proton-ge-bin ];
@@ -36,4 +35,9 @@
};
programs.cdemu.enable = true; # Remember to add users to the cdrom group for this to work
environment.systemPackages = with pkgs;[
lsfg-vk
lsfg-vk-ui
];
}

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

@@ -1,15 +1,5 @@
{ pkgs, lib, ... }:
{ pkgs, ... }:
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
@@ -20,11 +10,6 @@ in
services.displayManager.sddm = {
enable = true;
wayland.enable = true;
settings = {
Wayland = {
CompositorCommand = kwin;
};
};
};
services.desktopManager.plasma6.enable = true;
environment.plasma6.excludePackages = [ pkgs.kdePackages.discover ];
@@ -34,15 +19,11 @@ in
programs.partition-manager.enable = true;
environment.systemPackages = with pkgs;
[
maliit-keyboard
exfatprogs
] ++ (with kdePackages; [
sddm-kcm
plasma-disks
filelight
ffmpegthumbs
kcalc
]);
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.tlp = {
enable = true;
settings = {
RESTORE_DEVICE_STATE_ON_STARTUP = 1;
USB_AUTOSUSPEND = 0;
PLATFORM_PROFILE_ON_AC = "performance";
PLATFORM_PROFILE_ON_BAT = "low-power";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
CPU_BOOST_ON_AC = 1;
CPU_BOOST_ON_BAT = 0;
};
};
services.power-profiles-daemon.enable = true;
# services.tlp = {
# enable = true;
# settings = {
# RESTORE_DEVICE_STATE_ON_STARTUP = 1;
# USB_AUTOSUSPEND = 0;
# PLATFORM_PROFILE_ON_AC = "performance";
# PLATFORM_PROFILE_ON_BAT = "low-power";
# CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
# CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power";
# CPU_BOOST_ON_AC = 1;
# 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;
}

View File

@@ -1,39 +1,53 @@
{ pkgs, ... }:
{ pkgs, lib, config, ... }:
with lib;
{
virtualisation = {
containers = {
# Enable common container config files in /etc/containers
enable = true;
};
libvirtd = {
enable = true;
qemu = {
vhostUserPackages = [ pkgs.virtiofsd ];
ovmf.enable = true;
options.virtualisation.containerManagement = mkOption {
type = types.enum [ "docker" "podman" ];
default = "docker";
};
config = {
virtualisation = {
containers = {
# Enable common container config files in /etc/containers
enable = true;
};
libvirtd = {
enable = true;
qemu = {
vhostUserPackages = [ pkgs.virtiofsd ];
};
};
# 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;
};
};
# podman = {
# enable = true;
# dockerSocket.enable = true;
# dockerCompat = true;
# defaultNetwork.settings.dns_enabled = true;
# };
# remember to add the necessary users to the docker group
docker = {
enable = true;
storageDriver = "btrfs";
};
# waydroid = {
# enable = true;
# };
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;[
# docker-compose
# # podman-compose
# podman-tui
# podman-desktop
# ];
}

View File

@@ -1,10 +1,10 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05?shallow=1";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable?shallow=1"; # use by inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".[package name]
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.05?shallow=1";
url = "github:nix-community/home-manager/release-25.11?shallow=1";
inputs.nixpkgs.follows = "nixpkgs";
};
@@ -13,25 +13,20 @@
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";
system-manager = {
url = "github:numtide/system-manager?shallow=1";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-system-graphics = {
url = "github:soupglasses/nix-system-graphics?shallow=1";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = { self, nixpkgs, nixos-hardware, home-manager, system-manager, nix-system-graphics, nix-index-database, ... }@inputs:
outputs = { nixpkgs, home-manager, system-manager, nix-system-graphics, nix-index-database, ... }@inputs:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
@@ -40,25 +35,12 @@
};
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 {
inherit pkgs;
extraSpecialArgs = { inherit inputs; };
modules = [
nix-index-database.homeModules.nix-index
./devices/deck/home.nix
./home.nix
];
};
systemConfigs.deck = system-manager.lib.makeSystemConfig {

View File

@@ -1,7 +1,7 @@
{ pkgs, ... }:
let
homeUpdateLocation = "/home/deck/Projects/nixos#deck";
homeUpdateLocation = "/home/deck/Projects/nixos/devices/deck#deck";
in
{
imports = [
@@ -11,7 +11,7 @@ in
];
terminal.homeUpdateLocation = homeUpdateLocation;
terminal.flakeUpdateLocation = "/home/deck/Projects/nixos";
terminal.flakeUpdateLocation = "/home/deck/Projects/nixos/devices/deck";
nixpkgs.config = {
allowUnfree = true;

View File

@@ -7,11 +7,11 @@
]
},
"locked": {
"lastModified": 1758287904,
"narHash": "sha256-IGmaEf3Do8o5Cwp1kXBN1wQmZwQN3NLfq5t4nHtVtcU=",
"lastModified": 1760701190,
"narHash": "sha256-y7UhnWlER8r776JsySqsbTUh2Txf7K30smfHlqdaIQw=",
"owner": "nix-community",
"repo": "disko",
"rev": "67ff9807dd148e704baadbd4fd783b54282ca627",
"rev": "3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5",
"type": "github"
},
"original": {
@@ -20,24 +20,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": [
@@ -66,11 +48,11 @@
]
},
"locked": {
"lastModified": 1759637156,
"narHash": "sha256-8NI1SqntLfKl6Q0Luemc3aIboezSJElofUrqipF5g78=",
"lastModified": 1760846226,
"narHash": "sha256-xmU8kAsRprJiTGBTaGrwmjBP3AMA9ltlrxHKFuy5JWc=",
"owner": "nix-community",
"repo": "nix-index-database",
"rev": "0ca69684091aa3a6b1fe994c4afeff305b15e915",
"rev": "5024e1901239a76b7bf94a4cd27f3507e639d49e",
"type": "github"
},
"original": {
@@ -79,37 +61,16 @@
"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": 1760071578,
"narHash": "sha256-MZUsqax6PoXPDzhpLyduHoPY4CYYrzL97uKbsx/iGPE=",
"lastModified": 1761098495,
"narHash": "sha256-aE2Vp0Q/Ra95sHk/YgQI6z9PvqPttgcIVUk3uSOWj9g=",
"owner": "nix-community",
"repo": "nix-vscode-extensions",
"rev": "65365fe8c09b6c1b6bba1885a126723815376b1b",
"rev": "bd4690e402591e99a091dcd49663d3d6c9bf0ada",
"type": "github"
},
"original": {
@@ -120,11 +81,11 @@
},
"nixos-hardware": {
"locked": {
"lastModified": 1760106635,
"narHash": "sha256-2GoxVaKWTHBxRoeUYSjv0AfSOx4qw5CWSFz2b+VolKU=",
"lastModified": 1760958188,
"narHash": "sha256-2m1S4jl+GEDtlt2QqeHil8Ny456dcGSKJAM7q3j/BFU=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "9ed85f8afebf2b7478f25db0a98d0e782c0ed903",
"rev": "d6645c340ef7d821602fd2cd199e8d1eed10afbc",
"type": "github"
},
"original": {
@@ -152,11 +113,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1760038930,
"narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=",
"lastModified": 1760878510,
"narHash": "sha256-K5Osef2qexezUfs0alLvZ7nQFTGS9DL2oTVsIXsqLgs=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3",
"rev": "5e2a59a5b1a82f89f2c7e598302a9cacebb72a67",
"type": "github"
},
"original": {
@@ -168,11 +129,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1759994382,
"narHash": "sha256-wSK+3UkalDZRVHGCRikZ//CyZUJWDJkBDTQX1+G77Ow=",
"lastModified": 1760862643,
"narHash": "sha256-PXwG0TM7Ek87DNx4LbGWuD93PbFeKAJs4FfALtp7Wo0=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "5da4a26309e796daa7ffca72df93dbe53b8164c7",
"rev": "33c6dca0c0cb31d6addcd34e90a63ad61826b28c",
"type": "github"
},
"original": {
@@ -187,47 +148,10 @@
"disko": "disko",
"home-manager": "home-manager",
"nix-index-database": "nix-index-database",
"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": 1756281415,
"narHash": "sha256-CjpoVwpJJ+DOZilPrDpZ5S3V+B1Y0calaHxTp2xMvGs=",
"owner": "numtide",
"repo": "system-manager",
"rev": "e271eedac9a24678ca6cfc61677837422bf474e0",
"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"
"nixpkgs-unstable": "nixpkgs-unstable"
}
}
},

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

@@ -6,8 +6,8 @@
../../home-manager/development/vscode.nix
];
terminal.nixUpdateLocation = "/home/worble/Projects/nixos#starlite";
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos";
terminal.nixUpdateLocation = "/home/worble/Projects/nixos/devices/starlite#starlite";
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos/devices/starlite";
firefox.tablet = true;
home.username = "worble";

View File

@@ -17,26 +17,25 @@
../../configuration/modules/virtualisation.nix
../../configuration/modules/gaming.nix
../../configuration/modules/kde.nix
../../configuration/modules/i18n.nix
];
networking.hostName = "tuxedo"; # Define your hostname.
# fairly sure this isnt needed anymore
# boot.extraModprobeConfig = ''
# options iwlwifi 11n_disable=8 power_save=0
# options iwlmvm power_scheme=1
# '';
# TODO remove ntsync if this becomes stable
# 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 = ''
ntsync
options iwlmvm power_scheme=1
options iwlwifi 11n_disable=4
options iwlwifi 11n_disable=8 power_save=0
'';
services.hardware.openrgb.enable = true;
boot.kernelModules = [
"ntsync"
];
# services.hardware.openrgb.enable = true;
virtualisation.containerManagement = "docker";
fileSystems."/mnt/HDD2" = {
fsType = "ext4";
@@ -58,7 +57,7 @@
dumpcap.enable = true;
};
programs.gpu-screen-recorder.enable = true; # For promptless recording on both CLI and GUI
# programs.gpu-screen-recorder.enable = true; # For promptless recording on both CLI and GUI
# programs.obs-studio = {
# enable = true;
@@ -68,9 +67,6 @@
environment.systemPackages = with pkgs;[
distrobox
gpu-screen-recorder-gtk
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".lsfg-vk
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".lsfg-vk-ui
];
# Define a user account. Don't forget to set a password with passwd.
@@ -84,6 +80,7 @@
"podman"
"cdrom"
"wireshark"
"kvm" # for android studio
]; # Enable sudo for the user.
linger = true;
};

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,4 +1,4 @@
{ pkgs, config, ... }:
{ pkgs, config, inputs, ... }:
{
imports = [
@@ -8,9 +8,10 @@
../../home-manager/streamlink.nix
];
terminal.nixUpdateLocation = "/home/worble/Projects/nixos#tuxedo";
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos";
terminal.nixUpdateLocation = "/home/worble/Projects/nixos/devices/tuxedo#tuxedo";
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos/devices/tuxedo";
helix.fullInstall = true;
mpv.high-quality = true;
home.username = "worble";
home.homeDirectory = "/home/worble";
@@ -33,29 +34,23 @@
teamspeak6-client
# media
jellyfin-media-player
# TODO: disabled due to qt5-web-engine vulnerable https://github.com/NixOS/nixpkgs/pull/435067
# jellyfin-media-player
haruna
# misc
electrum
syncthing
# TODO: uncomment when ecdsa is updated
# https://github.com/NixOS/nixpkgs/pull/456881
# electrum
dbeaver-bin
ruffle
popsicle
mkvtoolnix
# for headset tune
headsetcontrol
];
home.file = {
# shaders for mpv
".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.
programs = {
firefox = {
@@ -74,37 +69,17 @@
mpv = {
config = {
profile = "gpu-hq";
vo = "gpu-next";
gpu-api = "auto";
gpu-context = "auto";
hwdec = "auto";
screenshot-directory = "/mnt/HDD2/Pictures/";
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 = {
enable = true;
topgrade = {
settings = {
preset = 1;
misc = {
ignore_failures = [ "containers" ];
};
};
};
kodi = {
enable = true;
package = pkgs.kodi.withPackages (exts: [ exts.pvr-iptvsimple ]);
};
};
systemd.user = {

View File

@@ -1,2 +1,2 @@
#!/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,30 +1,72 @@
{ pkgs, lib, ... }:
{ pkgs, lib, config, ... }:
with lib;
{
programs = {
mpv = {
enable = true;
package = (
pkgs.mpv-unwrapped.wrapper {
scripts = with pkgs.mpvScripts; [
uosc
sponsorblock
];
options.mpv = {
high-quality = mkOption {
type = types.bool;
default = false;
};
};
mpv = pkgs.mpv-unwrapped;
}
);
config = {
screenshot-directory = lib.mkDefault "~/Pictures/";
screenshot-template = lib.mkDefault "%F/%F_snapshot_%P";
sub-ass-use-video-data = lib.mkDefault "aspect-ratio";
};
scriptOpts = {
uosc = {
time_precision = 3;
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

@@ -51,10 +51,14 @@ with lib;
enableFishIntegration = true;
};
delta = {
enable = true;
enableGitIntegration = true;
};
git = {
enable = true;
delta.enable = true;
extraConfig = {
settings = {
credential = {
helper = [ "cache --timeout 21600" "${pkgs.git-credential-manager}/bin/git-credential-manager" "${pkgs.git-credential-oauth}/bin/git-credential-oauth" ];
credentialStore = "secretservice";
@@ -174,6 +178,24 @@ with lib;
settings = mkMerge [{
misc = {
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) {
@@ -188,11 +210,7 @@ with lib;
})
(mkIf (flakeUpdateLocation != null) {
pre_commands = {
nix-flake-update = "${(pkgs.writeShellScriptBin "nix-flake-update" ''
git -C ${flakeUpdateLocation} pull --quiet
sudo nix flake update --flake ${flakeUpdateLocation}
git -C ${flakeUpdateLocation} diff-index --quiet HEAD flake.lock || git -C ${flakeUpdateLocation} commit --quiet flake.lock -m "update flake.lock"
'')}/bin/nix-flake-update";
nix-flake-update = "${(pkgs.writeShellScriptBin "nix-flake-update" "sudo nix flake update --flake ${flakeUpdateLocation}")}/bin/nix-flake-update";
};
})];
};

View File

@@ -1,4 +1,4 @@
{ pkgs, inputs, lib, ... }:
{ pkgs, lib, ... }:
{
imports = [
@@ -9,14 +9,17 @@
home.packages = with pkgs;[
# general
thunderbird
keepassxc
qbittorrent
libreoffice-qt
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".joplin-desktop
# 25.11 Can move to stable when https://github.com/NixOS/nixpkgs/pull/460058 gets backported
joplin-desktop
# comms
teamspeak_client
# TODO: disabled due to qt5-web-engine vulnerable https://github.com/NixOS/nixpkgs/pull/435067
# teamspeak3
teamspeak6-client
discord
vesktop
# media
strawberry
@@ -32,6 +35,12 @@
};
};
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";
};
@@ -49,5 +58,11 @@
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,6 +2,7 @@
{
imports = [
# ./android.nix
./dotnet.nix
./games.nix
./helix.nix

View File

@@ -3,6 +3,26 @@
let
openvsx = inputs.nix-vscode-extensions.extensions.x86_64-linux.open-vsx;
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
{
home.packages = with pkgs;[
@@ -17,7 +37,9 @@ in
profiles.default = {
enableUpdateCheck = false;
enableExtensionUpdateCheck = false;
extensions = (with openvsx;[
extensions = [
resharper-code # Requires DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
] ++ (with openvsx;[
biomejs.biome
mkhl.direnv
dracula-theme.theme-dracula

View File

@@ -1,66 +1,104 @@
{ tablet }:
{ tablet ? false }:
{
settings = {
# data privacy
"browser.discovery.enabled" = false;
"dom.security.https_only_mode" = true;
# no autofill
"extensions.formautofill.addresses.enabled" = false;
"extensions.formautofill.creditCards.enabled" = false;
# stop fonts
"browser.display.use_document_fonts" = 0;
# dont show about:config warning
"browser.aboutConfig.showWarning" = false;
# dont offer to save passwords
"signon.rememberSignons" = false;
# home page
"browser.startup.homepage" = "about:blank";
# blank new tab
"browser.newtabpage.enabled" = false;
# compact density
"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
"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
"ui.key.menuAccessKeyFocuses" = false;
# use desktop file picker
"widget.use-xdg-desktop-portal.file-picker" = 1;
# sidebar at right
"sidebar.position_start" = false;
# new sidebar
"sidebar.revamp" = if tablet then true else false;
"sidebar.verticalTabs" = if tablet then true else false;
"sidebar.revamp" = true;
"sidebar.verticalTabs" = true;
"browser.tabs.hoverPreview.enabled" = false;
"browser.tabs.hoverPreview.showThumbnails" = false;
"browser.tabs.groups.hoverPreview.enabled" = false;
# disable pocket
"extensions.pocket.enabled" = false;
# browser links should be new tab
"browser.link.open_newwindow.restriction" = 0;
# allow custom search enginers
# allow custom search engines
"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
"media.hardware-video-decoding.force-enabled" = true;
# vaapi
"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;
# downloads always ask download location
# always ask download location
"browser.download.useDownloadDir" = false;
# download to tmp dir, NOT Downloads (seriously Mozilla?)
"browser.download.start_downloads_in_tmp_dir" = true;
# widevine
"browser.eme.ui.enabled" = false;
"media.eme.enabled" = false;
# media control keys
"media.hardwaremediakeys.enabled" = false;
# restore tabs on startup
"browser.startup.page" = 3;
# do not trim http
"browser.urlbar.trimURLs" = false;
# 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 */
@@ -139,16 +177,19 @@
"browser.contentblocking.category" = "strict";
};
userChrome = ''
/* Hide tab bar in FF Quantum */
@-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml) {
#TabsToolbar {
visibility: collapse !important;
margin-bottom: 21px !important;
}
/* Remove old sidebar header */
#sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header {
display: none;
}
#sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header {
visibility: collapse !important;
}
/* Remove sidebar revamp header */
#sidebar-panel-header {
display: none;
}
/* Allow complete collapse of sidebar revamp */
#sidebar-main:not([sidebar-launcher-expanded]) {
width: 0;
}
'';
}

View File

@@ -1,29 +1,60 @@
{ 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;[
# Wine / Proton
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".wineWowPackages.stagingFull
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".winetricks
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".umu-launcher
# I'm not sure this actually accomplishes anything, even with PROTON_MEDIA_USE_GST=1
# (umu-launcher.override {
# extraPkgs = pkgs: with pkgs.gst_all_1; [
# gstreamer
# gst-plugins-base
# gst-plugins-good
# gst-plugins-bad
# gst-plugins-ugly
# gst-libav
# gst-vaapi
# ];
# })
umu-wrapped
umu-ja
wine-wrapped
wine-ja
pkgs_unstable.winetricks
bottles
(heroic.override {
extraPkgs = pkgs: [
pkgs.umu-launcher
pkgs.gamescope
pkgs.mangohud
];
})
@@ -31,17 +62,25 @@
steamguard-cli
# Emulators
ryubing
pkgs_unstable.ryubing
mgba
# Cheat engine
scanmem
];
# programs.lutris = {
# enable = true;
# extraPackages = with pkgs; [ mangohud winetricks gamescope gamemode umu-launcher ];
# protonPackages = [ pkgs.proton-ge-bin ];
# winePackages = [ pkgs.wineWowPackages.staging ];
# };
programs = {
mangohud = {
enable = true;
enableSessionWide = true;
settings = {
preset = 1;
};
settingsPerApplication = {
mpv = {
no_display = true;
};
};
};
};
}

View File

@@ -1,2 +1,2 @@
#!/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)"