Compare commits
38 commits
c96db92ecd
...
e826d26833
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e826d26833 | ||
|
|
acecc56229 | ||
|
|
044cc7da4a | ||
|
|
00aa80ddc0 | ||
|
|
19b9521728 | ||
|
|
7089a2c05a | ||
|
|
3314dbaa9c | ||
|
|
4f4ca38679 | ||
|
|
f15ffa7e61 | ||
|
|
5768b554e3 | ||
|
|
fb7f3b5d15 | ||
|
|
ce8b7972b5 | ||
|
|
5811f32beb | ||
|
|
4069287840 | ||
|
|
0561ba4c38 | ||
|
|
8da3f2a675 | ||
|
|
d68735aade | ||
|
|
9edc8b0038 | ||
|
|
50c1504d47 | ||
|
|
66ffe8350c | ||
|
|
114199ec06 | ||
|
|
632089c4c5 | ||
|
|
58f40838e0 | ||
|
|
62461fe8d7 | ||
|
|
4bba217fd0 | ||
|
|
cbaa366f3d | ||
|
|
b07f9ab600 | ||
|
|
2202cd39cd | ||
|
|
da687af88c | ||
|
|
e9cee62aea | ||
|
|
49ee6c3ac4 | ||
|
|
3becde9260 | ||
|
|
f6d9a52ce7 | ||
|
|
b4cbac22b4 | ||
|
|
44a1a1f792 | ||
|
|
3ad19c8796 | ||
|
|
621665f446 | ||
|
|
5abb509c70 |
6 changed files with 287 additions and 99 deletions
1
.envrc
Normal file
1
.envrc
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
use flake
|
||||||
|
|
@ -13,8 +13,6 @@
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
boot.kernelParams = [ "usbcore.autosuspend=-1" ];
|
|
||||||
|
|
||||||
# Boot time optimizations
|
# Boot time optimizations
|
||||||
boot.loader.timeout = 0; # Boot immediately without waiting for user input
|
boot.loader.timeout = 0; # Boot immediately without waiting for user input
|
||||||
|
|
||||||
|
|
@ -75,8 +73,13 @@
|
||||||
hardware.graphics = {
|
hardware.graphics = {
|
||||||
enable = true;
|
enable = true;
|
||||||
enable32Bit = true;
|
enable32Bit = true;
|
||||||
# Add OpenCL support for CPU-based operations
|
# Add OpenCL support via Rusticl (recommended by NixOS wiki for DaVinci Resolve)
|
||||||
extraPackages = with pkgs; [ pocl ];
|
extraPackages = with pkgs; [ mesa.opencl ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable Rusticl for AMD Radeon GPUs (DaVinci Resolve)
|
||||||
|
environment.variables = {
|
||||||
|
RUSTICL_ENABLE = "radeonsi";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Enable keyd for key remapping
|
# Enable keyd for key remapping
|
||||||
|
|
@ -139,6 +142,7 @@
|
||||||
geary # Email
|
geary # Email
|
||||||
gnome-tour
|
gnome-tour
|
||||||
gnome-font-viewer # Have font-manager
|
gnome-font-viewer # Have font-manager
|
||||||
|
nautilus # Using Nemo
|
||||||
];
|
];
|
||||||
|
|
||||||
# Configure keymap in X11
|
# Configure keymap in X11
|
||||||
|
|
@ -186,6 +190,9 @@
|
||||||
# Enable fwupd for BIOS updates (distributed through LVFS)
|
# Enable fwupd for BIOS updates (distributed through LVFS)
|
||||||
services.fwupd.enable = true;
|
services.fwupd.enable = true;
|
||||||
|
|
||||||
|
# Enable periodic TRIM for NVMe/SSD health
|
||||||
|
services.fstrim.enable = true;
|
||||||
|
|
||||||
# Enable automatic garbage collection to prevent old generations from slowing boot
|
# Enable automatic garbage collection to prevent old generations from slowing boot
|
||||||
nix.gc = {
|
nix.gc = {
|
||||||
automatic = true;
|
automatic = true;
|
||||||
|
|
@ -193,6 +200,7 @@
|
||||||
options = "--delete-older-than 7d";
|
options = "--delete-older-than 7d";
|
||||||
};
|
};
|
||||||
nix.settings.auto-optimise-store = true;
|
nix.settings.auto-optimise-store = true;
|
||||||
|
nix.optimise.automatic = true;
|
||||||
|
|
||||||
# Optimize Nix for RAM - use more memory for builds
|
# Optimize Nix for RAM - use more memory for builds
|
||||||
nix.settings = {
|
nix.settings = {
|
||||||
|
|
@ -243,6 +251,13 @@
|
||||||
|
|
||||||
# RAM optimizations for 96GB system
|
# RAM optimizations for 96GB system
|
||||||
# Disable swap usage (set swappiness to 0) - with 96GB RAM, never need swap
|
# Disable swap usage (set swappiness to 0) - with 96GB RAM, never need swap
|
||||||
|
# v4l2loopback for OBS Virtual Camera
|
||||||
|
boot.extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ];
|
||||||
|
boot.kernelModules = [ "v4l2loopback" ];
|
||||||
|
boot.extraModprobeConfig = ''
|
||||||
|
options v4l2loopback devices=1 video_nr=1 card_label="OBS Virtual Camera" exclusive_caps=1
|
||||||
|
'';
|
||||||
|
|
||||||
boot.kernel.sysctl = {
|
boot.kernel.sysctl = {
|
||||||
"vm.swappiness" = 0; # Never swap to disk
|
"vm.swappiness" = 0; # Never swap to disk
|
||||||
"vm.vfs_cache_pressure" = 50; # Keep more filesystem cache in RAM
|
"vm.vfs_cache_pressure" = 50; # Keep more filesystem cache in RAM
|
||||||
|
|
@ -278,14 +293,15 @@
|
||||||
# $ nix search wget
|
# $ nix search wget
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
git
|
git
|
||||||
helix # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
|
|
||||||
wget
|
wget
|
||||||
vim
|
vim
|
||||||
docker
|
|
||||||
docker-compose
|
docker-compose
|
||||||
nh
|
nh
|
||||||
];
|
];
|
||||||
|
|
||||||
|
programs.steam.enable = true;
|
||||||
|
programs.nix-index-database.comma.enable = true;
|
||||||
|
|
||||||
environment.variables.EDITOR = "helix";
|
environment.variables.EDITOR = "helix";
|
||||||
environment.sessionVariables = {
|
environment.sessionVariables = {
|
||||||
TERMINAL = "kitty";
|
TERMINAL = "kitty";
|
||||||
|
|
@ -325,11 +341,16 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
# GameCube adapter udev rules for Slippi/Dolphin
|
# GameCube adapter udev rules for Slippi/Dolphin
|
||||||
|
# Disable USB autosuspend for Framework's problematic devices (fingerprint reader, USB-C hub)
|
||||||
services.udev.extraRules = ''
|
services.udev.extraRules = ''
|
||||||
# GameCube adapter USB device (vendor ID 057e, product ID 0337)
|
# GameCube adapter USB device (vendor ID 057e, product ID 0337)
|
||||||
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="0337", MODE="0666"
|
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="0337", MODE="0666"
|
||||||
# GameCube adapter HID device (needed for Dolphin to access controllers)
|
# GameCube adapter HID device (needed for Dolphin to access controllers)
|
||||||
KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="0337", MODE="0666", GROUP="input"
|
KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="0337", MODE="0666", GROUP="input"
|
||||||
|
# Disable autosuspend for Framework fingerprint reader
|
||||||
|
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="27a6", ATTR{power/autosuspend}="-1"
|
||||||
|
# Disable autosuspend for Framework USB-C hub controllers
|
||||||
|
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="32ac", ATTR{power/autosuspend}="-1"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# Open ports in the firewall.
|
# Open ports in the firewall.
|
||||||
|
|
@ -346,19 +367,4 @@
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
system.stateVersion = "25.05"; # Did you read the comment?
|
system.stateVersion = "25.05"; # Did you read the comment?
|
||||||
|
|
||||||
# Set user profile picture for GNOME
|
|
||||||
# Set user profile picture for GNOME
|
|
||||||
system.activationScripts.script.text = ''
|
|
||||||
mkdir -p /var/lib/AccountsService/{icons,users}
|
|
||||||
img="/home/jet/Documents/nix-config/cat.png"
|
|
||||||
if [ -f "$img" ]; then
|
|
||||||
cp "$img" /var/lib/AccountsService/icons/jet
|
|
||||||
echo -e "[User]\nIcon=/var/lib/AccountsService/icons/jet\n" > /var/lib/AccountsService/users/jet
|
|
||||||
chown root:root /var/lib/AccountsService/users/jet
|
|
||||||
chmod 0600 /var/lib/AccountsService/users/jet
|
|
||||||
chown root:root /var/lib/AccountsService/icons/jet
|
|
||||||
chmod 0444 /var/lib/AccountsService/icons/jet
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
115
flake.lock
generated
115
flake.lock
generated
|
|
@ -1,5 +1,46 @@
|
||||||
{
|
{
|
||||||
"nodes": {
|
"nodes": {
|
||||||
|
"claude-code-overlay": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772252606,
|
||||||
|
"narHash": "sha256-SiIhFq4XbD3LmODQ2mTtakRBnjBn/KoSgAOId1cL1Ks=",
|
||||||
|
"owner": "ryoppippi",
|
||||||
|
"repo": "claude-code-overlay",
|
||||||
|
"rev": "b1ebf027412136bbbe4202741c3d48721644bc4b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "ryoppippi",
|
||||||
|
"repo": "claude-code-overlay",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"nur",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1733312601,
|
||||||
|
"narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"home-manager": {
|
"home-manager": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
|
|
@ -7,11 +48,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771531206,
|
"lastModified": 1772569491,
|
||||||
"narHash": "sha256-1R3Wx6KUkMb4x4E5UOhW9p6rqiexzSGGWxZqSHqW5n0=",
|
"narHash": "sha256-bdr6ueeXO1Xg91sFkuvaysYF0mVdwHBpdyhTjBEWv+s=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "91be7cce763fa4022c7cf025a71b0c366d1b6e77",
|
"rev": "924e61f5c2aeab38504028078d7091077744ab17",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -28,11 +69,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771102945,
|
"lastModified": 1772330611,
|
||||||
"narHash": "sha256-e5NfW8NhC3qChR8bHVni/asrig/ZFzd1wzpq+cEE/tg=",
|
"narHash": "sha256-UZjPc/d5XRxvjDbk4veAO4XFdvx6BUum2l40V688Xq8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "ff5e5d882c51f9a032479595cbab40fd04f56399",
|
"rev": "58fd7ff0eec2cda43e705c4c0585729ec471d400",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -41,13 +82,33 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nix-index-database": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772341813,
|
||||||
|
"narHash": "sha256-/PQ0ubBCMj/MVCWEI/XMStn55a8dIKsvztj4ZVLvUrQ=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"rev": "a2051ff239ce2e8a0148fa7a152903d9a78e854f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nix-index-database",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixos-hardware": {
|
"nixos-hardware": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771423359,
|
"lastModified": 1771969195,
|
||||||
"narHash": "sha256-yRKJ7gpVmXbX2ZcA8nFi6CMPkJXZGjie2unsiMzj3Ig=",
|
"narHash": "sha256-qwcDBtrRvJbrrnv1lf/pREQi8t2hWZxVAyeMo7/E9sw=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixos-hardware",
|
"repo": "nixos-hardware",
|
||||||
"rev": "740a22363033e9f1bb6270fbfb5a9574067af15b",
|
"rev": "41c6b421bdc301b2624486e11905c9af7b8ec68e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -58,11 +119,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771369470,
|
"lastModified": 1772542754,
|
||||||
"narHash": "sha256-0NBlEBKkN3lufyvFegY4TYv5mCNHbi5OmBDrzihbBMQ=",
|
"narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "0182a361324364ae3f436a63005877674cf45efb",
|
"rev": "8c809a146a140c5c8806f13399592dbcb1bb5dc4",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
@ -72,11 +133,35 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nur": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": "flake-parts",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1772583385,
|
||||||
|
"narHash": "sha256-3m4A+B/CnrG3xUeZbOw1OoLdSvB+7I/zZTW4fLM1go0=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "NUR",
|
||||||
|
"rev": "29adb5e8129c1020e59ca0a76b2a40d0e4a74eb1",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "NUR",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
|
"claude-code-overlay": "claude-code-overlay",
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
|
"nix-index-database": "nix-index-database",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixpkgs": "nixpkgs",
|
"nixpkgs": "nixpkgs",
|
||||||
|
"nur": "nur",
|
||||||
"zen-browser": "zen-browser"
|
"zen-browser": "zen-browser"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -88,11 +173,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771562861,
|
"lastModified": 1772517053,
|
||||||
"narHash": "sha256-6oT3rF68W8HERLXvFfEkpz8xpAVLKZsY1ZuR/BbDTO8=",
|
"narHash": "sha256-aBuL2TFnyBLR+t6iBlKnTWWzprXYKQQIaV0IuCSPPeE=",
|
||||||
"owner": "0xc000022070",
|
"owner": "0xc000022070",
|
||||||
"repo": "zen-browser-flake",
|
"repo": "zen-browser-flake",
|
||||||
"rev": "7783a3adf3d5a9599a82c75a44c7482e70398ac2",
|
"rev": "32e9673aee2ae994ced561247918952398a3e933",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
||||||
42
flake.nix
42
flake.nix
|
|
@ -10,6 +10,18 @@
|
||||||
url = "github:0xc000022070/zen-browser-flake";
|
url = "github:0xc000022070/zen-browser-flake";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
|
nix-index-database = {
|
||||||
|
url = "github:nix-community/nix-index-database";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
nur = {
|
||||||
|
url = "github:nix-community/NUR";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
claude-code-overlay = {
|
||||||
|
url = "github:ryoppippi/claude-code-overlay";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs@{
|
outputs = inputs@{
|
||||||
|
|
@ -27,6 +39,7 @@
|
||||||
./configuration.nix
|
./configuration.nix
|
||||||
nixos-hardware.nixosModules.framework-amd-ai-300-series
|
nixos-hardware.nixosModules.framework-amd-ai-300-series
|
||||||
home-manager.nixosModules.home-manager
|
home-manager.nixosModules.home-manager
|
||||||
|
inputs.nix-index-database.nixosModules.default
|
||||||
{
|
{
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
|
|
@ -36,23 +49,26 @@
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
(final: prev: {
|
inputs.nur.overlays.default
|
||||||
|
inputs.claude-code-overlay.overlays.default
|
||||||
antigravity = prev.antigravity.overrideAttrs (oldAttrs: rec {
|
|
||||||
version = "1.18.3";
|
|
||||||
src = prev.fetchurl {
|
|
||||||
url = "https://edgedl.me.gvt1.com/edgedl/release2/j0qc3/antigravity/stable/1.18.3-4739469533380608/linux-x64/Antigravity.tar.gz";
|
|
||||||
hash = "sha256:0f4n3i45gjr36hidpvibzn3p2jla2r7wg91ybmf2akafjn6f8zsc";
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
antigravity-fhs = final.antigravity.fhs;
|
|
||||||
|
|
||||||
})
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
devShells.x86_64-linux.default =
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||||
|
nhs = pkgs.writeShellScriptBin "nhs" ''
|
||||||
|
nh os switch --hostname framework --impure path:. "$@"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
pkgs.mkShell {
|
||||||
|
packages = [
|
||||||
|
pkgs.nh
|
||||||
|
nhs
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,14 +25,7 @@
|
||||||
options = [ "fmask=0077" "dmask=0077" ];
|
options = [ "fmask=0077" "dmask=0077" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Add swap file for hibernation support
|
swapDevices = [ ];
|
||||||
# This creates a 96GB swap file to match your RAM capacity
|
|
||||||
swapDevices = [
|
|
||||||
{
|
|
||||||
device = "/swapfile";
|
|
||||||
size = 98304; # 96GB in MB
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
|
|
||||||
171
home.nix
171
home.nix
|
|
@ -5,19 +5,10 @@
|
||||||
|
|
||||||
home.username = "jet";
|
home.username = "jet";
|
||||||
home.homeDirectory = "/home/jet";
|
home.homeDirectory = "/home/jet";
|
||||||
home.stateVersion = "23.05";
|
home.stateVersion = "25.05";
|
||||||
|
|
||||||
# Define configuration directory
|
|
||||||
# Note: we can't use config.home.homeDirectory in the let block if we're also defining it in the set
|
|
||||||
# recursively without strict evaluation issues sometimes, but here it should be fine if we just use the string.
|
|
||||||
# Safer to just use /home/jet or home.homeDirectory if it was passed in.
|
|
||||||
# Actually, `config.home.homeDirectory` is safe to use inside simple attribute sets.
|
|
||||||
# Let's use a let binding for clarity.
|
|
||||||
|
|
||||||
# Configure GNOME settings
|
# Configure GNOME settings
|
||||||
dconf.settings = let
|
dconf.settings = {
|
||||||
nixConfigDirectory = "${config.home.homeDirectory}/Documents/nix-config";
|
|
||||||
in {
|
|
||||||
"org/gnome/desktop/interface" = {
|
"org/gnome/desktop/interface" = {
|
||||||
clock-format = "12h";
|
clock-format = "12h";
|
||||||
clock-show-weekday = true;
|
clock-show-weekday = true;
|
||||||
|
|
@ -28,11 +19,6 @@
|
||||||
"org/gnome/system/location" = {
|
"org/gnome/system/location" = {
|
||||||
enabled = true;
|
enabled = true;
|
||||||
};
|
};
|
||||||
"org/gnome/desktop/background" = {
|
|
||||||
picture-uri = "file://${nixConfigDirectory}/cat.png";
|
|
||||||
picture-uri-dark = "file://${nixConfigDirectory}/cat.png";
|
|
||||||
picture-options = "wallpaper";
|
|
||||||
};
|
|
||||||
"org/gnome/settings-daemon/plugins/power" = {
|
"org/gnome/settings-daemon/plugins/power" = {
|
||||||
sleep-inactive-ac-type = "nothing";
|
sleep-inactive-ac-type = "nothing";
|
||||||
};
|
};
|
||||||
|
|
@ -74,31 +60,22 @@
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
# CLI Tools
|
# CLI Tools
|
||||||
bat
|
bat
|
||||||
eza
|
|
||||||
ripgrep
|
ripgrep
|
||||||
tree
|
tree
|
||||||
wget
|
|
||||||
unzip
|
unzip
|
||||||
zoxide
|
hyfetch
|
||||||
direnv
|
|
||||||
nh
|
|
||||||
google-chrome
|
|
||||||
# Development
|
# Development
|
||||||
git
|
|
||||||
gh
|
gh
|
||||||
jujutsu
|
tea
|
||||||
helix
|
|
||||||
mkp224o
|
mkp224o
|
||||||
claude-code
|
|
||||||
nixfmt
|
nixfmt
|
||||||
|
|
||||||
# Terminal
|
# Terminal
|
||||||
kitty
|
|
||||||
zellij
|
|
||||||
nerd-fonts.commit-mono
|
nerd-fonts.commit-mono
|
||||||
fastfetch
|
fastfetch
|
||||||
|
|
||||||
# Desktop / GUI
|
# Desktop / GUI
|
||||||
|
thunderbird
|
||||||
vlc
|
vlc
|
||||||
gimp3
|
gimp3
|
||||||
inkscape
|
inkscape
|
||||||
|
|
@ -108,12 +85,14 @@
|
||||||
element-desktop
|
element-desktop
|
||||||
zulip
|
zulip
|
||||||
logseq
|
logseq
|
||||||
steam
|
|
||||||
prismlauncher
|
prismlauncher
|
||||||
nemo-with-extensions
|
nemo-with-extensions
|
||||||
|
file-roller
|
||||||
font-manager
|
font-manager
|
||||||
antigravity-fhs
|
claude-code
|
||||||
appimage-run
|
kdePackages.kdenlive
|
||||||
|
vesktop
|
||||||
|
obs-studio
|
||||||
|
|
||||||
# GNOME Extensions
|
# GNOME Extensions
|
||||||
gnomeExtensions.hide-top-bar
|
gnomeExtensions.hide-top-bar
|
||||||
|
|
@ -121,9 +100,6 @@
|
||||||
gnomeExtensions.system-monitor-next
|
gnomeExtensions.system-monitor-next
|
||||||
gnomeExtensions.clipboard-indicator
|
gnomeExtensions.clipboard-indicator
|
||||||
gnomeExtensions.emoji-copy
|
gnomeExtensions.emoji-copy
|
||||||
|
|
||||||
# Virtualization/Containerization
|
|
||||||
docker
|
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -132,8 +108,6 @@
|
||||||
OCL_ICD_VENDORS = "/etc/OpenCL/vendors";
|
OCL_ICD_VENDORS = "/etc/OpenCL/vendors";
|
||||||
POCL_DEVICES = "cpu";
|
POCL_DEVICES = "cpu";
|
||||||
BROWSER = "zen";
|
BROWSER = "zen";
|
||||||
# Set FLAKE for nh
|
|
||||||
NH_FLAKE = "${config.home.homeDirectory}/Documents/nix-config";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.helix = {
|
programs.helix = {
|
||||||
|
|
@ -195,6 +169,10 @@
|
||||||
icons = "always";
|
icons = "always";
|
||||||
enableBashIntegration = true;
|
enableBashIntegration = true;
|
||||||
git = true;
|
git = true;
|
||||||
|
extraOptions = [
|
||||||
|
"--group-directories-first"
|
||||||
|
"--all"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.zoxide = {
|
programs.zoxide = {
|
||||||
|
|
@ -211,10 +189,12 @@
|
||||||
programs.bash = {
|
programs.bash = {
|
||||||
enable = true;
|
enable = true;
|
||||||
shellAliases = {
|
shellAliases = {
|
||||||
ll = "eza -l";
|
"dr" = "direnv reload";
|
||||||
la = "eza -la";
|
"da" = "direnv allow";
|
||||||
".." = "cd ..";
|
"nfu" = "nix flake update";
|
||||||
c = "cd && ls";
|
"c" = "claude";
|
||||||
|
"." = "z ..";
|
||||||
|
".." = "z ..";
|
||||||
j = "jj";
|
j = "jj";
|
||||||
jgf = "jj git fetch";
|
jgf = "jj git fetch";
|
||||||
jgp = "jj git push";
|
jgp = "jj git push";
|
||||||
|
|
@ -222,16 +202,28 @@
|
||||||
jbs = "jj bookmark set";
|
jbs = "jj bookmark set";
|
||||||
jd = "jj describe";
|
jd = "jj describe";
|
||||||
js = "jj show";
|
js = "jj show";
|
||||||
|
jss = "jj show -s";
|
||||||
|
jab = "jj abandon";
|
||||||
|
jsp = "jj split";
|
||||||
je = "jj edit --ignore-immutable";
|
je = "jj edit --ignore-immutable";
|
||||||
jall = "jj log -r 'all()'";
|
jall = "jj log -r 'all()'";
|
||||||
jn = "jj new";
|
jn = "jj new";
|
||||||
jdiff = "jj diff";
|
jdiff = "jj diff";
|
||||||
jsq = "jj squash";
|
jsq = "jj squash";
|
||||||
nhs = "nh os switch";
|
|
||||||
nd = "nix develop";
|
|
||||||
h = "hx";
|
h = "hx";
|
||||||
vanity = "mkp224o-amd64-64-24k -d noisebridgevanitytor noisebridge{2..7}";
|
vanity = "mkp224o-amd64-64-24k -d noisebridgevanitytor noisebridge{2..7}";
|
||||||
};
|
};
|
||||||
|
initExtra = ''
|
||||||
|
# Automatically list directory contents when changing directories
|
||||||
|
auto_l_on_cd() {
|
||||||
|
if [ "$__LAST_PWD" != "$PWD" ]; then
|
||||||
|
l
|
||||||
|
__LAST_PWD="$PWD"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
export PROMPT_COMMAND="auto_l_on_cd; $PROMPT_COMMAND"
|
||||||
|
__LAST_PWD="$PWD"
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.kitty = {
|
programs.kitty = {
|
||||||
|
|
@ -282,12 +274,70 @@
|
||||||
# Configure Zen Browser with about:config settings
|
# Configure Zen Browser with about:config settings
|
||||||
programs.zen-browser = {
|
programs.zen-browser = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
suppressXdgMigrationWarning = true;
|
||||||
policies = {
|
policies = {
|
||||||
|
DisableTelemetry = true;
|
||||||
|
DisableFirefoxStudies = true;
|
||||||
|
DisablePocket = true;
|
||||||
|
DontCheckDefaultBrowser = true;
|
||||||
|
DisableAppUpdate = true;
|
||||||
|
DisableMasterPasswordCreation = true;
|
||||||
|
DisablePasswordReveal = true;
|
||||||
|
DisableProfileImport = true;
|
||||||
|
ExtensionUpdate = false;
|
||||||
|
OfferToSaveLogins = false;
|
||||||
|
DisableFirefoxAccounts = true;
|
||||||
|
DisableFormHistory = true;
|
||||||
|
DisableSafeMode = true;
|
||||||
|
DisableSetDesktopBackground = true;
|
||||||
|
EnableTrackingProtection = {
|
||||||
|
Value = true;
|
||||||
|
Locked = true;
|
||||||
|
Cryptomining = true;
|
||||||
|
Fingerprinting = true;
|
||||||
|
};
|
||||||
|
HardwareAcceleration = true;
|
||||||
|
NoDefaultBookmarks = true;
|
||||||
|
PasswordManagerEnabled = false;
|
||||||
Preferences = {
|
Preferences = {
|
||||||
"zen.theme.border-radius" = 0;
|
"zen.theme.border-radius" = 0;
|
||||||
"zen.theme.content-element-separation" = 0;
|
"zen.theme.content-element-separation" = 0;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
profiles.default = {
|
||||||
|
isDefault = true;
|
||||||
|
settings = {
|
||||||
|
"identity.fxaccounts.enabled" = false;
|
||||||
|
};
|
||||||
|
extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [
|
||||||
|
ublock-origin
|
||||||
|
onepassword-password-manager
|
||||||
|
sponsorblock
|
||||||
|
darkreader
|
||||||
|
vimium
|
||||||
|
return-youtube-dislikes
|
||||||
|
react-devtools
|
||||||
|
firefox-color
|
||||||
|
pay-by-privacy
|
||||||
|
translate-web-pages
|
||||||
|
user-agent-string-switcher
|
||||||
|
copy-selected-tabs-to-clipboard
|
||||||
|
dearrow
|
||||||
|
violentmonkey
|
||||||
|
tst-indent-line
|
||||||
|
];
|
||||||
|
search = {
|
||||||
|
default = "SearXNG";
|
||||||
|
privateDefault = "SearXNG";
|
||||||
|
force = true;
|
||||||
|
engines = {
|
||||||
|
"SearXNG" = {
|
||||||
|
urls = [{ template = "https://search.extremist.software/search?q={searchTerms}"; }];
|
||||||
|
definedAliases = [ "@s" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Override the Kitty desktop entry to always launch in fullscreen
|
# Override the Kitty desktop entry to always launch in fullscreen
|
||||||
|
|
@ -301,6 +351,28 @@
|
||||||
comment = "Fast, featureful, GPU based terminal emulator";
|
comment = "Fast, featureful, GPU based terminal emulator";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Extract archives on double-click
|
||||||
|
xdg.desktopEntries.extract-here = {
|
||||||
|
name = "Extract Here";
|
||||||
|
exec = "file-roller --extract-here %U";
|
||||||
|
icon = "file-roller";
|
||||||
|
type = "Application";
|
||||||
|
categories = ["Utility"];
|
||||||
|
mimeType = [
|
||||||
|
"application/zip"
|
||||||
|
"application/x-tar"
|
||||||
|
"application/x-compressed-tar"
|
||||||
|
"application/x-bzip-compressed-tar"
|
||||||
|
"application/x-xz-compressed-tar"
|
||||||
|
"application/x-zstd-compressed-tar"
|
||||||
|
"application/gzip"
|
||||||
|
"application/x-7z-compressed"
|
||||||
|
"application/x-rar"
|
||||||
|
"application/x-rar-compressed"
|
||||||
|
];
|
||||||
|
noDisplay = true;
|
||||||
|
};
|
||||||
|
|
||||||
# Autostart applications using proper desktop files
|
# Autostart applications using proper desktop files
|
||||||
xdg.autostart = {
|
xdg.autostart = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -320,9 +392,24 @@
|
||||||
"x-scheme-handler/about" = "zen.desktop";
|
"x-scheme-handler/about" = "zen.desktop";
|
||||||
"x-scheme-handler/unknown" = "zen.desktop";
|
"x-scheme-handler/unknown" = "zen.desktop";
|
||||||
"inode/directory" = "nemo.desktop";
|
"inode/directory" = "nemo.desktop";
|
||||||
|
"application/zip" = "extract-here.desktop";
|
||||||
|
"application/x-tar" = "extract-here.desktop";
|
||||||
|
"application/x-compressed-tar" = "extract-here.desktop";
|
||||||
|
"application/x-bzip-compressed-tar" = "extract-here.desktop";
|
||||||
|
"application/x-xz-compressed-tar" = "extract-here.desktop";
|
||||||
|
"application/x-zstd-compressed-tar" = "extract-here.desktop";
|
||||||
|
"application/gzip" = "extract-here.desktop";
|
||||||
|
"application/x-7z-compressed" = "extract-here.desktop";
|
||||||
|
"application/x-rar" = "extract-here.desktop";
|
||||||
|
"application/x-rar-compressed" = "extract-here.desktop";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
gtk3.extraConfig.gtk-application-prefer-dark-theme = 1;
|
||||||
|
};
|
||||||
|
|
||||||
# Enable rootless Podman with Home Manager
|
# Enable rootless Podman with Home Manager
|
||||||
services.podman = {
|
services.podman = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue