Compare commits

...

38 commits

Author SHA1 Message Date
Jet Pham
e826d26833
feat: make direnv reload and allow aliases dr and da 2026-03-05 13:38:55 -08:00
Jet Pham
acecc56229
fix: a ton of different changes
home.nix:
  - Bumped home.stateVersion from "23.05" to "25.05"
  - Removed the nixConfigDirectory let binding and verbose comments,
  simplified to dconf.settings = {
  - Removed org/gnome/desktop/background block (cat.png wallpaper)
  - Removed antigravity-fhs from packages
  - Removed duplicate zulip entry

  configuration.nix:
  - Removed "usbcore.autosuspend=-1" from boot.kernelParams
  - Added targeted udev rules for Framework fingerprint reader (27a6) and
  USB-C hub (32ac) autosuspend
  - Added services.fstrim.enable = true for NVMe/SSD health
  - Added nix.optimise.automatic = true for periodic store deduplication
  - Removed duplicate comment and entire cat.png activation script

  hardware-configuration.nix:
  - Replaced 96GB swapfile config with swapDevices = [ ]

  flake.nix:
  - Removed the antigravity overlay (override + fhs binding)
2026-03-04 16:55:35 -08:00
Jet Pham
044cc7da4a
fix have nemo be the only file explorer 2026-03-04 16:18:03 -08:00
Jet Pham
00aa80ddc0
update: nix flake update 2026-03-03 17:28:03 -08:00
Jet Pham
19b9521728
feat: use claude code alias 2026-03-03 17:27:38 -08:00
Jet Pham
7089a2c05a
feat: add alias for nix flake update nfu 2026-03-03 17:27:38 -08:00
Jet Pham
3314dbaa9c
fix: remove chrome 2026-03-02 22:19:38 -08:00
Jet Pham
4f4ca38679
update: update nix flake 2026-03-02 22:09:18 -08:00
Jet Pham
f15ffa7e61
feat: add google chrome :( 2026-03-02 19:13:20 -08:00
Jet Pham
5768b554e3
feat: add a alias "c" for claude 2026-03-02 19:12:36 -08:00
Jet Pham
fb7f3b5d15
feat: add obs and virtual camera support 2026-03-02 19:12:20 -08:00
Jet Pham
ce8b7972b5
feat: set gtk3 to use dark mode by default 2026-03-02 18:43:22 -08:00
Jet Pham
5811f32beb
feat: add claude code! 2026-03-02 18:26:26 -08:00
Jet Pham
4069287840
feat: replace davinci resolve with kdenlive 2026-03-02 16:39:01 -08:00
Jet Pham
0561ba4c38
feat: add vencord client 2026-03-01 12:13:24 -08:00
Jet Pham
8da3f2a675
feat: add zulip client 2026-03-01 11:45:22 -08:00
Jet Pham
d68735aade
feat: add hyfetch to be gay and do crime 2026-02-28 19:01:03 -08:00
Jet Pham
9edc8b0038
feat: update hardware firmware to use amd 2026-02-28 16:31:43 -08:00
Jet Pham
50c1504d47
feat: make nhs a direnv script 2026-02-28 16:31:10 -08:00
Jet Pham
66ffe8350c
feat: add davinci resolve 2026-02-28 15:30:39 -08:00
Jet Pham
114199ec06
feat: add . as an alias for .. 2026-02-28 14:27:51 -08:00
Jet Pham
632089c4c5
feat: configure z to l 2026-02-28 14:26:28 -08:00
Jet Pham
58f40838e0
feat: remove butt because I'm not ready yet 2026-02-28 14:09:53 -08:00
Jet Pham
62461fe8d7
update: flake update 2026-02-28 13:55:42 -08:00
Jet Pham
4bba217fd0
fix: remove listed packages that are already enabled 2026-02-28 13:55:19 -08:00
Jet Pham
cbaa366f3d
feat: add butt for beyla.noise interfacing 2026-02-28 13:48:35 -08:00
Jet Pham
b07f9ab600
feat: configure zen browsers extensions and policies 2026-02-28 13:29:23 -08:00
Jet Pham
2202cd39cd
feat: add searxng from extremist.software to zen 2026-02-28 13:14:41 -08:00
Jet Pham
da687af88c
update: update nix flake 2026-02-27 16:07:56 -08:00
Jet Pham
e9cee62aea
feat: add tea for forgejo development in cli 2026-02-27 16:07:24 -08:00
Jet Pham
49ee6c3ac4
feat: configure comma with nix index 2026-02-26 19:13:13 -08:00
Jet Pham
3becde9260
feat: Add jab and jsp aliases for jj 2026-02-26 19:07:38 -08:00
Jet Pham
f6d9a52ce7
fix: remove adding nh in home dir 2026-02-26 19:07:30 -08:00
Jet Pham
b4cbac22b4
feat: add comma for running pakcages 2026-02-26 19:06:52 -08:00
Jet Pham
44a1a1f792
feat: remove claude code 2026-02-26 16:29:00 -08:00
Jet Pham
3ad19c8796
update: flake.lock 2026-02-26 16:27:41 -08:00
Jet Pham
621665f446
feat: add jss alias for jj show -s 2026-02-26 16:23:28 -08:00
Jet Pham
5abb509c70
feat: add thunderbird 2026-02-22 16:38:04 -08:00
6 changed files with 287 additions and 99 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
use flake

View file

@ -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
View file

@ -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": {

View file

@ -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
];
};
}; };
} }

View file

@ -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
View file

@ -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;