Compare commits
173 Commits
9bc902cb90
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 16980bf9f4 | |||
| 4fc8b0f4fa | |||
| 3a9d27adb8 | |||
| 079ba8a9d5 | |||
| 48c40f8124 | |||
| c3171bd792 | |||
| a64a137724 | |||
| d776ce0667 | |||
| 70a7c6d30a | |||
| f648311d04 | |||
| 8f5a18577f | |||
| 4a49961bc0 | |||
| 9f51eaf5fc | |||
| bfc2435b43 | |||
| 86abbf360e | |||
| f33924569f | |||
| 72558d3d07 | |||
| 03f7b779bd | |||
| 21f1600fdc | |||
| c55f1eb9d7 | |||
| c7d7cb845b | |||
| 30441810be | |||
| 531fafcb52 | |||
| 89a15a63e8 | |||
| 66e7e4fdc0 | |||
| f66ef91e85 | |||
| d5d9396b6d | |||
| fb5b7abbd4 | |||
| 4684925c97 | |||
| c4b4e682b1 | |||
| 950fe60383 | |||
| 6c69dab6fa | |||
| 8a3698ce15 | |||
| 869c6b4707 | |||
| 25158bedf1 | |||
| 363f42c829 | |||
| 38f691cacd | |||
| e592ca5e0a | |||
| bf6f379a4f | |||
| 6378246c2c | |||
| 300c36245e | |||
| 9ef91f7ab5 | |||
| 249afa0b65 | |||
| 730b115bf8 | |||
| 499900014e | |||
| 80c13f0ee3 | |||
| 7049373384 | |||
| 12cab79679 | |||
| cf9b2a0cdb | |||
| 6a45fca8d5 | |||
| db9826339f | |||
| 00b67e55bc | |||
| 3d037d2dbd | |||
| 7adcf7baa5 | |||
| ac5216413e | |||
| 93cee2d49a | |||
| 0a9037abaa | |||
| 49bca53aa7 | |||
| 3fe1471c0f | |||
| 226188b263 | |||
| d3bf4cce17 | |||
| a8480384e7 | |||
| a60c7b8ca5 | |||
| a3073c0895 | |||
| 8b472eae63 | |||
| 190c58639f | |||
| 03efdeddc5 | |||
| edd7dbccfa | |||
| 41dc3f8112 | |||
| e7233faed1 | |||
| dd4ca5a69e | |||
| cd1aac83b2 | |||
| 20d5a43dd7 | |||
| 6ecc69eb2e | |||
| beac80516d | |||
| d6d6603df6 | |||
| 4e6e74b2f8 | |||
| 03e1cf00a1 | |||
| ab7b90bcb2 | |||
| e230dea138 | |||
| 19fa7c2fc1 | |||
| c5d34c86b8 | |||
| 3b557449c9 | |||
| 074962e7a9 | |||
| e4b45eeb4a | |||
| 36264583b2 | |||
| c2dd8138aa | |||
| 7d0c3d2751 | |||
| 7a16c9dc40 | |||
| b7ada15fb9 | |||
| bd5507a366 | |||
| d8538369ef | |||
| 8233861699 | |||
| b9e7e22ddd | |||
| c08da164ac | |||
| 2fbd529e59 | |||
| 0dec323af5 | |||
| 27b3ec6a46 | |||
| 4c06e18113 | |||
| 617cf08fc8 | |||
| 761000913a | |||
| e5503bbf58 | |||
| a997dee6ba | |||
| 739518cdac | |||
| 72ae66c403 | |||
| fe9531c732 | |||
| a1f96ee51d | |||
| 7b4c789cae | |||
| 52d33c1204 | |||
| ed349bd4e6 | |||
| 55c0df89fd | |||
| 6981f2cee2 | |||
| 5a63b14c5b | |||
| 730bfc0d28 | |||
| 56467e6f40 | |||
| 9fed42aba1 | |||
| c2472925bf | |||
| e192b9401d | |||
| 60b79b65b5 | |||
| 55a3afc085 | |||
| 7acbaa0a6d | |||
| 347cc444b9 | |||
| 5159cf50c9 | |||
| 2c1dfb7eb8 | |||
| 2b1fa4df5b | |||
| f72b5ef8a8 | |||
| c1ad79003d | |||
| f9e672cb8f | |||
| ae21fe1426 | |||
| 0e6929eeed | |||
| 7767ff77ba | |||
| a04a6b81f1 | |||
| 57901ae14e | |||
| 73325a848c | |||
| 7da24cbbfb | |||
| fc60f584cf | |||
| 95608f2bfa | |||
| 64eae63335 | |||
| f34bf9c853 | |||
| ce675dd168 | |||
| aa9a9df476 | |||
| 32355dd7ee | |||
| 218f8fa0e7 | |||
| 3466a8aba0 | |||
| 72cbcd5551 | |||
| 340a2ab92f | |||
| 6046f90c81 | |||
| 3221c78b23 | |||
| ee264ae42d | |||
| 8f5e6d6c10 | |||
| f83178aa06 | |||
| 9c35d324b9 | |||
| e8ee2672c9 | |||
| 82cbe88da2 | |||
| 3aa4557971 | |||
| 18c9a5d628 | |||
| dbbfc3d8ff | |||
| 769dc917b5 | |||
| 5e771a9c2c | |||
| 632a1f13c5 | |||
| e0d0619dcb | |||
| d89718daa3 | |||
| 36fa73a3b6 | |||
| 13a7e9b0db | |||
| 89ceac6561 | |||
| aa1c23af60 | |||
| 7ffb78ab59 | |||
| d8ff719ba7 | |||
| 68bdb4862f | |||
| ac0d3e85a0 | |||
| 88bc79b530 | |||
| bbc1933f92 | |||
|
|
6b166adadf |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
result
|
||||||
13
configuration/base/default.nix
Normal file
13
configuration/base/default.nix
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./fonts.nix
|
||||||
|
./location-time.nix
|
||||||
|
./networking.nix
|
||||||
|
./nix-settings.nix
|
||||||
|
./oomd.nix
|
||||||
|
./pipewire.nix
|
||||||
|
./programs.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -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 = {
|
||||||
|
|||||||
@@ -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;
|
|
||||||
|
|
||||||
# Specific fix 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
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
14
configuration/base/location-time.nix
Normal file
14
configuration/base/location-time.nix
Normal 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";
|
||||||
|
};
|
||||||
|
}
|
||||||
41
configuration/base/networking.nix
Normal file
41
configuration/base/networking.nix
Normal 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;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
# };
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
10
configuration/base/oomd.nix
Normal file
10
configuration/base/oomd.nix
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
systemd.oomd = {
|
||||||
|
enable = true;
|
||||||
|
enableRootSlice = true;
|
||||||
|
enableSystemSlice = true;
|
||||||
|
enableUserSlices = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
35
configuration/base/pipewire.nix
Normal file
35
configuration/base/pipewire.nix
Normal 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"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
37
configuration/base/programs.nix
Normal file
37
configuration/base/programs.nix
Normal 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
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -5,85 +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;
|
|
||||||
services.flatpak.enable = true;
|
|
||||||
|
|
||||||
# List packages installed in system profile. To search, run:
|
|
||||||
# $ nix search wget
|
|
||||||
environment.systemPackages = with pkgs;
|
|
||||||
[
|
|
||||||
nixpkgs-fmt
|
|
||||||
|
|
||||||
gcc
|
|
||||||
|
|
||||||
vim
|
|
||||||
curl
|
|
||||||
wget
|
|
||||||
inetutils
|
|
||||||
rar
|
|
||||||
|
|
||||||
nuspell
|
|
||||||
hunspellDicts.en-gb-ise
|
|
||||||
|
|
||||||
libva-utils
|
|
||||||
smartmontools
|
|
||||||
];
|
|
||||||
|
|
||||||
# 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.
|
||||||
@@ -98,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.
|
||||||
@@ -131,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?
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,19 +1,43 @@
|
|||||||
{ ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
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 ];
|
||||||
|
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
|
||||||
programs.cdemu.enable = true;
|
|
||||||
|
environment.systemPackages = with pkgs;[
|
||||||
|
lsfg-vk
|
||||||
|
lsfg-vk-ui
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
27
configuration/modules/gnome.nix
Normal file
27
configuration/modules/gnome.nix
Normal 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
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
24
configuration/modules/i18n.nix
Normal file
24
configuration/modules/i18n.nix
Normal 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
|
||||||
|
];
|
||||||
|
}
|
||||||
29
configuration/modules/kde.nix
Normal file
29
configuration/modules/kde.nix
Normal 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
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,27 +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 podman group
|
enable = true;
|
||||||
podman = {
|
};
|
||||||
enable = true;
|
libvirtd = {
|
||||||
# Create a `docker` alias for podman, to use it as a drop-in replacement
|
enable = true;
|
||||||
dockerCompat = true;
|
qemu = {
|
||||||
# Required for containers under podman-compose to be able to talk to each other.
|
vhostUserPackages = [ pkgs.virtiofsd ];
|
||||||
defaultNetwork.settings.dns_enabled = true;
|
};
|
||||||
};
|
};
|
||||||
waydroid = {
|
# remember to add the necessary users to the podman group
|
||||||
enable = true;
|
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,28 +1,32 @@
|
|||||||
{
|
{
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11?shallow=1";
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
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";
|
|
||||||
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions?rev=a81daa13ca23440d8ae219d765140769c4d2f117";
|
|
||||||
home-manager = {
|
home-manager = {
|
||||||
url = "github:nix-community/home-manager/release-24.11";
|
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";
|
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";
|
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";
|
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 = [
|
||||||
@@ -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;
|
||||||
@@ -25,7 +25,6 @@ in
|
|||||||
|
|
||||||
home.packages = with pkgs;[
|
home.packages = with pkgs;[
|
||||||
system-manager
|
system-manager
|
||||||
nextcloud-client
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home.file = {
|
home.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
160
devices/starlite/flake.lock
generated
Normal 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
|
||||||
|
}
|
||||||
35
devices/starlite/flake.nix
Normal file
35
devices/starlite/flake.nix
Normal 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
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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";
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
@@ -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" "podman" "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
143
devices/tuxedo/flake.lock
generated
Normal 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
33
devices/tuxedo/flake.nix
Normal 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
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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
|
|
||||||
|
|
||||||
# misc
|
# misc
|
||||||
electrum
|
# TODO: uncomment when ecdsa is updated
|
||||||
gpu-screen-recorder-gtk
|
# https://github.com/NixOS/nixpkgs/pull/456881
|
||||||
syncthing
|
# electrum
|
||||||
|
dbeaver-bin
|
||||||
|
ruffle
|
||||||
|
popsicle
|
||||||
|
mkvtoolnix
|
||||||
|
|
||||||
|
# for headset tune
|
||||||
|
headsetcontrol
|
||||||
];
|
];
|
||||||
|
|
||||||
home.file = {
|
|
||||||
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
|
||||||
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
|
||||||
# # symlink to the Nix store copy.
|
|
||||||
# ".screenrc".source = dotfiles/screenrc;
|
|
||||||
|
|
||||||
# # You can also set the file content immediately.
|
|
||||||
# ".gradle/gradle.properties".text = ''
|
|
||||||
# org.gradle.console=verbose
|
|
||||||
# org.gradle.daemon.idletimeout=3600000
|
|
||||||
# '';
|
|
||||||
};
|
|
||||||
|
|
||||||
# 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;
|
||||||
@@ -71,39 +67,29 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# install the shaders from anime4k directory for this to work
|
|
||||||
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";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
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 = {
|
||||||
@@ -111,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";
|
||||||
@@ -118,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"
|
||||||
@@ -130,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
3
fix-nix.sh
Normal 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
|
||||||
233
flake.lock
generated
233
flake.lock
generated
@@ -1,233 +0,0 @@
|
|||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"disko": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1739841949,
|
|
||||||
"narHash": "sha256-lSOXdgW/1zi/SSu7xp71v+55D5Egz8ACv0STkj7fhbs=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "disko",
|
|
||||||
"rev": "15dbf8cebd8e2655a883b74547108e089f051bf0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "disko",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat": {
|
|
||||||
"flake": false,
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696426674,
|
|
||||||
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "edolstra",
|
|
||||||
"repo": "flake-compat",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils": {
|
|
||||||
"inputs": {
|
|
||||||
"systems": "systems"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1710146030,
|
|
||||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1739757849,
|
|
||||||
"narHash": "sha256-Gs076ot1YuAAsYVcyidLKUMIc4ooOaRGO0PqTY7sBzA=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "9d3d080aec2a35e05a15cedd281c2384767c2cfe",
|
|
||||||
"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-compat": "flake-compat",
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1739976069,
|
|
||||||
"narHash": "sha256-vIO9uus9qQ/k5w0iPjOwNLHPL9vIx/YG8GLxfC5yr3M=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nix-vscode-extensions",
|
|
||||||
"rev": "a81daa13ca23440d8ae219d765140769c4d2f117",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nix-vscode-extensions",
|
|
||||||
"rev": "a81daa13ca23440d8ae219d765140769c4d2f117",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixos-hardware": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1740089251,
|
|
||||||
"narHash": "sha256-Y78mDBWoO8CLLTjQfPfII+KXFb6lAmF9GrLbyVBsIMM=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixos-hardware",
|
|
||||||
"rev": "18e9f9753e9ae261bcc7d3abe15745686991fd30",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "master",
|
|
||||||
"repo": "nixos-hardware",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1713805509,
|
|
||||||
"narHash": "sha256-YgSEan4CcrjivCNO5ZNzhg7/8ViLkZ4CB/GrGBVSudo=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "1e1dc66fe68972a76679644a5577828b6a7e8be4",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs-unstable": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1740126099,
|
|
||||||
"narHash": "sha256-ozoOtE2hGsqh4XkTJFsrTkNxkRgShxpQxDynaPZUGxk=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "32fb99ba93fea2798be0e997ea331dd78167f814",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixos-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs_2": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1740162160,
|
|
||||||
"narHash": "sha256-SSYxFhqCOb3aiPb6MmN68yEzBIltfom8IgRz7phHscM=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "11415c7ae8539d6292f2928317ee7a8410b28bb9",
|
|
||||||
"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": 1739316420,
|
|
||||||
"narHash": "sha256-FZBKtR8mqbcEazdpI1SoID43FeldQPhjnvluUO9HAaI=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "system-manager",
|
|
||||||
"rev": "82d5a9ecd15ec48bcbfbacf5462066ee267d6aae",
|
|
||||||
"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
|
|
||||||
}
|
|
||||||
@@ -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)"
|
||||||
|
|||||||
@@ -1,49 +0,0 @@
|
|||||||
{ pkgs, lib, config, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
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
|
|
||||||
];
|
|
||||||
|
|
||||||
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;
|
|
||||||
config = {
|
|
||||||
screenshot-directory = "~/Pictures/";
|
|
||||||
screenshot-template = "%F/%F_snapshot_%P";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
9
home-manager/base/default.nix
Normal file
9
home-manager/base/default.nix
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{ ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./fonts.nix
|
||||||
|
./mpv.nix
|
||||||
|
./terminal.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -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
72
home-manager/base/mpv.nix
Normal 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 "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -8,63 +8,59 @@ 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" ]; })
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home.file = {
|
|
||||||
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
|
||||||
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
|
||||||
# # symlink to the Nix store copy.
|
|
||||||
# ".screenrc".source = dotfiles/screenrc;
|
|
||||||
|
|
||||||
# # You can also set the file content immediately.
|
|
||||||
# ".gradle/gradle.properties".text = ''
|
|
||||||
# org.gradle.console=verbose
|
|
||||||
# org.gradle.daemon.idletimeout=3600000
|
|
||||||
# '';
|
|
||||||
|
|
||||||
#".gitconfig".source = ./dotfiles/gitconfig;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
bash = {
|
bash = {
|
||||||
enable = true;
|
enable = true;
|
||||||
bashrcExtra = ''
|
initExtra = ''
|
||||||
function y() {
|
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
|
||||||
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")" cwd
|
then
|
||||||
yazi "$@" --cwd-file="$tmp"
|
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||||
if cwd="$(command cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
|
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||||
builtin cd -- "$cwd"
|
fi
|
||||||
fi
|
|
||||||
rm -f -- "$tmp"
|
|
||||||
}
|
|
||||||
source $(blesh-share)/ble.sh
|
|
||||||
bleopt canvas_winch_action=redraw-prev
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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-oauth}/bin/git-credential-oauth" "${pkgs.git-credential-manager}/bin/git-credential-manager" ];
|
helper = [ "cache --timeout 21600" "${pkgs.git-credential-manager}/bin/git-credential-manager" "${pkgs.git-credential-oauth}/bin/git-credential-oauth" ];
|
||||||
credentialStore = "secretservice";
|
credentialStore = "secretservice";
|
||||||
};
|
};
|
||||||
"credential \"https://dev.azure.com\"" = {
|
"credential \"https://dev.azure.com\"" = {
|
||||||
@@ -73,6 +69,35 @@ with lib;
|
|||||||
"credential \"https://git.worble.xyz\"" = {
|
"credential \"https://git.worble.xyz\"" = {
|
||||||
provider = "generic";
|
provider = "generic";
|
||||||
};
|
};
|
||||||
|
# stealing from https://blog.gitbutler.com/how-git-core-devs-configure-git/
|
||||||
|
column = {
|
||||||
|
ui = "auto";
|
||||||
|
};
|
||||||
|
branch = {
|
||||||
|
sort = "-committerdate";
|
||||||
|
};
|
||||||
|
tag = {
|
||||||
|
sort = "version:refname";
|
||||||
|
};
|
||||||
|
diff = {
|
||||||
|
algorithm = "histogram";
|
||||||
|
colorMoved = "plain";
|
||||||
|
mnemonicPrefix = true;
|
||||||
|
renames = true;
|
||||||
|
};
|
||||||
|
push = {
|
||||||
|
followTags = true;
|
||||||
|
};
|
||||||
|
fetch = {
|
||||||
|
prune = true;
|
||||||
|
pruneTags = true;
|
||||||
|
all = true;
|
||||||
|
};
|
||||||
|
rebase = {
|
||||||
|
autoSquash = true;
|
||||||
|
autoStash = true;
|
||||||
|
updateRefs = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -87,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";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -113,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"
|
||||||
@@ -125,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;
|
||||||
};
|
};
|
||||||
@@ -149,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) {
|
||||||
@@ -163,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
68
home-manager/default.nix
Normal 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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
36
home-manager/development/android.nix
Normal file
36
home-manager/development/android.nix
Normal 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
|
||||||
|
# ];
|
||||||
|
# }
|
||||||
@@ -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
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,6 @@
|
|||||||
{
|
{
|
||||||
home.packages = with pkgs;[
|
home.packages = with pkgs;[
|
||||||
jetbrains.rider
|
jetbrains.rider
|
||||||
#godot_4-mono
|
godot-mono
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"; };
|
||||||
|
|||||||
@@ -1,90 +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 openvsx-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";
|
|
||||||
|
|
||||||
"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" ];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
73
home-manager/firefox/default.nix
Normal file
73
home-manager/firefox/default.nix
Normal 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;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,74 +1,195 @@
|
|||||||
|
{ tablet ? false }:
|
||||||
{
|
{
|
||||||
settings = {
|
settings = {
|
||||||
# data privacy
|
# data privacy
|
||||||
"browser.contentblocking.category" = "strict";
|
|
||||||
"browser.discovery.enabled" = false;
|
"browser.discovery.enabled" = false;
|
||||||
"datareporting.healthreport.uploadEnabled" = 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" = "chrome://browser/content/blanktab.html";
|
"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 */
|
||||||
|
|
||||||
|
/* 0320: disable recommendation pane in about:addons (uses Google Analytics) ***/
|
||||||
|
"extensions.getAddons.showPane" = false;
|
||||||
|
|
||||||
|
/* 0321: disable recommendations in about:addons' Extensions and Themes panes [FF68+] ***/
|
||||||
|
"extensions.htmlaboutaddons.recommendations.enabled" = false;
|
||||||
|
|
||||||
|
/* 0330: disable new data submission [FF41+]
|
||||||
|
* If disabled, no policy is shown or upload takes place, ever
|
||||||
|
* [1] https://bugzilla.mozilla.org/1195552 ***/
|
||||||
|
"datareporting.policy.dataSubmissionEnabled" = false;
|
||||||
|
|
||||||
|
/* 0340: disable Studies
|
||||||
|
* [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to install and run studies ***/
|
||||||
|
"app.shield.optoutstudies.enabled" = false;
|
||||||
|
|
||||||
|
/* 0341: disable Normandy/Shield [FF60+]
|
||||||
|
* Shield is a telemetry system that can push and test "recipes"
|
||||||
|
* [1] https://mozilla.github.io/normandy/ ***/
|
||||||
|
"app.normandy.enabled" = false;
|
||||||
|
"app.normandy.api_url" = "";
|
||||||
|
|
||||||
|
/* 0350: disable Crash Reports ***/
|
||||||
|
"breakpad.reportURL" = "";
|
||||||
|
"browser.tabs.crashReporting.sendReport" = false;
|
||||||
|
|
||||||
|
/* 0351: enforce no submission of backlogged Crash Reports [FF58+]
|
||||||
|
* [SETTING] Privacy & Security>Firefox Data Collection & Use>Allow Firefox to send backlogged crash reports ***/
|
||||||
|
"browser.crashReports.unsubmittedCheck.autoSubmit2" = false;
|
||||||
|
|
||||||
|
/* 0403: disable SB checks for downloads (remote)
|
||||||
|
* To verify the safety of certain executable files, Firefox may submit some information about the
|
||||||
|
* file, including the name, origin, size and a cryptographic hash of the contents, to the Google
|
||||||
|
* Safe Browsing service which helps Firefox determine whether or not the file should be blocked
|
||||||
|
* [SETUP-SECURITY] If you do not understand this, or you want this protection, then override this ***/
|
||||||
|
"browser.safebrowsing.downloads.remote.enabled" = false;
|
||||||
|
"browser.safebrowsing.downloads.remote.url" = "";
|
||||||
|
|
||||||
|
/* 1201: require safe negotiation
|
||||||
|
* Blocks connections to servers that don't support RFC 5746 [2] as they're potentially vulnerable to a
|
||||||
|
* MiTM attack [3]. A server without RFC 5746 can be safe from the attack if it disables renegotiations
|
||||||
|
* but the problem is that the browser can't know that. Setting this pref to true is the only way for the
|
||||||
|
* browser to ensure there will be no unsafe renegotiations on the channel between the browser and the server
|
||||||
|
* [SETUP-WEB] SSL_ERROR_UNSAFE_NEGOTIATION: is it worth overriding this for that one site?
|
||||||
|
* [STATS] SSL Labs (May 2024) reports over 99.7% of top sites have secure renegotiation [4]
|
||||||
|
* [1] https://wiki.mozilla.org/Security:Renegotiation
|
||||||
|
* [2] https://datatracker.ietf.org/doc/html/rfc5746
|
||||||
|
* [3] https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2009-3555
|
||||||
|
* [4] https://www.ssllabs.com/ssl-pulse/ ***/
|
||||||
|
"security.ssl.require_safe_negotiation" = true;
|
||||||
|
/* 1206: disable TLS1.3 0-RTT (round-trip time) [FF51+]
|
||||||
|
* This data is not forward secret, as it is encrypted solely under keys derived using
|
||||||
|
* the offered PSK. There are no guarantees of non-replay between connections
|
||||||
|
* [1] https://github.com/tlswg/tls13-spec/issues/1001
|
||||||
|
* [2] https://www.rfc-editor.org/rfc/rfc9001.html#name-replay-attacks-with-0-rtt
|
||||||
|
* [3] https://blog.cloudflare.com/tls-1-3-overview-and-q-and-a/ ***/
|
||||||
|
"security.tls.enable_0rtt_data" = false;
|
||||||
|
|
||||||
|
/* 2002: force WebRTC inside the proxy [FF70+] ***/
|
||||||
|
"media.peerconnection.ice.proxy_only_if_behind_proxy" = true;
|
||||||
|
/* 2003: force a single network interface for ICE candidates generation [FF42+]
|
||||||
|
* When using a system-wide proxy, it uses the proxy interface
|
||||||
|
* [1] https://developer.mozilla.org/docs/Web/API/RTCIceCandidate
|
||||||
|
* [2] https://wiki.mozilla.org/Media/WebRTC/Privacy ***/
|
||||||
|
"media.peerconnection.ice.default_address_only" = true;
|
||||||
|
|
||||||
|
/* 2701: enable ETP Strict Mode [FF86+]
|
||||||
|
* ETP Strict Mode enables Total Cookie Protection (TCP)
|
||||||
|
* [NOTE] Adding site exceptions disables all ETP protections for that site and increases the risk of
|
||||||
|
* cross-site state tracking e.g. exceptions for SiteA and SiteB means PartyC on both sites is shared
|
||||||
|
* [1] https://blog.mozilla.org/security/2021/02/23/total-cookie-protection/
|
||||||
|
* [SETTING] to add site exceptions: Urlbar>ETP Shield
|
||||||
|
* [SETTING] to manage site exceptions: Options>Privacy & Security>Enhanced Tracking Protection>Manage Exceptions ***/
|
||||||
|
"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;
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,68 +0,0 @@
|
|||||||
{ pkgs, config, ... }:
|
|
||||||
|
|
||||||
{
|
|
||||||
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 "canvasblocker" "CanvasBlocker@kkapsner.de")
|
|
||||||
(extension "cookie-autodelete" "CookieAutoDelete@kennydo.com")
|
|
||||||
(extension "happy-bonobo-disable-webrtc" "jid1-5Fs7iTLscUaZBgwr@jetpack")
|
|
||||||
(extension "keepassxc-browser" "keepassxc-browser@keepassxc.org")
|
|
||||||
|
|
||||||
# Annoyances
|
|
||||||
(extension "dont-accept-webp" "dont-accept-webp@jeffersonscher.com")
|
|
||||||
(extension "skip-redirect" "skipredirect@sblask")
|
|
||||||
(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;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,9 +1,86 @@
|
|||||||
{ inputs, pkgs, config, ... }:
|
{ 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}".ryujinx-greemdev
|
(heroic.override {
|
||||||
|
extraPkgs = pkgs: [
|
||||||
|
pkgs.umu-launcher
|
||||||
|
pkgs.gamescope
|
||||||
|
pkgs.mangohud
|
||||||
|
];
|
||||||
|
})
|
||||||
|
|
||||||
|
# Steam
|
||||||
|
steamguard-cli
|
||||||
|
|
||||||
|
# Emulators
|
||||||
|
pkgs_unstable.ryubing
|
||||||
|
mgba
|
||||||
|
|
||||||
|
# Cheat engine
|
||||||
|
scanmem
|
||||||
];
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
mangohud = {
|
||||||
|
enable = true;
|
||||||
|
enableSessionWide = true;
|
||||||
|
settings = {
|
||||||
|
preset = 1;
|
||||||
|
};
|
||||||
|
settingsPerApplication = {
|
||||||
|
mpv = {
|
||||||
|
no_display = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
42
home-manager/streamlink.nix
Normal file
42
home-manager/streamlink.nix
Normal 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=";
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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)"
|
||||||
|
|||||||
Reference in New Issue
Block a user