Compare commits
110 Commits
ed349bd4e6
...
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 | |||
| dbbfc3d8ff |
@@ -1,167 +0,0 @@
|
||||
# Edit this configuration file to define what should be installed 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`).
|
||||
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
./base/nix-settings.nix
|
||||
./base/fonts.nix
|
||||
./base/kde.nix
|
||||
];
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
|
||||
swapDevices = [{
|
||||
device = "/var/lib/swapfile";
|
||||
size = 16 * 1024;
|
||||
}];
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
hardware.enableAllFirmware = true;
|
||||
|
||||
# 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;
|
||||
};
|
||||
|
||||
# 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;
|
||||
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"
|
||||
];
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.fstrim.enable = true;
|
||||
# services.resolved.enable = true;
|
||||
services.mullvad-vpn = {
|
||||
enable = true;
|
||||
package = pkgs.mullvad-vpn;
|
||||
};
|
||||
|
||||
services.fwupd.enable = true;
|
||||
services.geoclue2 = {
|
||||
enable = true;
|
||||
geoProviderUrl = "https://api.beacondb.net/v1/geolocate";
|
||||
};
|
||||
services.flatpak.enable = true;
|
||||
|
||||
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
|
||||
rar
|
||||
libva-utils
|
||||
smartmontools
|
||||
appimage-run
|
||||
|
||||
# dicts
|
||||
nuspell
|
||||
hunspellDicts.en-gb-large
|
||||
|
||||
# For cursor in steam?
|
||||
xsettingsd
|
||||
xorg.xrdb
|
||||
];
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
# 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
|
||||
# (/run/current-system/configuration.nix). This is useful in case you
|
||||
# accidentally delete configuration.nix.
|
||||
# system.copySystemConfiguration = true;
|
||||
|
||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||
#
|
||||
# Most users should NEVER change this value after the initial install, for any reason,
|
||||
# even if you've upgraded your system to a new NixOS release.
|
||||
#
|
||||
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||
# to actually do that.
|
||||
#
|
||||
# This value being lower than the current NixOS release does NOT mean your system is
|
||||
# out of date, out of support, or vulnerable.
|
||||
#
|
||||
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||
# and migrated your data accordingly.
|
||||
#
|
||||
# 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?
|
||||
|
||||
}
|
||||
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,43 +0,0 @@
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
kwin = lib.concatStringsSep " " [
|
||||
"${lib.getBin pkgs.kdePackages.kwin}/bin/kwin_wayland"
|
||||
"--no-global-shortcuts"
|
||||
"--no-kactivities"
|
||||
"--no-lockscreen"
|
||||
"--locale1"
|
||||
"--inputmethod maliit-keyboard"
|
||||
];
|
||||
in
|
||||
{
|
||||
services.xserver.enable = true; # optional
|
||||
|
||||
# Configure keymap in X11
|
||||
# services.xserver.xkb.layout = "us";
|
||||
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
||||
|
||||
services.displayManager.sddm = {
|
||||
enable = true;
|
||||
wayland.enable = true;
|
||||
settings = {
|
||||
Wayland = {
|
||||
CompositorCommand = kwin;
|
||||
};
|
||||
};
|
||||
};
|
||||
services.desktopManager.plasma6.enable = true;
|
||||
|
||||
# For cursor in steam?
|
||||
xdg.icons.fallbackCursorThemes = [ "breeze_cursors" ];
|
||||
|
||||
environment.systemPackages = with pkgs;
|
||||
[ maliit-keyboard ] ++ (with kdePackages; [
|
||||
sddm-kcm
|
||||
plasma-disks
|
||||
partitionmanager
|
||||
filelight
|
||||
ffmpegthumbs
|
||||
kcalc
|
||||
]);
|
||||
}
|
||||
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;
|
||||
@@ -6,11 +6,13 @@
|
||||
nix.settings.auto-optimise-store = true;
|
||||
nix.gc.automatic = true;
|
||||
nix.gc.options = "--delete-older-than 7d";
|
||||
# https://github.com/nix-community/nixd/blob/main/nixd/docs/configuration.md
|
||||
nix.nixPath = [ "nixpkgs=${inputs.nixpkgs}" ];
|
||||
|
||||
# programs.nix-ld = {
|
||||
# enable = true;
|
||||
# # libraries = pkgs.steam-run.fhsenv.args.multiPkgs pkgs;
|
||||
# libraries = pkgs.appimageTools.defaultFhsEnvArgs.targetPkgs pkgs;
|
||||
# };
|
||||
programs.nix-ld = {
|
||||
enable = true;
|
||||
# libraries = pkgs.steam-run.fhsenv.args.multiPkgs 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
|
||||
];
|
||||
}
|
||||
63
configuration/default.nix
Normal file
63
configuration/default.nix
Normal file
@@ -0,0 +1,63 @@
|
||||
# Edit this configuration file to define what should be installed 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`).
|
||||
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
imports = [ ./base ];
|
||||
|
||||
# Use the systemd-boot EFI boot loader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
boot.loader.efi.canTouchEfiVariables = true;
|
||||
boot.kernelPackages = pkgs.linuxPackages_latest;
|
||||
|
||||
hardware.bluetooth.enable = true;
|
||||
hardware.enableRedistributableFirmware = true;
|
||||
hardware.enableAllFirmware = true;
|
||||
|
||||
# Disks / Swap / etc
|
||||
# swapDevices = [{
|
||||
# device = "/var/lib/swapfile";
|
||||
# size = 16 * 1024; # 16 GB
|
||||
# }];
|
||||
zramSwap.enable = true; # Creates a zram block device and uses it as a swap device
|
||||
services.fstrim.enable = true;
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
# List services that you want to enable:
|
||||
|
||||
# Enable the OpenSSH daemon.
|
||||
# services.openssh.enable = true;
|
||||
|
||||
# Copy the NixOS configuration file and link it from the resulting system
|
||||
# (/run/current-system/configuration.nix). This is useful in case you
|
||||
# accidentally delete configuration.nix.
|
||||
# system.copySystemConfiguration = true;
|
||||
|
||||
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||
#
|
||||
# Most users should NEVER change this value after the initial install, for any reason,
|
||||
# even if you've upgraded your system to a new NixOS release.
|
||||
#
|
||||
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||
# to actually do that.
|
||||
#
|
||||
# This value being lower than the current NixOS release does NOT mean your system is
|
||||
# out of date, out of support, or vulnerable.
|
||||
#
|
||||
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||
# and migrated your data accordingly.
|
||||
#
|
||||
# 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?
|
||||
}
|
||||
@@ -8,14 +8,13 @@
|
||||
programs.gamescope = {
|
||||
enable = true;
|
||||
# capSysNice = true;
|
||||
# args = [
|
||||
# "-H 1080"
|
||||
# ];
|
||||
args = [
|
||||
"-H 1080"
|
||||
];
|
||||
};
|
||||
programs.steam = {
|
||||
enable = true;
|
||||
remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play
|
||||
dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server
|
||||
gamescopeSession.enable = true;
|
||||
protontricks.enable = true;
|
||||
extraCompatPackages = [ pkgs.proton-ge-bin ];
|
||||
@@ -36,4 +35,9 @@
|
||||
};
|
||||
|
||||
programs.cdemu.enable = true; # Remember to add users to the cdrom group for this to work
|
||||
|
||||
environment.systemPackages = with pkgs;[
|
||||
lsfg-vk
|
||||
lsfg-vk-ui
|
||||
];
|
||||
}
|
||||
|
||||
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.tlp = {
|
||||
enable = true;
|
||||
settings = {
|
||||
RESTORE_DEVICE_STATE_ON_STARTUP = 1;
|
||||
USB_AUTOSUSPEND = 0;
|
||||
PLATFORM_PROFILE_ON_AC = "performance";
|
||||
PLATFORM_PROFILE_ON_BAT = "low-power";
|
||||
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
|
||||
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
|
||||
CPU_BOOST_ON_AC = 1;
|
||||
CPU_BOOST_ON_BAT = 0;
|
||||
};
|
||||
};
|
||||
services.power-profiles-daemon.enable = true;
|
||||
# services.tlp = {
|
||||
# enable = true;
|
||||
# settings = {
|
||||
# RESTORE_DEVICE_STATE_ON_STARTUP = 1;
|
||||
# USB_AUTOSUSPEND = 0;
|
||||
# PLATFORM_PROFILE_ON_AC = "performance";
|
||||
# PLATFORM_PROFILE_ON_BAT = "low-power";
|
||||
# CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
|
||||
# CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power";
|
||||
# CPU_BOOST_ON_AC = 1;
|
||||
# CPU_BOOST_ON_BAT = 0;
|
||||
# };
|
||||
# };
|
||||
|
||||
# Enable touchpad support (enabled default in most desktopManager).
|
||||
# Enable touchpad support (enabled by default in most desktopManagers).
|
||||
services.libinput.enable = true;
|
||||
}
|
||||
|
||||
@@ -1,25 +1,53 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, lib, config, ... }:
|
||||
|
||||
with lib;
|
||||
{
|
||||
virtualisation = {
|
||||
containers = {
|
||||
# Enable common container config files in /etc/containers
|
||||
enable = true;
|
||||
};
|
||||
libvirtd = {
|
||||
enable = true;
|
||||
qemu.vhostUserPackages = [ pkgs.virtiofsd ];
|
||||
};
|
||||
# remember to add the necessary users to the docker group
|
||||
docker = {
|
||||
enable = true;
|
||||
storageDriver = "btrfs";
|
||||
};
|
||||
# waydroid = {
|
||||
# enable = true;
|
||||
# };
|
||||
options.virtualisation.containerManagement = mkOption {
|
||||
type = types.enum [ "docker" "podman" ];
|
||||
default = "docker";
|
||||
};
|
||||
|
||||
config = {
|
||||
virtualisation = {
|
||||
containers = {
|
||||
# Enable common container config files in /etc/containers
|
||||
enable = true;
|
||||
};
|
||||
libvirtd = {
|
||||
enable = true;
|
||||
qemu = {
|
||||
vhostUserPackages = [ pkgs.virtiofsd ];
|
||||
};
|
||||
};
|
||||
# remember to add the necessary users to the podman group
|
||||
podman = {
|
||||
enable = if (config.virtualisation.containerManagement == "podman") then true else false;
|
||||
dockerSocket.enable = true;
|
||||
dockerCompat = true;
|
||||
defaultNetwork.settings.dns_enabled = true;
|
||||
};
|
||||
# remember to add the necessary users to the docker group
|
||||
docker = {
|
||||
enable = if (config.virtualisation.containerManagement == "docker") then true else false;
|
||||
storageDriver = "btrfs";
|
||||
};
|
||||
waydroid = {
|
||||
enable = true;
|
||||
package = pkgs.waydroid-nftables;
|
||||
};
|
||||
};
|
||||
programs.virt-manager.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs;[
|
||||
waydroid-helper
|
||||
] ++ optionals (config.virtualisation.containerManagement == "podman") [
|
||||
docker-compose
|
||||
# podman-compose
|
||||
podman-tui
|
||||
podman-desktop
|
||||
] ++ optionals (config.virtualisation.containerManagement == "docker") [
|
||||
lazydocker
|
||||
];
|
||||
};
|
||||
programs.virt-manager.enable = true;
|
||||
# environment.systemPackages = with pkgs;[ podman-compose ];
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05?shallow=1";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable?shallow=1"; # use by inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".[package name]
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11?shallow=1";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable?shallow=1"; # use by inputs.nixpkgs-unstable.legacyPackages."${pkgs.stdenv.hostPlatform.system}".[package name]
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-25.05?shallow=1";
|
||||
url = "github:nix-community/home-manager/release-25.11?shallow=1";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
@@ -13,25 +13,20 @@
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master?shallow=1";
|
||||
disko = {
|
||||
url = "github:nix-community/disko?shallow=1";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions?shallow=1";
|
||||
|
||||
system-manager = {
|
||||
url = "github:numtide/system-manager?shallow=1";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nix-system-graphics = {
|
||||
url = "github:soupglasses/nix-system-graphics?shallow=1";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, nixos-hardware, home-manager, system-manager, nix-system-graphics, nix-index-database, ... }@inputs:
|
||||
outputs = { nixpkgs, home-manager, system-manager, nix-system-graphics, nix-index-database, ... }@inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs = import nixpkgs {
|
||||
@@ -40,25 +35,12 @@
|
||||
};
|
||||
in
|
||||
{
|
||||
nixosConfigurations.tuxedo = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
./devices/tuxedo/configuration.nix
|
||||
];
|
||||
};
|
||||
nixosConfigurations.starlite = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
nixos-hardware.nixosModules.starlabs-starlite-i5
|
||||
./devices/starlite/configuration.nix
|
||||
];
|
||||
};
|
||||
packages.${system}.homeConfigurations.deck = home-manager.lib.homeManagerConfiguration {
|
||||
inherit pkgs;
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
nix-index-database.hmModules.nix-index
|
||||
./devices/deck/home.nix
|
||||
nix-index-database.homeModules.nix-index
|
||||
./home.nix
|
||||
];
|
||||
};
|
||||
systemConfigs.deck = system-manager.lib.makeSystemConfig {
|
||||
@@ -1,17 +1,17 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
let
|
||||
homeUpdateLocation = "/home/deck/Projects/nixos#deck";
|
||||
homeUpdateLocation = "/home/deck/Projects/nixos/devices/deck#deck";
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
../../home-manager/base.nix
|
||||
../../home-manager
|
||||
../../home-manager/gaming.nix
|
||||
../../home-manager/development/vscode.nix
|
||||
];
|
||||
|
||||
terminal.homeUpdateLocation = homeUpdateLocation;
|
||||
terminal.flakeUpdateLocation = "/home/deck/Projects/nixos";
|
||||
terminal.flakeUpdateLocation = "/home/deck/Projects/nixos/devices/deck";
|
||||
|
||||
nixpkgs.config = {
|
||||
allowUnfree = true;
|
||||
|
||||
@@ -2,21 +2,27 @@
|
||||
# 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`).
|
||||
|
||||
{ inputs, ... }:
|
||||
{ inputs, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
../../configuration/base.nix
|
||||
../../configuration
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
inputs.disko.nixosModules.default
|
||||
./disk-config.nix
|
||||
inputs.home-manager.nixosModules.default
|
||||
../../configuration/modules/laptop.nix
|
||||
../../configuration/modules/gnome.nix
|
||||
];
|
||||
|
||||
gnome.tablet = true;
|
||||
|
||||
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’.
|
||||
users.users.worble = {
|
||||
@@ -30,7 +36,7 @@
|
||||
home-manager = {
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
sharedModules = [
|
||||
inputs.nix-index-database.hmModules.nix-index
|
||||
inputs.nix-index-database.homeModules.nix-index
|
||||
];
|
||||
users = {
|
||||
"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 = [
|
||||
../../home-manager/base.nix
|
||||
../../home-manager
|
||||
../../home-manager/development/vscode.nix
|
||||
];
|
||||
|
||||
terminal.nixUpdateLocation = "/home/worble/Projects/nixos#starlite";
|
||||
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos";
|
||||
terminal.nixUpdateLocation = "/home/worble/Projects/nixos/devices/starlite#starlite";
|
||||
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos/devices/starlite";
|
||||
firefox.tablet = true;
|
||||
|
||||
home.username = "worble";
|
||||
home.homeDirectory = "/home/worble";
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
{
|
||||
imports =
|
||||
[
|
||||
../../configuration/base.nix
|
||||
../../configuration
|
||||
# Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
inputs.disko.nixosModules.default
|
||||
@@ -16,33 +16,30 @@
|
||||
../../configuration/modules/laptop.nix
|
||||
../../configuration/modules/virtualisation.nix
|
||||
../../configuration/modules/gaming.nix
|
||||
../../configuration/modules/kde.nix
|
||||
../../configuration/modules/i18n.nix
|
||||
];
|
||||
|
||||
networking.hostName = "tuxedo"; # Define your hostname.
|
||||
|
||||
# one day i will fix the fullscreen issue
|
||||
# https://community.frame.work/t/fullscreen-games-freeze-on-plasma-6-with-dgpu/61088/9
|
||||
# https://community.frame.work/t/bug-psa-gpu-bug-causes-crashes-on-kde-plasma/58133/4
|
||||
# https://www.reddit.com/r/archlinux/comments/1gzy0xd/amdgpu_regression_on_kernel_612_choppy/
|
||||
# https://forum.manjaro.org/t/unstable-update-october-2024-edition/168715/44
|
||||
boot.kernelParams = [
|
||||
# "amdgpu.dcdebugmask=0x410"
|
||||
# or amdgpu.dcdebugmask=0x010
|
||||
# or amdgpu.dcdebugmask=0x400
|
||||
# or both amdgpu.dcdebugmask=0x410
|
||||
];
|
||||
|
||||
# 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 = ''
|
||||
options iwlwifi 11n_disable=8 power_save=0
|
||||
options iwlmvm power_scheme=1
|
||||
options iwlwifi 11n_disable=8 power_save=0
|
||||
'';
|
||||
|
||||
services.hardware.openrgb.enable = true;
|
||||
boot.kernelModules = [
|
||||
"ntsync"
|
||||
];
|
||||
|
||||
fileSystems."/mnt/HDD1" = {
|
||||
#device = "/dev/disk/by-uuid/35763dc3-c736-4714-ade7-40bf49ad50dd";
|
||||
# services.hardware.openrgb.enable = true;
|
||||
|
||||
virtualisation.containerManagement = "docker";
|
||||
|
||||
fileSystems."/mnt/HDD2" = {
|
||||
fsType = "ext4";
|
||||
label = "HDD1";
|
||||
label = "HDD2";
|
||||
options = [
|
||||
# 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
|
||||
@@ -60,15 +57,31 @@
|
||||
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’.
|
||||
users.users.worble = {
|
||||
initialPassword = "password";
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "wheel" "gamemode" "docker" "cdrom" "wireshark" ]; # Enable ‘sudo’ for the user.
|
||||
extraGroups = [
|
||||
"wheel"
|
||||
"gamemode"
|
||||
"docker"
|
||||
"podman"
|
||||
"cdrom"
|
||||
"wireshark"
|
||||
"kvm" # for android studio
|
||||
]; # Enable ‘sudo’ for the user.
|
||||
linger = true;
|
||||
};
|
||||
|
||||
@@ -76,7 +89,7 @@
|
||||
useGlobalPkgs = true;
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
sharedModules = [
|
||||
inputs.nix-index-database.hmModules.nix-index
|
||||
inputs.nix-index-database.homeModules.nix-index
|
||||
];
|
||||
users = {
|
||||
"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 = [
|
||||
../../home-manager/base.nix
|
||||
../../home-manager/development/all.nix
|
||||
../../home-manager
|
||||
../../home-manager/development
|
||||
../../home-manager/gaming.nix
|
||||
../../home-manager/streamlink.nix
|
||||
];
|
||||
|
||||
terminal.nixUpdateLocation = "/home/worble/Projects/nixos#tuxedo";
|
||||
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos";
|
||||
terminal.nixUpdateLocation = "/home/worble/Projects/nixos/devices/tuxedo#tuxedo";
|
||||
terminal.flakeUpdateLocation = "/home/worble/Projects/nixos/devices/tuxedo";
|
||||
helix.fullInstall = true;
|
||||
mpv.high-quality = true;
|
||||
|
||||
home.username = "worble";
|
||||
home.homeDirectory = "/home/worble";
|
||||
@@ -32,34 +34,27 @@
|
||||
teamspeak6-client
|
||||
|
||||
# media
|
||||
jellyfin-media-player
|
||||
# TODO: disabled due to qt5-web-engine vulnerable https://github.com/NixOS/nixpkgs/pull/435067
|
||||
# jellyfin-media-player
|
||||
haruna
|
||||
fooyin
|
||||
strawberry
|
||||
mpc-qt
|
||||
|
||||
# misc
|
||||
electrum
|
||||
gpu-screen-recorder-gtk
|
||||
syncthing
|
||||
# TODO: uncomment when ecdsa is updated
|
||||
# https://github.com/NixOS/nixpkgs/pull/456881
|
||||
# electrum
|
||||
dbeaver-bin
|
||||
ruffle
|
||||
popsicle
|
||||
];
|
||||
mkvtoolnix
|
||||
|
||||
home.file = {
|
||||
# shaders for mpv
|
||||
".config/mpv/shaders".source = pkgs.fetchzip {
|
||||
url = "https://github.com/bloc97/Anime4K/releases/download/v4.0.1/Anime4K_v4.0.zip";
|
||||
sha256 = "sha256-9B6U+KEVlhUIIOrDauIN3aVUjZ/gQHjFArS4uf/BpaM=";
|
||||
stripRoot = false;
|
||||
};
|
||||
};
|
||||
# for headset tune
|
||||
headsetcontrol
|
||||
];
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs = {
|
||||
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;
|
||||
name = "work";
|
||||
isDefault = false;
|
||||
@@ -73,51 +68,28 @@
|
||||
};
|
||||
|
||||
mpv = {
|
||||
enable = true;
|
||||
config = {
|
||||
profile = "gpu-hq";
|
||||
vo = "gpu-next";
|
||||
gpu-api = "opengl";
|
||||
gpu-context = "wayland";
|
||||
hwdec = "vulkan";
|
||||
screenshot-directory = "/mnt/HDD1/Pictures/";
|
||||
# screenshot-directory = "~/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";
|
||||
screenshot-directory = "/mnt/HDD2/Pictures/";
|
||||
};
|
||||
extraInput = ''
|
||||
# Optimized shaders for higher-end GPU:
|
||||
CTRL+1 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A (HQ)"
|
||||
CTRL+2 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B (HQ)"
|
||||
CTRL+3 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C (HQ)"
|
||||
CTRL+4 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode A+A (HQ)"
|
||||
CTRL+5 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_VL.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_Soft_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode B+B (HQ)"
|
||||
CTRL+6 no-osd change-list glsl-shaders set "~~/shaders/Anime4K_Clamp_Highlights.glsl:~~/shaders/Anime4K_Upscale_Denoise_CNN_x2_VL.glsl:~~/shaders/Anime4K_AutoDownscalePre_x2.glsl:~~/shaders/Anime4K_AutoDownscalePre_x4.glsl:~~/shaders/Anime4K_Restore_CNN_M.glsl:~~/shaders/Anime4K_Upscale_CNN_x2_M.glsl"; show-text "Anime4K: Mode C+A (HQ)"
|
||||
CTRL+0 no-osd change-list glsl-shaders clr ""; show-text "GLSL shaders cleared"
|
||||
'';
|
||||
};
|
||||
|
||||
mangohud = {
|
||||
enable = true;
|
||||
topgrade = {
|
||||
settings = {
|
||||
preset = 1;
|
||||
misc = {
|
||||
ignore_failures = [ "containers" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
kodi = {
|
||||
enable = true;
|
||||
package = pkgs.kodi.withPackages (exts: [ exts.pvr-iptvsimple ]);
|
||||
};
|
||||
};
|
||||
|
||||
systemd.user = {
|
||||
services = {
|
||||
rclone-media = {
|
||||
Unit = {
|
||||
Description = "rclone-media /mnt/HDD1/Videos/";
|
||||
After = [ "network.target" "mnt-HDD1.mount" ];
|
||||
Description = "rclone-media /mnt/HDD2/Videos/";
|
||||
After = [ "network.target" "mnt-HDD2.mount" ];
|
||||
# Maybe? https://unix.stackexchange.com/questions/281650/systemd-unit-requiresmountsfor-vs-conditionpathisdirectory
|
||||
# RequiresMountsFor = "/mnt/HDD1/Videos/";
|
||||
# RequiresMountsFor = "/mnt/HDD2/Videos/";
|
||||
};
|
||||
|
||||
Install = {
|
||||
@@ -134,7 +106,7 @@ runtimeInputs = [ pkgs.inotify-tools pkgs.libnotify pkgs.rclone ];
|
||||
text = ''
|
||||
function rclonecopy {
|
||||
file=$1
|
||||
changed_rel=''${file#"/mnt/HDD1/Videos"}
|
||||
changed_rel=''${file#"/mnt/HDD2/Videos"}
|
||||
notify-send -a "rclone-media" "rclone for $file triggered"
|
||||
if rclone copyto "$file" media:"media-7gM2gcrxRjXqfj$changed_rel" ; then
|
||||
notify-send -a "rclone-media" "rclone complete for $file"
|
||||
@@ -146,7 +118,7 @@ text = ''
|
||||
inotifywait -mr \
|
||||
--format '%w%f' \
|
||||
-e close_write \
|
||||
/mnt/HDD1/Videos/ |
|
||||
/mnt/HDD2/Videos/ |
|
||||
while read -r file; do
|
||||
rclonecopy "$file"
|
||||
done
|
||||
|
||||
236
flake.lock
generated
236
flake.lock
generated
@@ -1,236 +0,0 @@
|
||||
{
|
||||
"nodes": {
|
||||
"disko": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1750040002,
|
||||
"narHash": "sha256-KrC9iOVYIn6ukpVlHbqSA4hYCZ6oDyJKrcLqv4c5v84=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "7f1857b31522062a6a00f88cbccf86b43acceed1",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1749154018,
|
||||
"narHash": "sha256-gjN3j7joRvT3a8Zgcylnd4NFsnXeDBumqiu4HmY1RIg=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "7aae0ee71a17b19708b93b3ed448a1a0952bf111",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-25.05",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-index-database": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1749960154,
|
||||
"narHash": "sha256-EWlr9MZDd+GoGtZB4QsDzaLyaDQPGnRY03MFp6u2wSg=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-index-database",
|
||||
"rev": "424a40050cdc5f494ec45e46462d288f08c64475",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-index-database",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-system-graphics": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1737457219,
|
||||
"narHash": "sha256-nX9dxoATDCSQgWw/iv6BngXDJEyHVYYEvHEVQ7Ig3fI=",
|
||||
"owner": "soupglasses",
|
||||
"repo": "nix-system-graphics",
|
||||
"rev": "9c875e0c56cf2eb272b9102a4f3e24e4e31629fd",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "soupglasses",
|
||||
"repo": "nix-system-graphics",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-vscode-extensions": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1750039657,
|
||||
"narHash": "sha256-Vrh5PDskpJ2kEumHbncffZxWQGr2pK88oTOFtBUWG74=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"rev": "54ce2a0e930383535c632aad39b22205fa430be0",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1750083401,
|
||||
"narHash": "sha256-ynqbgIYrg7P1fAKYqe8I/PMiLABBcNDYG9YaAP/d/C4=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "61837d2a33ccc1582c5fabb7bf9130d39fee59ad",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "master",
|
||||
"repo": "nixos-hardware",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1744868846,
|
||||
"narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ebe4301cbd8f81c4f8d3244b3632338bbeb6d49c",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1749794982,
|
||||
"narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1750005367,
|
||||
"narHash": "sha256-h/aac1dGLhS3qpaD2aZt25NdKY7b+JT0ZIP2WuGsJMU=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "6c64dabd3aa85e0c02ef1cdcb6e1213de64baee3",
|
||||
"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-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": 1748252092,
|
||||
"narHash": "sha256-6nL55wvV7SthEXaXDiQo8xxkxQLAVcNBU21YJ7GJLm8=",
|
||||
"owner": "numtide",
|
||||
"repo": "system-manager",
|
||||
"rev": "c6850451ef769fd03d0ad5474f928b916aa23775",
|
||||
"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
|
||||
home-manager switch --flake "/home/$(whoami)/Projects/nixos#$(whoami)"
|
||||
home-manager switch --flake "$HOME/Projects/nixos/devices/$(whoami)#$(whoami)"
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
{ pkgs, lib, inputs, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./base/fonts.nix
|
||||
./base/terminal.nix
|
||||
./firefox/firefox.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs;[
|
||||
# general
|
||||
thunderbird
|
||||
keepassxc
|
||||
qbittorrent
|
||||
libreoffice-qt
|
||||
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".joplin-desktop
|
||||
|
||||
# comms
|
||||
teamspeak_client
|
||||
vesktop
|
||||
];
|
||||
|
||||
# set breeze as default cursor
|
||||
home.file.".icons/default".source = "${pkgs.kdePackages.breeze}/share/icons/breeze_cursors";
|
||||
|
||||
home.sessionVariables = {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
};
|
||||
|
||||
services.nextcloud-client = {
|
||||
enable = true;
|
||||
package = pkgs.nextcloud-client;
|
||||
startInBackground = true;
|
||||
};
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
chromium = {
|
||||
enable = true;
|
||||
package = pkgs.brave;
|
||||
};
|
||||
|
||||
mpv = lib.mkDefault {
|
||||
enable = true;
|
||||
package = (
|
||||
pkgs.mpv-unwrapped.wrapper {
|
||||
scripts = with pkgs.mpvScripts; [
|
||||
uosc
|
||||
sponsorblock
|
||||
];
|
||||
|
||||
mpv = pkgs.mpv-unwrapped.override {
|
||||
waylandSupport = true;
|
||||
};
|
||||
}
|
||||
);
|
||||
config = {
|
||||
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
|
||||
];
|
||||
}
|
||||
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,15 +8,15 @@ with lib;
|
||||
|
||||
options.terminal = {
|
||||
nixUpdateLocation = mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
};
|
||||
flakeUpdateLocation = mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
};
|
||||
homeUpdateLocation = mkOption {
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
};
|
||||
};
|
||||
@@ -45,10 +45,20 @@ with lib;
|
||||
'';
|
||||
};
|
||||
|
||||
nix-index = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableFishIntegration = true;
|
||||
};
|
||||
|
||||
delta = {
|
||||
enable = true;
|
||||
enableGitIntegration = true;
|
||||
};
|
||||
|
||||
git = {
|
||||
enable = true;
|
||||
delta.enable = true;
|
||||
extraConfig = {
|
||||
settings = {
|
||||
credential = {
|
||||
helper = [ "cache --timeout 21600" "${pkgs.git-credential-manager}/bin/git-credential-manager" "${pkgs.git-credential-oauth}/bin/git-credential-oauth" ];
|
||||
credentialStore = "secretservice";
|
||||
@@ -106,6 +116,7 @@ with lib;
|
||||
settings = {
|
||||
theme = "dracula";
|
||||
show_startup_tips = false;
|
||||
default_mode = "locked";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -167,6 +178,24 @@ with lib;
|
||||
settings = mkMerge [{
|
||||
misc = {
|
||||
assume_yes = true;
|
||||
disable = [
|
||||
"android_studio"
|
||||
"jetbrains_aqua"
|
||||
"jetbrains_clion"
|
||||
"jetbrains_datagrip"
|
||||
"jetbrains_dataspell"
|
||||
"jetbrains_gateway"
|
||||
"jetbrains_goland"
|
||||
"jetbrains_idea"
|
||||
"jetbrains_mps"
|
||||
"jetbrains_phpstorm"
|
||||
"jetbrains_pycharm"
|
||||
"jetbrains_rider"
|
||||
"jetbrains_rubymine"
|
||||
"jetbrains_rustrover"
|
||||
"jetbrains_toolbox"
|
||||
"jetbrains_webstorm"
|
||||
];
|
||||
};
|
||||
}
|
||||
(mkIf (nixUpdateLocation != null) {
|
||||
@@ -181,11 +210,7 @@ with lib;
|
||||
})
|
||||
(mkIf (flakeUpdateLocation != null) {
|
||||
pre_commands = {
|
||||
nix-flake-update = "${(pkgs.writeShellScriptBin "nix-flake-update" ''
|
||||
git -C ${flakeUpdateLocation} pull --quiet
|
||||
sudo nix flake update --flake ${flakeUpdateLocation}
|
||||
git -C ${flakeUpdateLocation} diff-index --quiet HEAD flake.lock || git -C ${flakeUpdateLocation} commit --quiet flake.lock -m "update flake.lock"
|
||||
'')}/bin/nix-flake-update";
|
||||
nix-flake-update = "${(pkgs.writeShellScriptBin "nix-flake-update" "sudo nix flake update --flake ${flakeUpdateLocation}")}/bin/nix-flake-update";
|
||||
};
|
||||
})];
|
||||
};
|
||||
|
||||
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 = [
|
||||
./vscode.nix
|
||||
./helix.nix
|
||||
# ./android.nix
|
||||
./dotnet.nix
|
||||
./sql.nix
|
||||
./games.nix
|
||||
./helix.nix
|
||||
./sql.nix
|
||||
./vscode.nix
|
||||
];
|
||||
}
|
||||
@@ -4,7 +4,7 @@ with lib;
|
||||
{
|
||||
options.helix = {
|
||||
fullInstall = mkOption {
|
||||
type = lib.types.nullOr lib.types.bool;
|
||||
type = types.bool;
|
||||
default = false;
|
||||
};
|
||||
};
|
||||
@@ -17,34 +17,46 @@ with lib;
|
||||
settings = {
|
||||
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 {
|
||||
extraPackages = with pkgs;[
|
||||
marksman
|
||||
shfmt
|
||||
bash-language-server
|
||||
superhtml
|
||||
nixd
|
||||
nixpkgs-fmt
|
||||
biome
|
||||
omnisharp-roslyn
|
||||
netcoredbg
|
||||
ruff
|
||||
] ++ (with nodePackages;[
|
||||
vscode-langservers-extracted
|
||||
typescript-language-server
|
||||
]);
|
||||
languages = {
|
||||
language = [
|
||||
{
|
||||
name = "nix";
|
||||
language-servers = [ "nixd" "nil" ];
|
||||
}
|
||||
{
|
||||
name = "html";
|
||||
language-servers = [ "superhtml" "vscode-html-language-server" ];
|
||||
}
|
||||
{
|
||||
name = "bash";
|
||||
formatter = { command = "shfmt"; };
|
||||
|
||||
@@ -3,6 +3,26 @@
|
||||
let
|
||||
openvsx = inputs.nix-vscode-extensions.extensions.x86_64-linux.open-vsx;
|
||||
vscode-marketplace = inputs.nix-vscode-extensions.extensions.x86_64-linux.vscode-marketplace;
|
||||
resharper-code-version = "0.0.15";
|
||||
|
||||
resharper-code = (pkgs.vscode-utils.buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
name = "resharper-code";
|
||||
version = resharper-code-version;
|
||||
publisher = "jetbrains";
|
||||
};
|
||||
vsix = builtins.fetchurl {
|
||||
name = "jetbrains.resharper-code.zip";
|
||||
url = "https://download.jetbrains.com/product?code=VSCRS&latest&distribution=linuxX64&type=eap&version=${resharper-code-version}";
|
||||
sha256 = "sha256:eef138c4fdd035031577f4c483c2155c4dd5ce91cfd1b9a2489c138aeb6cb99e";
|
||||
};
|
||||
}).overrideAttrs (old: {
|
||||
nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.makeBinaryWrapper ];
|
||||
postFixup = ''
|
||||
wrapProgram $out/share/vscode/extensions/jetbrains.resharper-code/resharper/linux-x64/JetBrains.VsCode.Backend \
|
||||
--prefix LD_LIBRARY_PATH : ${pkgs.dotnet-sdk.icu}/lib
|
||||
'';
|
||||
});
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs;[
|
||||
@@ -17,7 +37,9 @@ in
|
||||
profiles.default = {
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
extensions = (with openvsx;[
|
||||
extensions = [
|
||||
resharper-code # Requires DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
|
||||
] ++ (with openvsx;[
|
||||
biomejs.biome
|
||||
mkhl.direnv
|
||||
dracula-theme.theme-dracula
|
||||
@@ -34,7 +56,9 @@ in
|
||||
ms-python.python
|
||||
ms-python.debugpy
|
||||
charliermarsh.ruff
|
||||
]) ++ (with vscode-marketplace;[ bradlc.vscode-tailwindcss ]);
|
||||
]) ++ (with vscode-marketplace;[
|
||||
bradlc.vscode-tailwindcss
|
||||
]);
|
||||
userSettings = with pkgs;{
|
||||
"workbench.iconTheme" = "material-icon-theme";
|
||||
"window.titleBarStyle" = "custom";
|
||||
@@ -72,7 +96,7 @@ in
|
||||
"[jsonc]" = {
|
||||
"editor.defaultFormatter" = "biomejs.biome";
|
||||
};
|
||||
"biome.lsp.bin" = "${biome}/bin/biome";
|
||||
# "biome.lsp.bin" = "${biome}/bin/biome";
|
||||
#"biome.requireConfigFile" = true;
|
||||
|
||||
"typescript.preferences.preferTypeOnlyAutoImports" = true;
|
||||
@@ -89,6 +113,8 @@ in
|
||||
"bashIde.shfmt.path" = "${shfmt}/bin/shfmt";
|
||||
|
||||
"rust-analyzer.rustfmt.overrideCommand" = [ "${rustfmt}/bin/rustfmt" ];
|
||||
|
||||
"tailwindCSS.classFunctions" = [ "cva" "cx" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
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,61 +1,105 @@
|
||||
{ tablet ? false }:
|
||||
{
|
||||
settings = {
|
||||
# data privacy
|
||||
"browser.discovery.enabled" = false;
|
||||
"dom.security.https_only_mode" = true;
|
||||
|
||||
# no autofill
|
||||
"extensions.formautofill.addresses.enabled" = false;
|
||||
"extensions.formautofill.creditCards.enabled" = false;
|
||||
|
||||
# stop fonts
|
||||
"browser.display.use_document_fonts" = 0;
|
||||
|
||||
# dont show about:config warning
|
||||
"browser.aboutConfig.showWarning" = false;
|
||||
|
||||
# dont offer to save passwords
|
||||
"signon.rememberSignons" = false;
|
||||
|
||||
# home page
|
||||
"browser.startup.homepage" = "about:blank";
|
||||
|
||||
# blank new tab
|
||||
"browser.newtabpage.enabled" = false;
|
||||
|
||||
# compact density
|
||||
"browser.uidensity" = 1;
|
||||
# dont draw tabs in titlebar
|
||||
"browser.tabs.drawInTitlebar" = false;
|
||||
# autoscroll middleclick
|
||||
"general.autoScroll" = true;
|
||||
# dont paste on middlemouse
|
||||
"middlemouse.paste" = false;
|
||||
"browser.uidensity" = if tablet then 2 else 1;
|
||||
|
||||
# userChrome
|
||||
"toolkit.legacyUserProfileCustomizations.stylesheets" = true;
|
||||
|
||||
# dont draw tabs in titlebar
|
||||
"browser.tabs.drawInTitlebar" = false;
|
||||
|
||||
# autoscroll middleclick
|
||||
"general.autoScroll" = true;
|
||||
|
||||
# dont paste on middlemouse
|
||||
"middlemouse.paste" = false;
|
||||
|
||||
# menu bar
|
||||
"ui.key.menuAccessKeyFocuses" = false;
|
||||
# use kde file picker
|
||||
|
||||
# use desktop file picker
|
||||
"widget.use-xdg-desktop-portal.file-picker" = 1;
|
||||
|
||||
# sidebar at right
|
||||
"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
|
||||
"extensions.pocket.enabled" = false;
|
||||
|
||||
# browser links should be new tab
|
||||
"browser.link.open_newwindow.restriction" = 0;
|
||||
# allow custom search enginers
|
||||
|
||||
# allow custom search engines
|
||||
"browser.urlbar.update2.engineAliasRefresh" = true;
|
||||
# do not retrieve suggestions as you type https://blog.mozilla.org/en/firefox/better-search-suggestions/
|
||||
"browser.urlbar.quicksuggest.online.enabled" = false;
|
||||
# do not trim http
|
||||
"browser.urlbar.trimURLs" = false;
|
||||
|
||||
# force enable hardware accel
|
||||
"media.hardware-video-decoding.force-enabled" = true;
|
||||
|
||||
# vaapi
|
||||
"media.ffmpeg.vaapi.enabled" = true;
|
||||
# downloads ask to save or open
|
||||
|
||||
# downloads
|
||||
# ask to save or open
|
||||
"browser.download.always_ask_before_handling_new_types" = true;
|
||||
# downloads always ask download location
|
||||
# always ask download location
|
||||
"browser.download.useDownloadDir" = false;
|
||||
# download to tmp dir, NOT Downloads (seriously Mozilla?)
|
||||
"browser.download.start_downloads_in_tmp_dir" = true;
|
||||
|
||||
# widevine
|
||||
"browser.eme.ui.enabled" = false;
|
||||
"media.eme.enabled" = false;
|
||||
|
||||
# media control keys
|
||||
"media.hardwaremediakeys.enabled" = false;
|
||||
|
||||
# restore tabs on startup
|
||||
"browser.startup.page" = 3;
|
||||
|
||||
# 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) ***/
|
||||
@@ -133,16 +177,19 @@
|
||||
"browser.contentblocking.category" = "strict";
|
||||
};
|
||||
userChrome = ''
|
||||
/* Hide tab bar in FF Quantum */
|
||||
@-moz-document url(chrome://browser/content/browser.xul), url(chrome://browser/content/browser.xhtml) {
|
||||
#TabsToolbar {
|
||||
visibility: collapse !important;
|
||||
margin-bottom: 21px !important;
|
||||
}
|
||||
/* Remove old sidebar header */
|
||||
#sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#sidebar-box[sidebarcommand="treestyletab_piro_sakura_ne_jp-sidebar-action"] #sidebar-header {
|
||||
visibility: collapse !important;
|
||||
}
|
||||
/* Remove sidebar revamp header */
|
||||
#sidebar-panel-header {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Allow complete collapse of sidebar revamp */
|
||||
#sidebar-main:not([sidebar-launcher-expanded]) {
|
||||
width: 0;
|
||||
}
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -1,64 +0,0 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
programs = {
|
||||
firefox = {
|
||||
enable = true;
|
||||
package = pkgs.firefox;
|
||||
languagePacks = [
|
||||
"en-GB"
|
||||
];
|
||||
policies = {
|
||||
"DisplayMenuBar" = true;
|
||||
"ExtensionSettings" = with builtins;
|
||||
let
|
||||
extension = shortId: uuid: {
|
||||
name = uuid;
|
||||
value = {
|
||||
install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi";
|
||||
installation_mode = "normal_installed";
|
||||
};
|
||||
};
|
||||
in
|
||||
listToAttrs [
|
||||
# Security / Privacy
|
||||
(extension "ublock-origin" "uBlock0@raymondhill.net")
|
||||
(extension "keepassxc-browser" "keepassxc-browser@keepassxc.org")
|
||||
(extension "cookie-autodelete" "CookieAutoDelete@kennydo.com")
|
||||
|
||||
# Annoyances
|
||||
(extension "sponsorblock" "sponsorBlocker@ajay.app")
|
||||
(extension "bandcamp-player-volume-control" "{308ec088-284a-40fe-ae14-7c917526f694}")
|
||||
|
||||
# UI / CSS
|
||||
(extension "darkreader" "addon@darkreader.org")
|
||||
(extension "rsspreview" "{7799824a-30fe-4c67-8b3e-7094ea203c94}")
|
||||
(extension "tree-style-tab" "treestyletab@piro.sakura.ne.jp")
|
||||
(extension "traduzir-paginas-web" "{036a55b4-5e72-4d05-a06c-cba2dfcc134a}")
|
||||
|
||||
# Additional Functionality
|
||||
(extension "betterttv" "firefox@betterttv.net")
|
||||
(extension "multi-account-containers" "@testpilot-containers")
|
||||
(extension "gumbo-twitch-companion" "{59a39734-1e66-452e-a7b8-cc79f72062f0}")
|
||||
(extension "joplin-web-clipper" "{8419486a-54e9-11e8-9401-ac9e17909436}")
|
||||
(extension "tab-reloader" "jid0-bnmfwWw2w2w4e4edvcdDbnMhdVg@jetpack")
|
||||
(extension "tab-session-manager" "Tab-Session-Manager@sienori")
|
||||
(extension "user-agent-string-switcher" "{a6c4a591-f1b2-4f03-b3ff-767e5bedf4e7}")
|
||||
(extension "violentmonkey" "{aecec67f-0d10-4fa7-b7c7-609a2db280cf}")
|
||||
];
|
||||
# To add additional extensions, find it on addons.mozilla.org, find
|
||||
# the short ID in the url (like https://addons.mozilla.org/en-US/firefox/addon/!SHORT_ID!/)
|
||||
# Then, download the XPI by filling it in to the install_url template, unzip it,
|
||||
# run `jq .browser_specific_settings.gecko.id manifest.json` or
|
||||
# `jq .applications.gecko.id manifest.json` to get the UUID
|
||||
};
|
||||
|
||||
profiles.default = import
|
||||
./firefox-profile.nix // {
|
||||
id = 0;
|
||||
name = "default";
|
||||
isDefault = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,16 +1,86 @@
|
||||
{ pkgs, ... }:
|
||||
{ pkgs, inputs, ... }:
|
||||
|
||||
let
|
||||
pkgs_unstable = inputs.nixpkgs-unstable.legacyPackages."${pkgs.stdenv.hostPlatform.system}";
|
||||
|
||||
# https://simpler-website.pages.dev/html/2021/1/wine-environment-variables/#wineesync
|
||||
wine-wrapped = (pkgs.writeShellApplication {
|
||||
name = "wine";
|
||||
runtimeInputs = [ pkgs_unstable.wineWowPackages.stagingFull ];
|
||||
text = ''
|
||||
export WINEPREFIX="''${WINEPREFIX:-"$HOME/Games/wine/default"}"
|
||||
wine "$@"
|
||||
'';
|
||||
});
|
||||
|
||||
# https://github.com/GloriousEggroll/proton-ge-custom?tab=readme-ov-file#modification
|
||||
# These aren't yet documented in the README:
|
||||
# PROTON_MEDIA_USE_GST=1 will tell proton to use the winegstreamer backend instead of the default winedmo backend (the winedmo backend was introduced in Proton 10 and is the current preferred video playback method). This can be useful for games with videos that may have worked in Proton 9 but regressed in Proton 10.
|
||||
# PROTON_GST_VIDEO_ORIENTATION=<orientation> can be any of the following: vertical-flip, horizontal-flip, rotate-180, automatic. This is useful if some games have videos that are upside down or otherwise not oriented correctly.
|
||||
umu-wrapped = (pkgs.writeShellApplication {
|
||||
name = "umu-run";
|
||||
runtimeInputs = [ pkgs_unstable.umu-launcher ];
|
||||
text = ''
|
||||
export PROTONPATH="''${PROTONPATH:-"GE-Proton"}"
|
||||
export PROTON_ENABLE_WAYLAND="''${PROTON_ENABLE_WAYLAND:-"0"}"
|
||||
umu-run "$@"
|
||||
'';
|
||||
});
|
||||
|
||||
# proton with ja_JP
|
||||
umu-ja = (pkgs.writeShellApplication {
|
||||
name = "umu-ja";
|
||||
runtimeInputs = [ umu-wrapped ];
|
||||
text = "LANG=ja_JP.utf8 umu-run \"$@\"";
|
||||
});
|
||||
|
||||
# wine with ja_JP
|
||||
wine-ja = (pkgs.writeShellApplication {
|
||||
name = "wine-ja";
|
||||
runtimeInputs = [ wine-wrapped ];
|
||||
text = "LANG=ja_JP.utf8 wine \"$@\"";
|
||||
});
|
||||
in
|
||||
{
|
||||
home.packages = with pkgs;[
|
||||
steamguard-cli
|
||||
# Wine / Proton
|
||||
umu-wrapped
|
||||
umu-ja
|
||||
wine-wrapped
|
||||
wine-ja
|
||||
pkgs_unstable.winetricks
|
||||
bottles
|
||||
ryubing
|
||||
mgba
|
||||
scanmem
|
||||
(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
|
||||
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