Compare commits
170 Commits
88bc79b530
...
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 |
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, ... }:
|
||||
|
||||
{
|
||||
fonts.enableDefaultPackages = true;
|
||||
fonts.packages = with pkgs; [
|
||||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
noto-fonts-cjk-serif
|
||||
];
|
||||
fonts = {
|
||||
enableDefaultPackages = true;
|
||||
fontconfig.useEmbeddedBitmaps = true;
|
||||
packages = with pkgs; [
|
||||
noto-fonts
|
||||
noto-fonts-cjk-sans
|
||||
noto-fonts-cjk-serif
|
||||
];
|
||||
};
|
||||
|
||||
# Select internationalisation properties.
|
||||
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;
|
||||
|
||||
# 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
|
||||
];
|
||||
}
|
||||
@@ -5,84 +5,24 @@
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
./base/nix-settings.nix
|
||||
./base/fonts.nix
|
||||
./base/kde.nix
|
||||
];
|
||||
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;
|
||||
|
||||
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;
|
||||
};
|
||||
|
||||
# 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;
|
||||
# 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;
|
||||
[
|
||||
vim
|
||||
curl
|
||||
inetutils
|
||||
rar
|
||||
|
||||
nuspell
|
||||
hunspellDicts.en-gb-large
|
||||
|
||||
libva-utils
|
||||
smartmontools
|
||||
|
||||
# For cursor in steam?
|
||||
xsettingsd
|
||||
xorg.xrdb
|
||||
];
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
@@ -97,16 +37,6 @@
|
||||
# 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.
|
||||
@@ -130,5 +60,4 @@
|
||||
#
|
||||
# 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?
|
||||
|
||||
}
|
||||
@@ -1,19 +1,43 @@
|
||||
{ ... }:
|
||||
{ pkgs, ... }:
|
||||
|
||||
{
|
||||
hardware.graphics.enable32Bit = true; # For 32 bit applications
|
||||
hardware.steam-hardware.enable = true;
|
||||
|
||||
programs.gamemode.enable = true;
|
||||
programs.gamescope = {
|
||||
enable = true;
|
||||
# capSysNice = true;
|
||||
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;
|
||||
gamescopeSession.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;
|
||||
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,27 +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 podman group
|
||||
podman = {
|
||||
enable = true;
|
||||
# Create a `docker` alias for podman, to use it as a drop-in replacement
|
||||
dockerCompat = true;
|
||||
# Required for containers under podman-compose to be able to talk to each other.
|
||||
defaultNetwork.settings.dns_enabled = true;
|
||||
};
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,28 +1,32 @@
|
||||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
|
||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
|
||||
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions";
|
||||
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-24.11";
|
||||
url = "github:nix-community/home-manager/release-25.11?shallow=1";
|
||||
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";
|
||||
};
|
||||
|
||||
nix-vscode-extensions.url = "github:nix-community/nix-vscode-extensions?shallow=1";
|
||||
|
||||
system-manager = {
|
||||
url = "github:numtide/system-manager";
|
||||
url = "github:numtide/system-manager?shallow=1";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nix-system-graphics = {
|
||||
url = "github:soupglasses/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, ... }@inputs:
|
||||
outputs = { nixpkgs, home-manager, system-manager, nix-system-graphics, nix-index-database, ... }@inputs:
|
||||
let
|
||||
system = "x86_64-linux";
|
||||
pkgs = import nixpkgs {
|
||||
@@ -31,23 +35,13 @@
|
||||
};
|
||||
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 = [ ./devices/deck/home.nix ];
|
||||
modules = [
|
||||
nix-index-database.homeModules.nix-index
|
||||
./home.nix
|
||||
];
|
||||
};
|
||||
systemConfigs.deck = system-manager.lib.makeSystemConfig {
|
||||
modules = [
|
||||
@@ -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 = {
|
||||
@@ -29,6 +35,9 @@
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager = {
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
sharedModules = [
|
||||
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";
|
||||
|
||||
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
|
||||
# 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
|
||||
@@ -16,21 +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.
|
||||
|
||||
# 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
|
||||
@@ -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’.
|
||||
users.users.worble = {
|
||||
initialPassword = "password";
|
||||
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;
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
extraSpecialArgs = { inherit inputs; };
|
||||
sharedModules = [ ];
|
||||
sharedModules = [
|
||||
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";
|
||||
@@ -29,38 +31,30 @@
|
||||
|
||||
# comms
|
||||
teams-for-linux
|
||||
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
|
||||
|
||||
# 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.
|
||||
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,39 +67,29 @@
|
||||
};
|
||||
};
|
||||
|
||||
# install the shaders from anime4k directory for this to work
|
||||
mpv = {
|
||||
enable = true;
|
||||
config = {
|
||||
profile = "gpu-hq";
|
||||
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";
|
||||
screenshot-directory = "/mnt/HDD2/Pictures/";
|
||||
};
|
||||
};
|
||||
|
||||
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/HDD2/Videos/";
|
||||
};
|
||||
|
||||
Install = {
|
||||
@@ -113,6 +97,8 @@
|
||||
};
|
||||
|
||||
Service = {
|
||||
RestartSec = 10;
|
||||
Restart = "on-failure";
|
||||
Type = "exec";
|
||||
ExecStart = "${pkgs.writeShellApplication {
|
||||
name = "rclone-media";
|
||||
@@ -120,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"
|
||||
@@ -132,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
|
||||
|
||||
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
|
||||
215
flake.lock
generated
215
flake.lock
generated
@@ -1,215 +0,0 @@
|
||||
{
|
||||
"nodes": {
|
||||
"disko": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1740485968,
|
||||
"narHash": "sha256-WK+PZHbfDjLyveXAxpnrfagiFgZWaTJglewBWniTn2Y=",
|
||||
"owner": "nix-community",
|
||||
"repo": "disko",
|
||||
"rev": "19c1140419c4f1cdf88ad4c1cfb6605597628940",
|
||||
"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": 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-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1741185283,
|
||||
"narHash": "sha256-Wk+2uWk4WhtB1LtXt3smd0K2JZ5qeZj9LldGTmfEldo=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"rev": "c7a72aa0e5f72bc6a9d8dfaf33e4de013c960f7b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "nix-vscode-extensions",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixos-hardware": {
|
||||
"locked": {
|
||||
"lastModified": 1740646007,
|
||||
"narHash": "sha256-dMReDQobS3kqoiUCQIYI9c0imPXRZnBubX20yX/G5LE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixos-hardware",
|
||||
"rev": "009b764ac98a3602d41fc68072eeec5d24fc0e49",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "master",
|
||||
"repo": "nixos-hardware",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1740547748,
|
||||
"narHash": "sha256-Ly2fBL1LscV+KyCqPRufUBuiw+zmWrlJzpWOWbahplg=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3a05eebede89661660945da1f151959900903b6a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3a05eebede89661660945da1f151959900903b6a",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs-unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1741173522,
|
||||
"narHash": "sha256-k7VSqvv0r1r53nUI/IfPHCppkUAddeXn843YlAC5DR0=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d69ab0d71b22fa1ce3dbeff666e6deb4917db049",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1741196730,
|
||||
"narHash": "sha256-0Sj6ZKjCpQMfWnN0NURqRCQn2ob7YtXTAOTwCuz7fkA=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "48913d8f9127ea6530a2a2f1bd4daa1b8685d8a3",
|
||||
"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": 1741006529,
|
||||
"narHash": "sha256-C9Td+pCQ/qNpr75ZCPpOlOwHZW1zRzi6AXj+p+Mrw10=",
|
||||
"owner": "numtide",
|
||||
"repo": "system-manager",
|
||||
"rev": "9f8f766c3b8a19c68aa43ab19c94b0641d6a5b20",
|
||||
"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,52 +0,0 @@
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
imports = [
|
||||
./base/fonts.nix
|
||||
./base/terminal.nix
|
||||
./firefox/firefox.nix
|
||||
];
|
||||
|
||||
home.packages = with pkgs;[
|
||||
# general
|
||||
thunderbird
|
||||
keepassxc
|
||||
qbittorrent
|
||||
libreoffice-qt
|
||||
joplin-desktop
|
||||
|
||||
# comms
|
||||
teamspeak_client
|
||||
vesktop
|
||||
];
|
||||
|
||||
# set breeze as default cursor
|
||||
home.file.".icons/default".source = "${pkgs.kdePackages.breeze}/share/icons/breeze_cursors";
|
||||
|
||||
home.sessionVariables = {
|
||||
NIXOS_OZONE_WL = "1";
|
||||
};
|
||||
|
||||
services.nextcloud-client = {
|
||||
enable = true;
|
||||
package = pkgs.nextcloud-client;
|
||||
startInBackground = true;
|
||||
};
|
||||
|
||||
programs = {
|
||||
home-manager.enable = true;
|
||||
|
||||
chromium = {
|
||||
enable = true;
|
||||
package = pkgs.brave;
|
||||
};
|
||||
|
||||
mpv = lib.mkDefault {
|
||||
enable = true;
|
||||
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;[
|
||||
liberation_ttf
|
||||
ubuntu-sans
|
||||
ubuntu-sans-mono
|
||||
(nerdfonts.override { fonts = [ "SpaceMono" ]; })
|
||||
nerd-fonts.space-mono
|
||||
corefonts
|
||||
];
|
||||
|
||||
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,38 +8,57 @@ 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;
|
||||
};
|
||||
};
|
||||
|
||||
config = {
|
||||
home.packages = with pkgs;[
|
||||
blesh
|
||||
(nerdfonts.override { fonts = [ "SpaceMono" ]; })
|
||||
nerd-fonts.space-mono
|
||||
];
|
||||
|
||||
programs = {
|
||||
bash = {
|
||||
enable = true;
|
||||
bashrcExtra = ''
|
||||
source $(blesh-share)/ble.sh
|
||||
bleopt canvas_winch_action=redraw-prev
|
||||
initExtra = ''
|
||||
if [[ $(${pkgs.procps}/bin/ps --no-header --pid=$PPID --format=comm) != "fish" && -z ''${BASH_EXECUTION_STRING} ]]
|
||||
then
|
||||
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=""
|
||||
exec ${pkgs.fish}/bin/fish $LOGIN_OPTION
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
fish = {
|
||||
enable = true;
|
||||
interactiveShellInit = ''
|
||||
set fish_greeting # Disable greeting
|
||||
'';
|
||||
};
|
||||
|
||||
nix-index = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableFishIntegration = true;
|
||||
};
|
||||
|
||||
delta = {
|
||||
enable = true;
|
||||
enableGitIntegration = true;
|
||||
};
|
||||
|
||||
git = {
|
||||
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";
|
||||
@@ -93,8 +112,11 @@ with lib;
|
||||
zellij = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableFishIntegration = true;
|
||||
settings = {
|
||||
theme = "dracula";
|
||||
show_startup_tips = false;
|
||||
default_mode = "locked";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -119,6 +141,7 @@ with lib;
|
||||
eza = {
|
||||
enable = true;
|
||||
enableBashIntegration = true;
|
||||
enableFishIntegration = true;
|
||||
git = true;
|
||||
extraOptions = [
|
||||
"--color=auto"
|
||||
@@ -131,7 +154,7 @@ with lib;
|
||||
yazi = {
|
||||
enable = true;
|
||||
settings = {
|
||||
manager = {
|
||||
mgr = {
|
||||
sort_by = "natural";
|
||||
show_hidden = true;
|
||||
};
|
||||
@@ -155,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) {
|
||||
@@ -169,7 +210,7 @@ with lib;
|
||||
})
|
||||
(mkIf (flakeUpdateLocation != null) {
|
||||
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 = [
|
||||
./vscode.nix
|
||||
./helix.nix
|
||||
# ./android.nix
|
||||
./dotnet.nix
|
||||
./sql.nix
|
||||
./games.nix
|
||||
./helix.nix
|
||||
./sql.nix
|
||||
./vscode.nix
|
||||
];
|
||||
}
|
||||
@@ -3,6 +3,6 @@
|
||||
{
|
||||
home.packages = with pkgs;[
|
||||
jetbrains.rider
|
||||
#godot_4-mono
|
||||
godot-mono
|
||||
];
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ with lib;
|
||||
{
|
||||
options.helix = {
|
||||
fullInstall = mkOption {
|
||||
type = lib.types.nullOr lib.types.bool;
|
||||
type = types.bool;
|
||||
default = false;
|
||||
};
|
||||
};
|
||||
@@ -17,31 +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
|
||||
] ++ (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"; };
|
||||
|
||||
@@ -1,90 +1,121 @@
|
||||
{ inputs, pkgs, ... }:
|
||||
|
||||
let
|
||||
openvsx-extensions = inputs.nix-vscode-extensions.extensions.x86_64-linux.open-vsx;
|
||||
vscode-extensions = inputs.nix-vscode-extensions.extensions.x86_64-linux.vscode-marketplace;
|
||||
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;[
|
||||
(nerdfonts.override { fonts = [ "SpaceMono" ]; })
|
||||
nerd-fonts.space-mono
|
||||
];
|
||||
|
||||
programs = {
|
||||
vscode = {
|
||||
enable = true;
|
||||
package = inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".vscodium;
|
||||
package = pkgs.vscodium;
|
||||
mutableExtensionsDir = false;
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
extensions = with openvsx-extensions;[
|
||||
biomejs.biome
|
||||
mkhl.direnv
|
||||
dracula-theme.theme-dracula
|
||||
dbaeumer.vscode-eslint
|
||||
eamodio.gitlens
|
||||
pkief.material-icon-theme
|
||||
jnoortheen.nix-ide
|
||||
esbenp.prettier-vscode
|
||||
humao.rest-client
|
||||
loriscro.super
|
||||
mads-hartmann.bash-ide-vscode
|
||||
foxundermoon.shell-format
|
||||
dart-code.flutter
|
||||
ms-vscode.wasm-wasi-core
|
||||
rust-lang.rust-analyzer
|
||||
tamasfe.even-better-toml
|
||||
mikestead.dotenv
|
||||
] ++ [ vscode-extensions.bradlc.vscode-tailwindcss ];
|
||||
userSettings = with pkgs;{
|
||||
"workbench.iconTheme" = "material-icon-theme";
|
||||
"window.titleBarStyle" = "custom";
|
||||
"workbench.colorTheme" = "Dracula Theme";
|
||||
"explorer.compactFolders" = false;
|
||||
"chat.commandCenter.enabled" = false;
|
||||
|
||||
"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";
|
||||
|
||||
"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" ];
|
||||
profiles.default = {
|
||||
enableUpdateCheck = false;
|
||||
enableExtensionUpdateCheck = false;
|
||||
extensions = [
|
||||
resharper-code # Requires DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1
|
||||
] ++ (with openvsx;[
|
||||
biomejs.biome
|
||||
mkhl.direnv
|
||||
dracula-theme.theme-dracula
|
||||
dbaeumer.vscode-eslint
|
||||
pkief.material-icon-theme
|
||||
jnoortheen.nix-ide
|
||||
esbenp.prettier-vscode
|
||||
loriscro.super
|
||||
mads-hartmann.bash-ide-vscode
|
||||
ms-vscode.wasm-wasi-core
|
||||
rust-lang.rust-analyzer
|
||||
tamasfe.even-better-toml
|
||||
mikestead.dotenv
|
||||
ms-python.python
|
||||
ms-python.debugpy
|
||||
charliermarsh.ruff
|
||||
]) ++ (with vscode-marketplace;[
|
||||
bradlc.vscode-tailwindcss
|
||||
]);
|
||||
userSettings = with pkgs;{
|
||||
"workbench.iconTheme" = "material-icon-theme";
|
||||
"window.titleBarStyle" = "custom";
|
||||
"workbench.colorTheme" = "Dracula Theme";
|
||||
"explorer.compactFolders" = false;
|
||||
"chat.commandCenter.enabled" = false;
|
||||
"terminal.integrated.automationProfile.linux" = {
|
||||
"path" = "/bin/sh";
|
||||
};
|
||||
|
||||
"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,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,65 +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 "dont-accept-webp" "dont-accept-webp@jeffersonscher.com")
|
||||
(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, ... }:
|
||||
{ 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
|
||||
inputs.nixpkgs-unstable.legacyPackages."${pkgs.system}".ryubing
|
||||
(heroic.override {
|
||||
extraPkgs = pkgs: [
|
||||
pkgs.umu-launcher
|
||||
pkgs.gamescope
|
||||
pkgs.mangohud
|
||||
];
|
||||
})
|
||||
|
||||
# Steam
|
||||
steamguard-cli
|
||||
|
||||
# Emulators
|
||||
pkgs_unstable.ryubing
|
||||
mgba
|
||||
|
||||
# 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