Alright this ain't finished cause of the home stuff but I don't wanna lose what I've done. Impermanence, disko, lots of changes. TODO: add modularity to home.

This commit is contained in:
Jimbo 2024-11-02 17:19:40 -04:00
parent 7a3f60038b
commit 15ab10152b
109 changed files with 766 additions and 749 deletions

View file

@ -32,7 +32,7 @@ For my use, unlocking secrets can be done with this command:
Without the help of heavy inspiration, I would not have been able to learn and get up and running nearly as quickly. My most heavily borrowed configs are as follows:
[CloudyChris' nix-starter-configs fork](https://github.com/CloudyChris/NixOsConfig), the very initial base of my conversion to flakes.
[WillPower3309's personal flake](https://github.com/WillPower3309/nixos-config) for being a pleasure in the SwayFX Discord and having a really nice flake.nix file I borrowed from.
[Jules Sommer's minimal flake](https://github.com/WillPower3309/nixos-config) for giving me a good basis for writing individual files and repeatedly helping me throughout the entire process.
[Jules Sommer's minimal flake](https://github.com/jules-sommer/nix_config_minimal) for giving me a good basis for writing individual files and repeatedly helping me throughout the entire process.
Made with love ❤️

View file

@ -38,16 +38,14 @@
"flake-schemas": "flake-schemas",
"home-manager": "home-manager",
"jovian": "jovian",
"nixpkgs": [
"unstable"
]
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1729599319,
"narHash": "sha256-e/4JPcIRte5zkwqmGFrFo3763e0iHURX6N0apz4jbI0=",
"lastModified": 1730390431,
"narHash": "sha256-M+rMhDB69Y35IlhmAMN4ErDige+wKPwhb6HDqpF14Rw=",
"owner": "chaotic-cx",
"repo": "nyx",
"rev": "1b86b304c8eb1437d9337a760e7f930826fc4d6d",
"rev": "40388a7427ee32af175c5169ae7587ffd2dec125",
"type": "github"
},
"original": {
@ -78,6 +76,26 @@
"type": "github"
}
},
"disko": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1730190761,
"narHash": "sha256-o5m5WzvY6cGIDupuOvjgNSS8AN6yP2iI9MtUC6q/uos=",
"owner": "nix-community",
"repo": "disko",
"rev": "3979285062d6781525cded0f6c4ff92e71376b55",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "disko",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
@ -221,11 +239,11 @@
},
"hardware": {
"locked": {
"lastModified": 1729742320,
"narHash": "sha256-u3Of8xRkN//me8PU+RucKA59/6RNy4B2jcGAF36P4jI=",
"lastModified": 1730368399,
"narHash": "sha256-F8vJtG389i9fp3k2/UDYHMed3PLCJYfxCqwiVP7b9ig=",
"owner": "nixos",
"repo": "nixos-hardware",
"rev": "e8a2f6d5513fe7b7d15701b2d05404ffdc3b6dda",
"rev": "da14839ac5f38ee6adbdb4e6db09b5eef6d6ccdc",
"type": "github"
},
"original": {
@ -243,11 +261,11 @@
]
},
"locked": {
"lastModified": 1729414726,
"narHash": "sha256-Dtmm1OU8Ymiy9hVWn/a2B8DhRYo9Eoyx9veERdOBR4o=",
"lastModified": 1730016908,
"narHash": "sha256-bFCxJco7d8IgmjfNExNz9knP8wvwbXU4s/d53KOK6U0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "fe56302339bb28e3471632379d733547caec8103",
"rev": "e83414058edd339148dc142a8437edb9450574c8",
"type": "github"
},
"original": {
@ -277,6 +295,21 @@
"type": "github"
}
},
"impermanence": {
"locked": {
"lastModified": 1730403150,
"narHash": "sha256-W1FH5aJ/GpRCOA7DXT/sJHFpa5r8sq2qAUncWwRZ3Gg=",
"owner": "nix-community",
"repo": "impermanence",
"rev": "0d09341beeaa2367bac5d718df1404bf2ce45e6f",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "impermanence",
"type": "github"
}
},
"jovian": {
"inputs": {
"nix-github-actions": "nix-github-actions",
@ -286,11 +319,11 @@
]
},
"locked": {
"lastModified": 1729177642,
"narHash": "sha256-DdKal+ZhB9QD/tnEwFg4cZ4j4YnrkvSljBxnyG+3eE0=",
"lastModified": 1730248099,
"narHash": "sha256-Fl7BSdpLk0uTXF6ol/MR0q1EB4XQ8tn0ftig0pyYh5Y=",
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"rev": "bb69165ff372ddbd3228a03513922acd783040e8",
"rev": "c11bab124fc55a37cbd854ed28ea121ed609231f",
"type": "github"
},
"original": {
@ -330,7 +363,7 @@
"inputs": {
"blobs": "blobs",
"flake-compat": "flake-compat_2",
"nixpkgs": "nixpkgs_2",
"nixpkgs": "nixpkgs_3",
"nixpkgs-24_05": "nixpkgs-24_05",
"utils": "utils"
},
@ -353,14 +386,14 @@
"inputs": {
"flake-compat": "flake-compat_3",
"flake-utils": "flake-utils_2",
"nixpkgs": "nixpkgs_3"
"nixpkgs": "nixpkgs_4"
},
"locked": {
"lastModified": 1729993975,
"narHash": "sha256-Z5DQ48PdCo3IyfKbngL62Q/HuA/fsn22bMyPbTQGSKQ=",
"lastModified": 1730426071,
"narHash": "sha256-2BkSiHqyWikpz9HSgTBk5kikaQ5m0Rs60C9KA2kf53o=",
"owner": "Infinidoge",
"repo": "nix-minecraft",
"rev": "4753ea1f1285e944839cb2ab0b4373eb4e00c12a",
"rev": "4b371c3d119493051d081ff5b6cff689a97ad1a1",
"type": "github"
},
"original": {
@ -378,11 +411,11 @@
]
},
"locked": {
"lastModified": 1690328911,
"narHash": "sha256-fxtExYk+aGf2YbjeWQ8JY9/n9dwuEt+ma1eUFzF8Jeo=",
"lastModified": 1729697500,
"narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=",
"owner": "zhaofengli",
"repo": "nix-github-actions",
"rev": "96df4a39c52f53cb7098b923224d8ce941b64747",
"rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf",
"type": "github"
},
"original": {
@ -438,6 +471,22 @@
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1730200266,
"narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1717602782,
"narHash": "sha256-pL9jeus5QpX5R+9rsp3hhZ+uplVHscNJh8n8VpqscM0=",
@ -452,7 +501,7 @@
"type": "indirect"
}
},
"nixpkgs_3": {
"nixpkgs_4": {
"locked": {
"lastModified": 1715266358,
"narHash": "sha256-doPgfj+7FFe9rfzWo1siAV2mVCasW+Bh8I1cToAXEE4=",
@ -468,13 +517,13 @@
"type": "github"
}
},
"nixpkgs_4": {
"nixpkgs_5": {
"locked": {
"lastModified": 1729973466,
"narHash": "sha256-knnVBGfTCZlQgxY1SgH0vn2OyehH9ykfF8geZgS95bk=",
"lastModified": 1730137625,
"narHash": "sha256-9z8oOgFZiaguj+bbi3k4QhAD6JabWrnv7fscC/mt0KE=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "cd3e8833d70618c4eea8df06f95b364b016d4950",
"rev": "64b80bfb316b57cdb8919a9110ef63393d74382a",
"type": "github"
},
"original": {
@ -485,11 +534,11 @@
},
"nur": {
"locked": {
"lastModified": 1730060949,
"narHash": "sha256-SNygd+Ud73nYjGylHbMVEZF5jhE9hyVkBHVrqna/05o=",
"lastModified": 1730434297,
"narHash": "sha256-7wEy/XwjqAdzsIZJ2AFJaVeshX6yT9vhRsFjvQe0U1E=",
"owner": "nix-community",
"repo": "NUR",
"rev": "957b94ad2381e6bafdb21c092162549af42f185c",
"rev": "5ef5f243936bc6387b55fc8cb08c88e7cf68092a",
"type": "github"
},
"original": {
@ -529,12 +578,14 @@
"inputs": {
"blender-bin": "blender-bin",
"chaotic": "chaotic",
"disko": "disko",
"hardware": "hardware",
"home-manager": "home-manager_2",
"impermanence": "impermanence",
"lanzaboote": "lanzaboote",
"mailserver": "mailserver",
"minecraft": "minecraft",
"nixpkgs": "nixpkgs_4",
"nixpkgs": "nixpkgs_5",
"nur": "nur",
"unstable": "unstable"
}
@ -611,11 +662,11 @@
},
"unstable": {
"locked": {
"lastModified": 1729880355,
"narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=",
"lastModified": 1730200266,
"narHash": "sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "18536bf04cd71abd345f9579158841376fdd0c5a",
"rev": "807e9154dcb16384b1b765ebe9cd2bba2ac287fd",
"type": "github"
},
"original": {

View file

@ -1,20 +1,8 @@
{
inputs = {
# System inputs
nixpkgs.url = "nixpkgs/nixos-24.05";
unstable.url = "nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs";
};
nur.url = "github:nix-community/NUR";
chaotic = {
url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
inputs.nixpkgs.follows = "unstable";
};
blender-bin.url = "https://flakehub.com/f/edolstra/blender-bin/1.0.9.tar.gz";
hardware.url = "github:nixos/nixos-hardware/master";
lanzaboote = {
@ -22,21 +10,39 @@
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
impermanence.url = "github:nix-community/impermanence";
chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.05";
minecraft.url = "github:Infinidoge/nix-minecraft";
# Home inputs
home-manager = {
url = "github:nix-community/home-manager/release-24.05";
inputs.nixpkgs.follows = "nixpkgs";
};
nur.url = "github:nix-community/NUR";
blender-bin.url = "https://flakehub.com/f/edolstra/blender-bin/1.0.9.tar.gz";
};
outputs = {
nixpkgs,
unstable,
home-manager,
nur,
chaotic,
blender-bin,
hardware,
lanzaboote,
disko,
impermanence,
chaotic,
mailserver,
minecraft,
home-manager,
nur,
blender-bin,
...
}:
let
@ -45,11 +51,16 @@
specialArgs = {
inherit
unstable
chaotic
hardware
lanzaboote
disko
impermanence
chaotic
mailserver
minecraft
home-manager
nur
blender-bin
;
};
};
@ -66,7 +77,7 @@
in {
# nixos-rebuild switch --flake .#hostname
nixosConfigurations = {
firefly = mkNix [ ./hosts/firefly/system ]; # Main Desktop
firefly = mkNix [ ./hosts/firefly ]; # Main Desktop
detritus = mkNix [ ./hosts/detritus/system ]; # Acer Desktop
shuttle = mkNix [ ./hosts/shuttleworth/system ]; # Pinebook Pro
@ -78,18 +89,7 @@
bomberman = mkNix [ ./hosts/bomberman/system ]; # Oracle ARM
};
# home-manager switch --flake .#username@hostname
homeConfigurations = {
"jimbo@firefly" = mkHome [ ./hosts/firefly/home ] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@detritus" = mkHome [ ./hosts/detritus/home ] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@shuttle" = mkHome [ ./hosts/shuttleworth/home ] nixpkgs.legacyPackages.aarch64-linux;
"jimbo@lacros" = mkHome [ ./hosts/lacros/home ] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@redmond" = mkHome [ ./hosts/redmond/home ] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@treefruit" = mkHome [ ./hosts/treefruit/home ] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@cyberspark" = mkHome [ ./hosts/cyberspark/home ] nixpkgs.legacyPackages.x86_64-linux;
"jimbo@bomberman" = mkHome [ ./hosts/bomberman/home ] nixpkgs.legacyPackages.aarch64-linux;
};
# home-manager switch --flake .#username
homeConfigurations."jimbo" = mkHome [ ./modules/home ] nixpkgs.legacyPackages.x86_64-linux;
};
}

View file

@ -1,8 +1,6 @@
{ ... }:
{
imports = [
# Programs and apps
../../../modules/home
../../../modules/home/users
../../../modules/home/programs/misc/headless
../../../modules/home/programs/terminal/fastfetch
@ -10,10 +8,7 @@
../../../modules/home/programs/terminal/neovim
../../../modules/home/programs/terminal/ranger
../../../modules/home/programs/terminal/tmux
../../../modules/home/utils/zsh
# Misc
../../../modules/home/programs/terminal/zsh
../../../variables/domains
../../../variables/look/colors/purple
];
}

View file

@ -31,7 +31,7 @@
fsType = "btrfs";
options = [ "subvol=@var" ];
};
"/.snapshots" = {
"/snapshots" = {
device = "/dev/disk/by-uuid/e50e186d-e5bc-40b0-9cd7-43b609cde3ea";
fsType = "btrfs";
options = [ "subvol=@snapshots" ];

View file

@ -1,19 +1,15 @@
{ ... }:
{
imports = [
# Programs and apps
../../../modules/home
../../../modules/home/users
../../../modules/home/settings/nix
../../../modules/home/programs/misc/headless
../../../modules/home/programs/terminal/fastfetch
../../../modules/home/programs/terminal/git
../../../modules/home/programs/terminal/neovim
../../../modules/home/programs/terminal/ranger
../../../modules/home/programs/terminal/tmux
../../../modules/home/utils/zsh
# Misc
../../../modules/home/programs/terminal/zsh
../../../variables/domains
../../../variables/look/colors/purple
];
}

View file

@ -27,97 +27,71 @@
# Main root
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287";
device = "/dev/server/root";
fsType = "btrfs";
options = [ "subvol=@" ];
};
"/home" = {
device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287";
device = "/dev/server/root";
fsType = "btrfs";
options = [ "subvol=@home" ];
};
"/nix" = {
device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287";
device = "/dev/server/root";
fsType = "btrfs";
options = [ "subvol=@nix" ];
};
"/var" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
device = "/dev/server/root";
fsType = "btrfs";
options = [ "subvol=@var" ];
};
"/srv/minecraft" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
device = "/dev/server/root";
fsType = "btrfs";
options = [ "subvol=@minecraft" "compress=zstd" ];
};
"/.snapshots" = {
device = "/dev/disk/by-uuid/b8b7ed47-c98c-4a49-af01-b2832dde1287";
fsType = "btrfs";
options = [ "subvol=@snapshots" ];
};
"/boot" = {
device = "/dev/disk/by-uuid/CD94-1D3F";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
# Atrocity of subvols
# Files
"/export/JimboNFS/Downloads" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
device = "/dev/server/root";
fsType = "btrfs";
options = [ "subvol=@downloads" "compress=zstd" ];
};
"/export/JimboNFS/Documents" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
device = "/dev/server/root";
fsType = "btrfs";
options = [ "subvol=@docs" "compress=zstd" ];
};
# Media
"/export/JimboNFS/Photos" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
device = "/dev/server/root";
fsType = "btrfs";
options = [ "subvol=@photos" "compress=zstd" ];
};
"/export/JimboNFS/Videos/Random" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
"/export/JimboNFS/Videos" = {
device = "/dev/server/root";
fsType = "btrfs";
options = [ "subvol=@videos-random" "compress=zstd" ];
options = [ "subvol=@videos" "compress=zstd" ];
};
"/export/JimboNFS/Videos/Media" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
# Music
"/export/JimboNFS/Music" = {
device = "/dev/server/root";
fsType = "btrfs";
options = [ "subvol=@videos-media" "compress=zstd" ];
};
"/export/JimboNFS/Music/Synced" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@music-synced" "compress=zstd" ];
};
"/export/JimboNFS/Music/Unsynced" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@music-unsynced" "compress=zstd" ];
};
"/export/JimboNFS/Projects" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@projects" "compress=zstd" ];
};
"/export/JimboNFS/School" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@school" "compress=zstd" ];
};
"/export/JimboNFS/.snapshots" = {
device = "/dev/disk/by-uuid/acf95700-8669-45c7-9a72-bf3215b3c325";
fsType = "btrfs";
options = [ "subvol=@snapshots" "compress=zstd" ];
options = [ "subvol=@music" "compress=zstd" ];
};
};
swapDevices = [
{ device = "/dev/disk/by-uuid/57178cfc-3e71-4d35-8c7f-e355f9dc84df"; }
{ device = "/dev/server/root/swap"; }
];
networking.useDHCP = lib.mkDefault true;

View file

@ -1,23 +1,7 @@
{ config, nur, ... }:
{ ... }:
{
imports = [
# Apps and programs
../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/gaming/launchers
../../../modules/home/programs/misc/remote-desktop
../../../modules/home/sway
../../../modules/home/utils
# Misc
../../../overlays
../../../variables
../../../variables/look/colors/green
# Imports
nur.nixosModules.nur
];
}

View file

@ -19,17 +19,12 @@
fsType = "btrfs";
options = [ "subvol=@home" ];
};
"/var" = {
device = "/dev/disk/by-uuid/dc6e2cd9-040b-4104-8138-5dfa9cb5558c";
fsType = "btrfs";
options = [ "subvol=@var" ];
};
"/nix" = {
device = "/dev/disk/by-uuid/dc6e2cd9-040b-4104-8138-5dfa9cb5558c";
fsType = "btrfs";
options = [ "subvol=@nix" ];
};
"/.snapshots" = {
"/snapshots" = {
device = "/dev/disk/by-uuid/dc6e2cd9-040b-4104-8138-5dfa9cb5558c";
fsType = "btrfs";
options = [ "subvol=@snapshots" ];

View file

@ -0,0 +1,68 @@
{ pkgs, lib, ... }:
let
commonKernelParams = [
# Nvidia settings
"nvidia_drm.fbdev=1"
"nouveau.config=NvGspRm=1"
# VM/GPU passthrough
"amd_iommu=on"
"iommu=pt"
"nested=1"
# Virtualization nonsense
"transparent_hugepage=never"
# Isolate devices into IOMMU groups
"pcie_acs_override=downstream,multifunction"
"pci=routeirq"
];
in {
boot = {
# HAS to be unstable to get the newest NVIDIA drivers
kernelPackages = pkgs.unstable.linuxPackages_latest;
blacklistedKernelModules = [ "pcspkr" ];
kernel.sysctl."vm.max_map_count" = 2147483642;
kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ];
initrd = {
systemd = {
enable = true;
services.root-reset = {
description = "Reset BTRFS root and snapshot last boot";
wantedBy = [ "initrd.target" ];
after = [ "dev-nixos-root.device" ];
before = [ "sysroot.mount" ];
unitConfig.DefaultDependencies = "no";
serviceConfig.Type = "oneshot";
script = ''
mkdir -p /mnt
mount /dev/nixos/root /mnt
if [[ -e /mnt/@prev ]]; then
btrfs subvolume delete /mnt/@prev
fi
btrfs subvolume snapshot /mnt/@ /mnt/@prev
btrfs subvolume list -o /mnt/@ | cut -f9 -d' ' | while read subvolume; do
btrfs subvolume delete "/mnt/$subvolume"
done
btrfs subvolume delete /mnt/@
btrfs subvolume create /mnt/@
umount /mnt
'';
};
};
};
};
# Additional entry to boot from the second GPU
specialisation = {
gputwo.configuration = {
boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ];
};
};
}

37
hosts/firefly/default.nix Normal file
View file

@ -0,0 +1,37 @@
{ chaotic, pkgs, ... }:
{
imports = [
./boot
./disko
./hardware
# Apps and programs
../../modules/system
../../modules/system/accounts
../../modules/system/desktop
../../modules/system/programs
../../modules/system/services
../../modules/system/services/pc/sunshine
../../modules/system/services/pc/virtualization/qemu
# Devices and hardware
../../modules/system/devices
../../modules/system/devices/boot/lanzaboote
../../modules/system/devices/video/nvidia
../../modules/system/devices/networking/firewall/pc
# Misc
../../overlays
../../variables
# Imports
chaotic.homeManagerModules.default
];
programs.sway.package = pkgs.sway_git;
networking.hostName = "firefly";
# Force Electron to use Wayland
environment.sessionVariables.NIXOS_OZONE_WL = "1";
}

View file

@ -0,0 +1,95 @@
{ disko, ... }:
{
imports = [
disko.nixosModules.disko
];
disko.devices = {
disk = {
main = {
type = "disk";
device = "/dev/nvme0n1";
content = {
type = "gpt";
partitions = {
ESP = {
size = "2G";
type = "EF00";
content = {
type = "filesystem";
format = "vfat";
mountpoint = "/boot";
mountOptions = [ "fmask=0022" "dmask=0022" ];
};
};
luks = {
size = "100%";
content = {
type = "luks";
name = "crypt-nvme";
settings.allowDiscards = true;
#passwordFile = "/tmp/secret.key";
content = {
type = "lvm_pv";
vg = "nixos";
};
};
};
};
};
};
};
lvm_vg = {
nixos = {
type = "lvm_vg";
lvs = {
root = {
size = "100%";
content = {
type = "btrfs";
extraArgs = [ "-f" ];
subvolumes = {
"/@" = {
mountpoint = "/";
mountOptions = [ "compress=zstd" "noatime" ];
};
"/@prev" = {
mountpoint = "/prev";
mountOptions = [ "compress=zstd" "noatime" ];
};
"/@nix" = {
mountpoint = "/nix";
mountOptions = [ "compress=zstd" "noatime" ];
};
# Impermanence
"/@root" = {
mountpoint = "/persist";
mountOptions = [ "compress=zstd" "noatime" ];
};
"/@jimbo" = {
mountpoint = "/persist/home/jimbo";
mountOptions = [ "compress=zstd" "noatime" ];
};
};
};
};
swap = {
size = "8G";
content = {
type = "swap";
discardPolicy = "both";
};
};
};
};
};
};
# Needed for impermanence
fileSystems = {
"/persist".neededForBoot = true;
"/persist/home/jimbo".neededForBoot = true;
};
}

View file

@ -21,45 +21,20 @@
};
fileSystems = {
"/" = {
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b";
fsType = "btrfs";
options = [ "subvol=@" "noatime" "nodiratime" "discard" ];
# Useful system mounts
"/etc/libvirt" = {
device = "/dev/disk/by-uuid/f18a0302-9914-471d-828c-85ab1a67a8be";
options = [ "nosuid" "nodev" "nofail" ];
};
"/home" = {
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b";
fsType = "btrfs";
options = [ "subvol=@home" "noatime" "nodiratime" "discard" ];
"/etc/libvirt/VMs/Bulk" = {
depends = [ "/etc/libvirt" ];
device = "/dev/disk/by-uuid/3eb36c3e-81ac-4281-89f0-c89242d88dd6";
options = [ "nosuid" "nodev" "nofail" ];
};
"/nix" = {
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b";
fsType = "btrfs";
options = [ "subvol=@nix" "noatime" "nodiratime" "discard" ];
};
"/etc/nixos" = {
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b";
fsType = "btrfs";
options = [ "subvol=@nixconf" "noatime" "nodiratime" "discard" ];
};
"/etc/secureboot" = {
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b";
fsType = "btrfs";
options = [ "subvol=@secureboot" "noatime" "nodiratime" "discard" ];
};
"/var" = {
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b";
fsType = "btrfs";
options = [ "subvol=@var" "noatime" "nodiratime" "discard" ];
};
"/.snapshots" = {
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b";
fsType = "btrfs";
options = [ "subvol=@snapshots" "noatime" "nodiratime" "discard" ];
};
"/boot" = {
device = "/dev/disk/by-uuid/3B4A-76C9";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
"/var/lib/libvirt" = {
depends = [ "/etc/libvirt" ];
device = "/etc/libvirt/varlibvirt";
options = [ "bind" "rw" ];
};
# Games and such
@ -80,22 +55,6 @@
options = [ "nosuid" "nodev" "noauto" ];
};
# Miscellaneous mounts
"/etc/libvirt" = {
device = "/dev/disk/by-uuid/f18a0302-9914-471d-828c-85ab1a67a8be";
options = [ "nosuid" "nodev" "nofail" ];
};
"/etc/libvirt/VMs/Bulk" = {
depends = [ "/etc/libvirt" ];
device = "/dev/disk/by-uuid/3eb36c3e-81ac-4281-89f0-c89242d88dd6";
options = [ "nosuid" "nodev" "nofail" ];
};
"/var/lib/libvirt" = {
depends = [ "/etc/libvirt" ];
device = "/etc/libvirt/varlibvirt";
options = [ "bind" "rw" ];
};
# Network mounts
"/home/jimbo/JimboNFS" = {
device = "${config.ips.server}:/export/JimboNFS";
@ -105,7 +64,7 @@
};
swapDevices = [
{ device = "/dev/disk/by-uuid/1a6a68d0-8ae7-4836-a585-b708597937a1"; }
{ device = "/dev/nixos/swap"; }
];
networking.useDHCP = lib.mkDefault true;

View file

@ -1,27 +0,0 @@
{ nur, config, ... }:
{
imports = [
# Apps and programs
../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/production
../../../modules/home/programs/misc/gaming/launchers
../../../modules/home/programs/misc/gaming/xash3d
../../../modules/home/programs/misc/school
../../../modules/home/sway
../../../modules/home/utils
# Misc
../../../overlays
../../../variables
../../../variables/look/colors/red
# Imports
nur.nixosModules.nur
];
wayland.windowManager.sway.config.output.${config.displays.d1}.allow_tearing = "yes";
}

View file

@ -1,46 +0,0 @@
{ pkgs, ... }:
let
commonKernelParams = [
# Nvidia settings
"nvidia_drm.fbdev=1"
"nouveau.config=NvGspRm=1"
# VM/GPU passthrough
"amd_iommu=on"
"iommu=pt"
"nested=1"
# Virtualization nonsense
"transparent_hugepage=never"
# Isolate devices into IOMMU groups
"pcie_acs_override=downstream,multifunction"
"pci=routeirq"
];
in {
boot = {
kernelPackages = pkgs.unstable.linuxPackages_zen;
blacklistedKernelModules = [ "pcspkr" ];
kernel.sysctl."vm.max_map_count" = 2147483642;
kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:1f82,10de:10fa" ];
# Encryption and TPM
initrd = {
systemd.enable = true;
luks.devices = {
"crypt-nvme" = {
device = "/dev/disk/by-uuid/52110c74-19b6-40ef-9710-e6c9b157005f";
preLVM = true;
allowDiscards = true;
};
};
};
};
# Additional entry to boot from the second GPU
specialisation = {
gputwo.configuration = {
boot.kernelParams = commonKernelParams ++ [ "vfio-pci.ids=10de:2504,10de:228e" ];
};
};
}

View file

@ -1,37 +0,0 @@
{ chaotic, pkgs, ... }:
{
imports = [
./hardware
./boot
# Apps and programs
../../../modules/system
../../../modules/system/accounts
../../../modules/system/desktop
../../../modules/system/programs
../../../modules/system/services
../../../modules/system/services/pc/sunshine
../../../modules/system/services/pc/school
../../../modules/system/services/pc/virtualization/qemu
# Devices and hardware
../../../modules/system/devices
../../../modules/system/devices/boot/lanzaboote
../../../modules/system/devices/video/nvidia
../../../modules/system/devices/networking/firewall/pc
# Misc
../../../overlays
../../../variables
# Imports
chaotic.homeManagerModules.default
];
programs.sway.package = pkgs.sway_git;
networking.hostName = "firefly";
# Force Electron to use Wayland
environment.sessionVariables.NIXOS_OZONE_WL = "1";
}

View file

@ -1,22 +1,7 @@
{ config, nur, ... }:
{ ... }:
{
imports = [
# Apps and programs
../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/remote-desktop
../../../modules/home/sway
../../../modules/home/utils
# Misc
../../../overlays
../../../variables
../../../variables/look/colors/orange
# Imports
nur.nixosModules.nur
];
}

View file

@ -25,7 +25,7 @@
fsType = "btrfs";
options = [ "subvol=@var" "noatime" "nodiratime" "discard" ];
};
"/.snapshots" = {
"/snapshots" = {
device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad";
fsType = "btrfs";
options = [ "subvol=@snapshots" "noatime" "nodiratime" "discard" ];

View file

@ -1,24 +1,8 @@
{ config, nur, ... }:
{ ... }:
{
imports = [
# Apps and programs
../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/production
../../../modules/home/programs/misc/gaming/launchers
../../../modules/home/programs/misc/remote-desktop
../../../modules/home/sway
../../../modules/home/utils
# Misc
../../../overlays
../../../variables
../../../variables/look/colors/green
# Imports
nur.nixosModules.nur
];
}

View file

@ -1,27 +1,8 @@
{ config, pkgs, nur, ... }:
{ config, pkgs, ... }:
{
imports = [
# Apps and programs
../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/remote-desktop
../../../modules/home/sway
../../../modules/home/utils
# Misc
../../../overlays
../../../variables
../../../variables/look/colors/purple
# Imports
nur.nixosModules.nur
];
home.packages = with pkgs; [
alsa-utils
];
wayland.windowManager.sway.config.output.${config.displays.dI}.scale = "1.3";

View file

@ -27,7 +27,7 @@
"/home/jimbo/JimboNFS" = {
device = "${config.ips.wgSpan}.1:/export/JimboNFS";
fsType = "nfs4";
options = ["x-systemd.automount" "_netdev" "nofail" "noauto"];
options = [ "x-systemd.automount" "_netdev" "nofail" "noauto" ];
};
};

View file

@ -1,25 +1,9 @@
{ config, nur, ... }:
{ config, ... }:
{
imports = [
# Apps and programs
../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/production
../../../modules/home/programs/misc/gaming/launchers
../../../modules/home/programs/misc/gaming/xash3d
../../../modules/home/programs/misc/remote-desktop
../../../modules/home/sway
../../../modules/home/utils
# Misc
../../../overlays
../../../variables
../../../variables/look/colors/green
# Imports
nur.nixosModules.nur
];
}

View file

@ -4,7 +4,13 @@
boot = {
kernelModules = [ "kvm-intel" ];
initrd = {
availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
availableKernelModules = [
"xhci_pci"
"nvme"
"usbhid"
"usb_storage"
"sd_mod"
];
kernelModules = [ "dm-snapshot" ];
};
};
@ -30,7 +36,7 @@
fsType = "btrfs";
options = [ "subvol=@var" ];
};
"/.snapshots" = {
"/snapshots" = {
device = "/dev/disk/by-uuid/db67d9e8-2ead-4fe6-8a63-5c9e5071e06e";
fsType = "btrfs";
options = [ "subvol=@snapshots" ];

View file

@ -1,6 +1,16 @@
{ ... }:
{ nur, ... }:
{
programs.home-manager.enable = true;
nixpkgs.config.allowUnfree = true;
home.stateVersion = "24.05";
imports = [
./files
./programs
./services
./settings
./sway
./users
../../overlays
../../variables
# Imports
nur.nixosModules.nur
];
}

View file

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 314 KiB

View file

Before

Width:  |  Height:  |  Size: 2 MiB

After

Width:  |  Height:  |  Size: 2 MiB

View file

Before

Width:  |  Height:  |  Size: 2.3 MiB

After

Width:  |  Height:  |  Size: 2.3 MiB

View file

Before

Width:  |  Height:  |  Size: 1.9 MiB

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 820 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 570 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 406 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 MiB

View file

@ -7,10 +7,10 @@
source = ./assets/pfp.png;
};
".assets/wallpapers" = {
source = ./assets/wallpapers/${config.look.colors.wallpapers};
source = ./assets/wallpapers;
};
".assets/lockscreen" = {
source = ./assets/lockscreens/holymoly;
source = ./assets/lockscreen;
};
".icons/default" = {
source = "${pkgs.simp1e-cursors}/share/icons/Simp1e-Dark";

View file

@ -1,11 +1,11 @@
{ pkgs, ... }:
{
home = {
packages = with pkgs; [
easyeffects
];
file = {
".config/easyeffects/output/JimHeadphones.json".source = ./JimHeadphones.json;
};
services.easyeffects = {
enable = true;
preset = "headphones";
};
home.file = {
".config/easyeffects/output/headphones.json".source = ./headphones.json;
};
}

View file

@ -312,7 +312,7 @@ in {
];
}
];
definedAliases = ["@g"];
definedAliases = [ "@g" ];
};
"NixPKGs" = {
urls = [
@ -331,7 +331,7 @@ in {
}
];
icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
definedAliases = ["@pkgs"];
definedAliases = [ "@pkgs" ];
};
};
};
@ -348,6 +348,7 @@ in {
"privacy.userContext.newTabContainerOnLeftClick.enabled" = true;
"privacy.clearOnShutdown.history" = false;
"privacy.clearOnShutdown.cookies" = false;
"privacy.clearOnShutdown_v2.cookiesAndStorage" = false;
"browser.toolbars.bookmarks.visibility" = "never";
"media.hardware-video-decoding.force-enabled" = true;
"svg.context-properties.content.enabled" = true;
@ -400,7 +401,7 @@ in {
icon = "fingerprint";
id = 200;
};
Seneca = {
Work = {
color = "red";
icon = "briefcase";
id = 201;

View file

@ -14,7 +14,12 @@
defaultTimeout = 6000;
font = "${config.look.fonts.main} 12";
anchor = "bottom-right";
extraConfig = "on-button-right=dismiss-all\nouter-margin=10\n[mode=do-not-disturb]\ninvisible=1";
extraConfig = ''
on-button-right=dismiss-all
outer-margin=10
[mode=do-not-disturb]
invisible=1
'';
};
home.packages = let
@ -36,7 +41,5 @@
makoctl mode -a do-not-disturb
fi
'';
in with pkgs; [
makoToggle
];
in with pkgs; [ makoToggle ];
}

View file

@ -1,10 +1,9 @@
{ pkgs, ... }:
{
home = {
packages = with pkgs; [
mangohud
];
packages = with pkgs; [ mangohud ];
file = {
# I know options exist for this, but the order is not respected.
".config/MangoHud/MangoHud.conf".text = ''
table_columns=2
frametime=0
@ -12,7 +11,6 @@
font_scale=0.80
background_alpha=0.25
# Set the loads and such
exec=echo $(echo $XDG_CURRENT_DESKTOP | sed 's/./\U&/') on $(cat /etc/os-release | grep PRETTY_NAME | cut -d '"' -f 2)
fps
fps_color_change

View file

@ -1,7 +1,12 @@
{ ... }:
{ pkgs, ... }:
{
programs.mpv = {
enable = true;
scripts = with pkgs.mpvScripts; [
mpris
sponsorblock
thumbnail
];
config = {
volume = 55;
loop-playlist = "inf";

View file

@ -5,6 +5,7 @@
spotdl
playerctl
ffmpeg
alsa-utils
puddletag
pulsemixer
];

View file

@ -1,4 +1,4 @@
{ pkgs, lib, config, ... }:
{ pkgs, ... }:
{
home.packages = with pkgs; [
vesktop

View file

@ -3,7 +3,11 @@
imports = [
./avtools
./chat
./gaming
./general
./headless
./production
./remote-desktop
./school
];
}

View file

@ -1,4 +1,4 @@
{ pkgs, lib, config, ... }:
{ pkgs, ... }:
{
home.packages = with pkgs; [
dolphin-emu
@ -6,6 +6,6 @@
ryujinx
duckstation
pcsx2
#lime3ds
#unstable.lime3ds
];
}

View file

@ -1,4 +1,4 @@
{ pkgs, lib, config, ... }:
{ pkgs, ... }:
{
home.packages = with pkgs; [
steam

View file

@ -1,6 +1,4 @@
{ pkgs, lib, config, ... }:
{ pkgs, ... }:
{
home.packages = with pkgs; [
xash3d
];
home.packages = with pkgs; [ xash3d ];
}

View file

@ -1,4 +1,4 @@
{ pkgs, lib, config, ... }:
{ pkgs, ... }:
{
home.packages = with pkgs; [
imv

View file

@ -2,12 +2,9 @@
{
home.packages = with pkgs; [
gotop
tcptrack
p7zip
vimv
dua
pciutils
usbutils
protonvpn-cli_2
];
}

View file

@ -1,15 +1,12 @@
{ pkgs, blender-bin, ... }:
{
imports = [
./obs
];
imports = [ ./obs ];
home.packages = with pkgs; [
krita
inkscape
audacity
blender_4_2
sunvox
];
nixpkgs.overlays = [ blender-bin.overlays.default ];

View file

@ -1,4 +1,4 @@
{ pkgs, lib, config, ... }:
{ pkgs, ... }:
{
programs.obs-studio = {
enable = true;

View file

@ -4,6 +4,6 @@
remmina
freerdp
zoom-us
globalprotect-openconnect
unstable.gpauth
];
}

View file

@ -7,5 +7,6 @@
./neovim
./ranger
./tmux
./zsh
];
}

View file

@ -18,10 +18,8 @@
# Flake commands
flakedate = "doas nix flake update /etc/nixos";
sysswitch = "doas nixos-rebuild switch --flake /etc/nixos";
homeswitch = "home-manager switch --flake /etc/nixos";
nixswitch = "sysswitch; homeswitch";
nixdate = "flakedate && sysswitch; homeswitch";
nixswitch = "doas nixos-rebuild switch --flake /etc/nixos";
nixdate = "flakedate && nixswitch";
# Shortcut aliases
neo = "clear && fastfetch";
@ -38,8 +36,7 @@
myip = "curl ifconfig.co";
# Download from sources
ytdl = "yt-dlp --embed-thumbnail --embed-metadata --output \"%(title)s.%(ext)s\"";
ytmp4 = "ytdl --recode-video webm";
ytdl = ''yt-dlp --embed-thumbnail --embed-metadata --output "%(title)s.%(ext)s"'';
ytm3u = "yt-dlp -gS proto:m3u8";
opusdl = "ytdl --recode-video opus";
ytopus = "opusdl --format 251";

View file

@ -3,6 +3,5 @@
imports = [
./gnome-keyring
./udiskie
./zsh
];
}

View file

@ -4,6 +4,7 @@
./dconf
./fonts
./gtk
./nix
./xdg
];
}

View file

@ -1,4 +1,5 @@
{ pkgs, ... }: {
{ pkgs, ... }:
{
home.packages = with pkgs; [
liberation_ttf
twitter-color-emoji

View file

@ -0,0 +1,5 @@
{ ... }:
{
nixpkgs.config.allowUnfree = true;
home.stateVersion = "24.05";
}

View file

@ -28,10 +28,6 @@
url = "https://raw.githubusercontent.com/iguanajuice/sway-font-awesome/6b7a9d08974eea1b9cddb8d444e1c89d6837083a/icons";
sha256 = "09ki5qw1h91kd33k3fwzq7cb6ck8sq4haswgizrsy387sfr2a75x";
}}
# Switch to workspace 1
workspace ${config.ws.w7}
workspace ${config.ws.w1}
'';
};
}

View file

@ -5,8 +5,8 @@
# Set default modifier and variables
primeMod = "Mod4";
secMod = "Mod1";
resizeAmount = ''55'';
sendNotif = ''notify-send --expire-time=1500'';
resizeAmount = "55";
sendNotif = "notify-send --expire-time=1500";
in {
# Hotkeys
modifier = "${primeMod}";

View file

@ -1,14 +1,15 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
wl-clipboard
wdisplays
clipman
swaybg
libnotify
grim
slurp
swappy
jq
lm_sensors
wl-clipboard
wdisplays
jq
];
}

View file

@ -5,30 +5,30 @@
# Assign workspaces to config
workspaceOutputAssign = let
workspaces1 = [
"${config.ws.w0}"
"${config.ws.w1}"
"${config.ws.w2}"
"${config.ws.w3}"
"${config.ws.w1a}"
"${config.ws.w2a}"
"${config.ws.w3a}"
];
"${config.ws.w0}"
"${config.ws.w1}"
"${config.ws.w2}"
"${config.ws.w3}"
"${config.ws.w1a}"
"${config.ws.w2a}"
"${config.ws.w3a}"
];
workspaces2 = [
"${config.ws.w4}"
"${config.ws.w5}"
"${config.ws.w6}"
"${config.ws.w4a}"
"${config.ws.w5a}"
"${config.ws.w6a}"
];
"${config.ws.w4}"
"${config.ws.w5}"
"${config.ws.w6}"
"${config.ws.w4a}"
"${config.ws.w5a}"
"${config.ws.w6a}"
];
workspaces3 = [
"${config.ws.w7}"
"${config.ws.w8}"
"${config.ws.w9}"
"${config.ws.w7a}"
"${config.ws.w8a}"
"${config.ws.w9a}"
];
"${config.ws.w7}"
"${config.ws.w8}"
"${config.ws.w9}"
"${config.ws.w7a}"
"${config.ws.w8a}"
"${config.ws.w9a}"
];
assign = output: workspaces:
map (workspace: {
inherit workspace;
@ -37,94 +37,103 @@
workspaces;
in
(assign "${config.displays.d1}" workspaces1) ++
(assign "${config.displays.d2}" workspaces2) ++
(assign "${config.displays.d3}" workspaces3);
(assign "${config.displays.d2}" workspaces2) ++
(assign "${config.displays.d3}" workspaces3);
# Rules
defaultWorkspace = config.ws.w1;
window = {
border = config.look.border.int;
titlebar = false;
commands = [
# Scratchpads
{
criteria = {con_mark = "scratchpad";};
criteria = { con_mark = "scratchpad"; };
command = ''floating enable, sticky enable, move scratchpad, mark borderless'';
}
{
criteria = {app_id = "gotop";};
criteria = { app_id = "gotop"; };
command = ''mark scratchpad'';
}
{
criteria = {app_id = "music";};
criteria = { app_id = "music"; };
command = ''mark scratchpad'';
}
{
criteria = {app_id = "sound";};
criteria = { app_id = "sound"; };
command = ''mark scratchpad'';
}
{
criteria = {app_id = "com.github.wwmm.easyeffects";};
criteria = { app_id = "com.github.wwmm.easyeffects"; };
command = ''mark scratchpad, opacity 0.9'';
}
# Create a "Scratchpad" for apps I don't want to be seen when launched
{
criteria = {con_mark = "hiddenaway";};
criteria = { con_mark = "hiddenaway"; };
command = ''move scratchpad'';
}
# Give apps that don't have them borders
{
criteria = {con_mark = "borderless";};
criteria = { con_mark = "borderless"; };
command = ''border pixel ${config.look.border.string}'';
}
{
criteria = {app_id = "com.github.wwmm.easyeffects";};
criteria = { app_id = "com.github.wwmm.easyeffects"; };
command = ''mark borderless'';
}
{
criteria = {class = "steam";};
criteria = { class = "steam"; };
command = ''mark borderless'';
}
{
criteria = {app_id = "swappy";};
criteria = { app_id = "swappy"; };
command = ''mark borderless'';
}
{
criteria = {app_id = "virt-manager";};
criteria = { app_id = "virt-manager"; };
command = ''mark borderless'';
}
{
criteria = {window_role = "pop-up";};
criteria = { window_role = "pop-up"; };
command = ''mark borderless'';
}
# Floating or fullscreen rules
{
criteria = {app_id = "float";};
criteria = { app_id = "float"; };
command = ''floating enable'';
}
{
criteria = {title = "^GlobalShot";};
criteria = { title = "^GlobalShot"; };
command = ''floating enable, fullscreen enable global'';
}
];
};
assigns = {
# Broconfig.wsers
"${config.ws.w1}" = [{app_id = "MainBrowser";}];
"${config.ws.w1a}" = [{app_id = "AltBrowser";}];
"${config.ws.w1}" = [{ app_id = "MainBrowser"; }];
"${config.ws.w1a}" = [{ app_id = "AltBrowser"; }];
# Communication
"${config.ws.w3a}" = [{class = "zoom";}];
"${config.ws.w7}" = [{app_id = "MiscBrowser";} {app_id = "vesktop";} {class = "vesktop";}];
"${config.ws.w8}" = [{app_id = "org.gnome.Fractal";}];
"${config.ws.w9}" = [{app_id = "thunderbird";}];
"${config.ws.w3a}" = [{ class = "zoom"; }];
"${config.ws.w7}" = [
{ app_id = "MiscBrowser"; }
{ app_id = "vesktop"; }
{ class = "vesktop"; }
];
"${config.ws.w8}" = [{ app_id = "org.gnome.Fractal"; }];
"${config.ws.w9}" = [{ app_id = "thunderbird"; }];
# Else
"${config.ws.w2}" = [{class = "steam";} {app_id = "heroic";}];
"${config.ws.w2a}" = [{app_id = "looking-glass-client";}];
"${config.ws.w4a}" = [{app_id = "com.obsproject.Studio";}];
# Etc
"${config.ws.w2}" = [
{ class = "steam"; }
{app_id = "heroic";}
];
"${config.ws.w2a}" = [{ app_id = "looking-glass-client"; }];
"${config.ws.w4a}" = [{ app_id = "com.obsproject.Studio"; }];
};
focus.newWindow = "focus";
};

View file

@ -47,15 +47,14 @@
vramModule = {
exec = pkgs.writeScript "vramScript" ''
# Don't run the script if running on integrated graphics
if lspci -k | grep "Kernel driver in use: nvidia" &> /dev/null || lspci -k | grep "Kernel driver in use: amdgpu" &> /dev/null; then
gpu_driver=$(${pkgs.pciutils}/bin/lspci -k | grep -Eo "in use: (nvidia|amdgpu)" | awk '{print $3}')
# Run the nvidia-smi command and capture the VRAM usage and GPU utilization output
if lspci -k | grep "Kernel driver in use: nvidia" &> /dev/null; then
if [ -n "$gpu_driver" ]; then
if [ "$gpu_driver" == "nvidia" ]; then
vram_usage_mb=$(nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits)
temperature=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits)
# Check the drm memory if an AMD GPU is present
elif lspci -k | grep "Kernel driver in use: amdgpu" &> /dev/null; then
elif [ "$gpu_driver" == "amdgpu" ]; then
vram_usage_mb=$(echo "$(cat /sys/class/drm/card0/device/mem_info_vram_used || cat /sys/class/drm/card1/device/mem_info_vram_used) / 1024 / 1024" | bc)
temperature=$(sensors | grep 'edge' | awk '{print $2}' | sed 's/[^0-9.-]//g')
fi
@ -69,10 +68,8 @@
vram_usage_display="$(echo $vram_usage_gib)G"
fi
# Print the VRAM usage in MB or GiB, and include GPU utilization and temperature
echo "{\"text\":\"󰢮 $(echo $vram_usage_display)\",\"tooltip\":\"$(echo $temperature)°C\"}"
else
:
# Print the VRAM usage and temperature
echo "{\"text\":\"󰢮 $(echo $vram_usage_display)\",\"tooltip\":\"$(echo $temperature)°C\"}"
fi
'';
format = "{}";

View file

@ -1,9 +1,12 @@
{ ... }:
{ home-manager, ... }:
{
imports = [
./jimbo
./liquidsoap
./nextcloud
./nginx
home-manager.nixosModules.home-manager
];
users.mutableUsers = false;
}

View file

@ -1,4 +1,4 @@
{ pkgs, config, ... }:
{ pkgs, config, unstable, nur, blender-bin, ... }:
{
users.users = {
jimbo = {
@ -26,7 +26,6 @@
"input"
"disk"
"dialout"
"networkmanager"
"rtkit"
"kvm"
"libvirtd"
@ -39,4 +38,17 @@
shell = pkgs.zsh;
};
};
home-manager = {
useUserPackages = true;
backupFileExtension = "backup";
extraSpecialArgs = {
inherit
unstable
nur
blender-bin
;
};
users.jimbo = import ../../../../home;
};
}

View file

@ -2,31 +2,14 @@
{
imports = [
./greetd
./portals
];
programs.sway = {
enable = true;
xwayland.enable = true;
extraPackages = with pkgs; [
swaylock
swaybg
];
extraPackages = with pkgs; [ swaylock ];
};
# Allow swaylock to function
security.pam.services.swaylock = {};
xdg.portal = {
wlr = {
enable = true;
settings.screencast = {
max_fps = 60;
chooser_type = "simple";
chooser_cmd = "${pkgs.slurp}/bin/slurp -f %o -or -B 00000066 -b 00000099";
};
};
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
];
};
}

View file

@ -1,34 +1,32 @@
{ pkgs, ... }:
{
services = {
# Configure greetd for "auto" login (single user only)
greetd = let
startSway = pkgs.writeScript "startsway" ''
if lspci -k | grep "Kernel driver in use: nvidia" &> /dev/null; then
export LIBVA_DRIVER_NAME=nvidia
export GBM_BACKEND=nvidia-drm
export __GLX_VENDOR_LIBRARY_NAME=nvidia
else
:
fi
# Configure greetd for login directly to Sway
services.greetd = let
startSway = pkgs.writeScript "startsway" ''
if ${pkgs.pciutils}/bin/lspci -k | grep "in use: nvidia" &> /dev/null; then
export LIBVA_DRIVER_NAME=nvidia
export GBM_BACKEND=nvidia-drm
export __GLX_VENDOR_LIBRARY_NAME=nvidia
else
:
fi
export XDG_CURRENT_DESKTOP=sway
export QT_QPA_PLATFORM="wayland;xcb"
export XDG_CURRENT_DESKTOP=sway
export QT_QPA_PLATFORM="wayland;xcb"
sway --unsupported-gpu
'';
in {
enable = true;
restart = true;
settings = {
terminal = {
vt = 2;
switch = true;
};
default_session = {
command = "${startSway}";
user = "jimbo";
};
sway --unsupported-gpu
'';
in {
enable = true;
restart = true;
settings = {
terminal = {
vt = 2;
switch = true;
};
default_session = {
command = "${startSway}";
user = "jimbo";
};
};
};

View file

@ -0,0 +1,16 @@
{ pkgs, ... }:
{
xdg.portal = {
wlr = {
enable = true;
settings.screencast = {
max_fps = 60;
chooser_type = "simple";
chooser_cmd = "${pkgs.slurp}/bin/slurp -f %o -or -B 00000066 -b 00000099";
};
};
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
];
};
}

View file

@ -3,7 +3,6 @@
programs = {
dconf.enable = true;
light.enable = true;
xwayland.enable = true;
};
services = {

View file

@ -0,0 +1,20 @@
{ pkgs, ... }:
{
services.pipewire = {
enable = true;
wireplumber = {
enable = true;
configPackages = [
(pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/11-bluetooth-policy.conf" ''
wireplumber.settings = { bluetooth.autoswitch-to-headset-profile = false }
'')
];
};
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
#jack.enable = true;
};
}

View file

@ -1,10 +1,11 @@
{ ... }:
{
imports = [
./audio
./bluetooth
./filesystems
./impermanence
./networking
./pipewire
./printing
./udev
./video

View file

@ -0,0 +1,8 @@
{ impermanence, ... }:
{
imports = [
./root
./jimbo
impermanence.nixosModules.impermanence
];
}

View file

@ -0,0 +1,37 @@
{ ... }:
{
environment.persistence."/persist" = {
hideMounts = true;
users.jimbo = {
directories = [
"Downloads"
"Documents"
"Games"
"Pictures"
"Videos"
".snapshots"
".mozilla"
".thunderbird"
".config/blender"
".config/vesktop"
".config/sunshine"
".config/heroic"
".config/obs-studio"
".local/share/nvim/undo"
".local/share/fractal"
".local/share/PrismLauncher"
".local/share/Steam"
{ directory = ".ssh"; mode = "0700"; }
{ directory = ".gnupg"; mode = "0700"; }
{ directory = ".local/share/keyrings"; mode = "0700"; }
];
files = [
".zsh_history"
".local/share/clipman.json"
];
};
};
}

View file

@ -0,0 +1,24 @@
{ ... }:
{
environment.persistence."/persist" = {
hideMounts = true;
directories = [
"/etc/nixos"
"/etc/secureboot"
"/var/log"
"/var/lib/bluetooth"
"/var/lib/mpd"
"/var/lib/nixos"
"/var/lib/fail2ban"
"/var/lib/systemd/coredump"
];
files = [
"/etc/machine-id"
"/etc/ssh/ssh_host_ed25519_key"
"/etc/ssh/ssh_host_ed25519_key.pub"
"/etc/ssh/ssh_host_rsa_key"
"/etc/ssh/ssh_host_rsa_key.pub"
];
};
}

View file

@ -4,5 +4,9 @@
wireless.enable = false;
dhcpcd.enable = true;
nftables.enable = true;
nameservers = [
"1.1.1.1"
"1.1.1.2"
];
};
}

View file

@ -1,22 +1,22 @@
{ config, ... }:
{
networking.firewall = {
allowedUDPPorts = [ 51820 ];
};
networking = {
firewall.allowedUDPPorts = [ 51820 ];
networking.wireguard.interfaces = {
"${config.ips.wgInt}" = {
# Define IP of client in per device config
listenPort = 51820;
privateKey = config.secrets.wgClientPriv;
peers = [
{
publicKey = "qnOT/lXOJMaQgDUdXpyfGZB2IEyUouRje2m/bCe9ux8=";
allowedIPs = [ "${config.ips.wgSpan}.0/24" ];
endpoint = "sv.${config.domains.jim1}:51820";
persistentKeepalive = 25;
}
];
wireguard.interfaces = {
"${config.ips.wgInt}" = {
# Define IP of client in per device config
listenPort = 51820;
privateKey = config.secrets.wgClientPriv;
peers = [
{ # NixOS Server
publicKey = "qnOT/lXOJMaQgDUdXpyfGZB2IEyUouRje2m/bCe9ux8=";
allowedIPs = [ "${config.ips.wgSpan}.0/24" ];
endpoint = "sv.${config.domains.jim1}:51820";
persistentKeepalive = 25;
}
];
};
};
};
}

View file

@ -6,12 +6,10 @@
externalInterface = "${config.ips.netInt}";
internalInterfaces = [ "${config.ips.wgInt}" ];
};
firewall.allowedUDPPorts = [ 51820 ];
};
networking.wireguard = {
enable = true;
interfaces = {
firewall.allowedUDPPorts = [ 51820 ];
wireguard.interfaces = {
"${config.ips.wgInt}" = {
ips = [ "${config.ips.wgSpan}.1/24" ];
listenPort = 51820;

View file

@ -5,7 +5,5 @@
enableB43Firmware = true;
};
environment.systemPackages = with pkgs; [
unstable.impala
];
environment.systemPackages = with pkgs; [ unstable.impala ];
}

View file

@ -1,23 +0,0 @@
{ pkgs, ... }:
{
services = {
pipewire = {
enable = true;
audio.enable = true;
wireplumber = {
enable = true;
configPackages = [(
pkgs.writeTextDir "share/wireplumber/wireplumber.conf.d/11-bluetooth-policy.conf" ''
wireplumber.settings = { bluetooth.autoswitch-to-headset-profile = false }
''
)];
};
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
#jack.enable = true;
};
};
}

View file

@ -3,7 +3,7 @@
services = {
printing = {
enable = true;
drivers = with pkgs; [hplip];
drivers = with pkgs; [ hplip ];
webInterface = false;
};
avahi = {

View file

@ -7,8 +7,6 @@
destination = "/etc/udev/rules.d/10-oculus.rules";
};
in {
packages = [
oculusRules
];
packages = [ oculusRules ];
};
}

View file

@ -7,8 +7,6 @@
destination = "/etc/udev/rules.d/10-pdp.rules";
};
in {
packages = [
pdpRules
];
packages = [ pdpRules ];
};
}

View file

@ -1,11 +1,11 @@
{ ... }:
{
imports = [
./fwupd
./gnome-keyring
./gvfs
./keyd
./mpd
./networkfs
./polkit
./snapper
];
}

View file

@ -1,8 +0,0 @@
{ pkgs, ... }:
{
services.fwupd.enable = true;
environment.systemPackages = with pkgs; [
fwupd
];
}

View file

@ -8,7 +8,6 @@
main = {
capslock = "overload(control,esc)";
leftcontrol = "overload(ctrlmod,noop)";
esc = "`";
rightcontrol = "esc";
left = "noop";

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
./globalprotect
];
}

View file

@ -1,4 +0,0 @@
{ ... }:
{
services.globalprotect.enable = true;
}

View file

@ -0,0 +1,13 @@
{ ... }:
{
imports = [
./root
./jimbo
];
services.snapper = {
snapshotInterval = "0/6:00:00";
cleanupInterval = "12:00:00";
persistentTimer = true;
};
}

View file

@ -0,0 +1,12 @@
{ ... }:
{
services.snapper.configs.jimbo = {
SUBVOLUME = "/persist/home/jimbo";
TIMELINE_CREATE = true;
TIMELINE_CLEANUP = true;
TIMELINE_LIMIT_DAILY = 1;
TIMELINE_LIMIT_WEEKLY = 1;
TIMELINE_LIMIT_MONTHLY = 0;
TIMELINE_LIMIT_YEARLY = 0;
};
}

View file

@ -0,0 +1,12 @@
{ ... }:
{
services.snapper.configs.root = {
SUBVOLUME = "/persist";
TIMELINE_CREATE = true;
TIMELINE_CLEANUP = true;
TIMELINE_LIMIT_DAILY = 1;
TIMELINE_LIMIT_WEEKLY = 0;
TIMELINE_LIMIT_MONTHLY = 0;
TIMELINE_LIMIT_YEARLY = 0;
};
}

View file

@ -2,7 +2,6 @@
{
services.sunshine = {
enable = true;
settings.port = 57989;
autoStart = false;
};
}

View file

@ -5,24 +5,25 @@
enable = true;
securityType = "user";
openFirewall = true;
extraConfig = ''
workgroup = WORKGROUP
server string = JimSMB
security = user
hosts allow = ${config.ips.localSpan}. 127.0.0.1 localhost
hosts deny = 0.0.0.0/0
guest account = nobody
map to guest = bad user
'';
shares = {
roms = {
comment = "Samba share with my ROMs";
path = "/export/JimboNFS/Downloads/GameFiles/ROMS";
browseable = "yes";
settings = {
global = {
"workgroup" = "WORKGROUP";
"server string" = "JimSMB";
"security" = "user";
"hosts allow" = "${config.ips.localSpan}. 127.0.0.1 localhost";
"hosts deny" = "0.0.0.0/0";
"guest account" = "nobody";
"map to guest" = "bad user";
};
"roms" = {
"path" = "/export/JimboNFS/Downloads/GameFiles/ROMS";
"browseable" = "yes";
"read only" = "no";
"guest ok" = "no";
"guest ok" = "yes";
"create mask" = "0644";
"directory mask" = "0755";
"force user" = "username";
"force group" = "groupname";
};
};
};

View file

@ -12,7 +12,7 @@
min-port = 49000;
max-port = 50000;
use-auth-secret = true;
static-auth-secret = "will be world readable for local users :(";
static-auth-secret = config.secrets.coturnSecret;
realm = "turn.${config.domains.jim1}";
cert = "/var/lib/acme/turn.${config.domains.jim1}.com/fullchain.pem";
pkey = "/var/lib/acme/turn.${config.domains.jim1}.com/key.pem";
@ -24,7 +24,7 @@
"turn:turn.${config.domains.jim1}:3478?transport=udp"
"turn:turn.${config.domains.jim1}:3478?transport=tcp"
];
turn_shared_secret = config.services.coturn.static-auth-secret;
turn_shared_secret = config.secrets.coturnSecret;
turn_user_lifetime = "1h";
};
};
@ -32,10 +32,12 @@
# Open coturn ports
networking.firewall = {
allowedUDPPorts = [
3478 5349
];
allowedUDPPortRanges = [
{ from = 49000; to = 50000; }
3478
5349
];
allowedUDPPortRanges = [{
from = config.services.coturn.min-port;
to = config.services.coturn.max-port;
}];
};
}

View file

@ -13,14 +13,16 @@
public_baseurl = "https://matrix.${config.domains.jim1}";
suppress_key_server_warning = true;
listeners = [{
port = 8008;
bind_addresses = [ "::" "0.0.0.0" ];
resources = [ { compress = false; names = [ "client" "federation" ]; } ];
type = "http";
tls = false;
x_forwarded = true;
}];
listeners = [
{
port = 8008;
bind_addresses = [ "::" "0.0.0.0" ];
resources = [ { compress = true; names = [ "client" "federation" ]; } ];
type = "http";
tls = false;
x_forwarded = true;
}
];
email = {
notif_from = "Jimbo's Matrix <noreply@${config.domains.jim1}>";

Some files were not shown because too many files have changed in this diff Show more