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: 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. [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. [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 ❤️ Made with love ❤️

View file

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

View file

@ -1,20 +1,8 @@
{ {
inputs = { inputs = {
# System inputs
nixpkgs.url = "nixpkgs/nixos-24.05"; nixpkgs.url = "nixpkgs/nixos-24.05";
unstable.url = "nixpkgs/nixos-unstable"; 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"; hardware.url = "github:nixos/nixos-hardware/master";
lanzaboote = { lanzaboote = {
@ -22,21 +10,39 @@
inputs.nixpkgs.follows = "nixpkgs"; 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"; mailserver.url = "gitlab:simple-nixos-mailserver/nixos-mailserver/nixos-24.05";
minecraft.url = "github:Infinidoge/nix-minecraft"; 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 = { outputs = {
nixpkgs, nixpkgs,
unstable, unstable,
home-manager,
nur,
chaotic,
blender-bin,
hardware, hardware,
lanzaboote, lanzaboote,
disko,
impermanence,
chaotic,
mailserver, mailserver,
minecraft, minecraft,
home-manager,
nur,
blender-bin,
... ...
}: }:
let let
@ -45,11 +51,16 @@
specialArgs = { specialArgs = {
inherit inherit
unstable unstable
chaotic
hardware hardware
lanzaboote lanzaboote
disko
impermanence
chaotic
mailserver mailserver
minecraft minecraft
home-manager
nur
blender-bin
; ;
}; };
}; };
@ -66,7 +77,7 @@
in { in {
# nixos-rebuild switch --flake .#hostname # nixos-rebuild switch --flake .#hostname
nixosConfigurations = { nixosConfigurations = {
firefly = mkNix [ ./hosts/firefly/system ]; # Main Desktop firefly = mkNix [ ./hosts/firefly ]; # Main Desktop
detritus = mkNix [ ./hosts/detritus/system ]; # Acer Desktop detritus = mkNix [ ./hosts/detritus/system ]; # Acer Desktop
shuttle = mkNix [ ./hosts/shuttleworth/system ]; # Pinebook Pro shuttle = mkNix [ ./hosts/shuttleworth/system ]; # Pinebook Pro
@ -78,18 +89,7 @@
bomberman = mkNix [ ./hosts/bomberman/system ]; # Oracle ARM bomberman = mkNix [ ./hosts/bomberman/system ]; # Oracle ARM
}; };
# home-manager switch --flake .#username@hostname # home-manager switch --flake .#username
homeConfigurations = { homeConfigurations."jimbo" = mkHome [ ./modules/home ] nixpkgs.legacyPackages.x86_64-linux;
"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;
};
}; };
} }

View file

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

View file

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

View file

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

View file

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

View file

@ -1,23 +1,7 @@
{ config, nur, ... }: { ... }:
{ {
imports = [ imports = [
# Apps and programs
../../../modules/home ../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/gaming/launchers ../../../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"; fsType = "btrfs";
options = [ "subvol=@home" ]; options = [ "subvol=@home" ];
}; };
"/var" = {
device = "/dev/disk/by-uuid/dc6e2cd9-040b-4104-8138-5dfa9cb5558c";
fsType = "btrfs";
options = [ "subvol=@var" ];
};
"/nix" = { "/nix" = {
device = "/dev/disk/by-uuid/dc6e2cd9-040b-4104-8138-5dfa9cb5558c"; device = "/dev/disk/by-uuid/dc6e2cd9-040b-4104-8138-5dfa9cb5558c";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@nix" ]; options = [ "subvol=@nix" ];
}; };
"/.snapshots" = { "/snapshots" = {
device = "/dev/disk/by-uuid/dc6e2cd9-040b-4104-8138-5dfa9cb5558c"; device = "/dev/disk/by-uuid/dc6e2cd9-040b-4104-8138-5dfa9cb5558c";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@snapshots" ]; 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 = { fileSystems = {
"/" = { # Useful system mounts
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b"; "/etc/libvirt" = {
fsType = "btrfs"; device = "/dev/disk/by-uuid/f18a0302-9914-471d-828c-85ab1a67a8be";
options = [ "subvol=@" "noatime" "nodiratime" "discard" ]; options = [ "nosuid" "nodev" "nofail" ];
}; };
"/home" = { "/etc/libvirt/VMs/Bulk" = {
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b"; depends = [ "/etc/libvirt" ];
fsType = "btrfs"; device = "/dev/disk/by-uuid/3eb36c3e-81ac-4281-89f0-c89242d88dd6";
options = [ "subvol=@home" "noatime" "nodiratime" "discard" ]; options = [ "nosuid" "nodev" "nofail" ];
}; };
"/nix" = { "/var/lib/libvirt" = {
device = "/dev/disk/by-uuid/bbfed7d1-62f2-4d8e-b63f-7f6ec932105b"; depends = [ "/etc/libvirt" ];
fsType = "btrfs"; device = "/etc/libvirt/varlibvirt";
options = [ "subvol=@nix" "noatime" "nodiratime" "discard" ]; options = [ "bind" "rw" ];
};
"/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" ];
}; };
# Games and such # Games and such
@ -80,22 +55,6 @@
options = [ "nosuid" "nodev" "noauto" ]; 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 # Network mounts
"/home/jimbo/JimboNFS" = { "/home/jimbo/JimboNFS" = {
device = "${config.ips.server}:/export/JimboNFS"; device = "${config.ips.server}:/export/JimboNFS";
@ -105,7 +64,7 @@
}; };
swapDevices = [ swapDevices = [
{ device = "/dev/disk/by-uuid/1a6a68d0-8ae7-4836-a585-b708597937a1"; } { device = "/dev/nixos/swap"; }
]; ];
networking.useDHCP = lib.mkDefault true; 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 = [ imports = [
# Apps and programs
../../../modules/home ../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/remote-desktop ../../../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"; fsType = "btrfs";
options = [ "subvol=@var" "noatime" "nodiratime" "discard" ]; options = [ "subvol=@var" "noatime" "nodiratime" "discard" ];
}; };
"/.snapshots" = { "/snapshots" = {
device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad"; device = "/dev/disk/by-uuid/e8c9c5a8-4df0-4100-8de6-f08a1a774fad";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@snapshots" "noatime" "nodiratime" "discard" ]; options = [ "subvol=@snapshots" "noatime" "nodiratime" "discard" ];

View file

@ -1,24 +1,8 @@
{ config, nur, ... }: { ... }:
{ {
imports = [ imports = [
# Apps and programs
../../../modules/home ../../../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/launchers
../../../modules/home/programs/misc/remote-desktop ../../../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 = [ imports = [
# Apps and programs
../../../modules/home ../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/remote-desktop ../../../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"; wayland.windowManager.sway.config.output.${config.displays.dI}.scale = "1.3";

View file

@ -27,7 +27,7 @@
"/home/jimbo/JimboNFS" = { "/home/jimbo/JimboNFS" = {
device = "${config.ips.wgSpan}.1:/export/JimboNFS"; device = "${config.ips.wgSpan}.1:/export/JimboNFS";
fsType = "nfs4"; 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 = [ imports = [
# Apps and programs
../../../modules/home ../../../modules/home
../../../modules/home/users
../../../modules/home/files
../../../modules/home/settings
../../../modules/home/programs
../../../modules/home/programs/misc/production ../../../modules/home/programs/misc/production
../../../modules/home/programs/misc/gaming/launchers ../../../modules/home/programs/misc/gaming/launchers
../../../modules/home/programs/misc/gaming/xash3d
../../../modules/home/programs/misc/remote-desktop ../../../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 = { boot = {
kernelModules = [ "kvm-intel" ]; kernelModules = [ "kvm-intel" ];
initrd = { initrd = {
availableKernelModules = [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; availableKernelModules = [
"xhci_pci"
"nvme"
"usbhid"
"usb_storage"
"sd_mod"
];
kernelModules = [ "dm-snapshot" ]; kernelModules = [ "dm-snapshot" ];
}; };
}; };
@ -30,7 +36,7 @@
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@var" ]; options = [ "subvol=@var" ];
}; };
"/.snapshots" = { "/snapshots" = {
device = "/dev/disk/by-uuid/db67d9e8-2ead-4fe6-8a63-5c9e5071e06e"; device = "/dev/disk/by-uuid/db67d9e8-2ead-4fe6-8a63-5c9e5071e06e";
fsType = "btrfs"; fsType = "btrfs";
options = [ "subvol=@snapshots" ]; options = [ "subvol=@snapshots" ];

View file

@ -1,6 +1,16 @@
{ ... }: { nur, ... }:
{ {
programs.home-manager.enable = true; imports = [
nixpkgs.config.allowUnfree = true; ./files
home.stateVersion = "24.05"; ./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; source = ./assets/pfp.png;
}; };
".assets/wallpapers" = { ".assets/wallpapers" = {
source = ./assets/wallpapers/${config.look.colors.wallpapers}; source = ./assets/wallpapers;
}; };
".assets/lockscreen" = { ".assets/lockscreen" = {
source = ./assets/lockscreens/holymoly; source = ./assets/lockscreen;
}; };
".icons/default" = { ".icons/default" = {
source = "${pkgs.simp1e-cursors}/share/icons/Simp1e-Dark"; source = "${pkgs.simp1e-cursors}/share/icons/Simp1e-Dark";

View file

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

View file

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

View file

@ -14,7 +14,12 @@
defaultTimeout = 6000; defaultTimeout = 6000;
font = "${config.look.fonts.main} 12"; font = "${config.look.fonts.main} 12";
anchor = "bottom-right"; 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 home.packages = let
@ -36,7 +41,5 @@
makoctl mode -a do-not-disturb makoctl mode -a do-not-disturb
fi fi
''; '';
in with pkgs; [ in with pkgs; [ makoToggle ];
makoToggle
];
} }

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +1,5 @@
{ pkgs, ... }: { { pkgs, ... }:
{
home.packages = with pkgs; [ home.packages = with pkgs; [
liberation_ttf liberation_ttf
twitter-color-emoji 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"; url = "https://raw.githubusercontent.com/iguanajuice/sway-font-awesome/6b7a9d08974eea1b9cddb8d444e1c89d6837083a/icons";
sha256 = "09ki5qw1h91kd33k3fwzq7cb6ck8sq4haswgizrsy387sfr2a75x"; 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 # Set default modifier and variables
primeMod = "Mod4"; primeMod = "Mod4";
secMod = "Mod1"; secMod = "Mod1";
resizeAmount = ''55''; resizeAmount = "55";
sendNotif = ''notify-send --expire-time=1500''; sendNotif = "notify-send --expire-time=1500";
in { in {
# Hotkeys # Hotkeys
modifier = "${primeMod}"; modifier = "${primeMod}";

View file

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

View file

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

View file

@ -47,15 +47,14 @@
vramModule = { vramModule = {
exec = pkgs.writeScript "vramScript" '' exec = pkgs.writeScript "vramScript" ''
# Don't run the script if running on integrated graphics # 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 [ -n "$gpu_driver" ]; then
if lspci -k | grep "Kernel driver in use: nvidia" &> /dev/null; then if [ "$gpu_driver" == "nvidia" ]; then
vram_usage_mb=$(nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits) vram_usage_mb=$(nvidia-smi --query-gpu=memory.used --format=csv,noheader,nounits)
temperature=$(nvidia-smi --query-gpu=temperature.gpu --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 [ "$gpu_driver" == "amdgpu" ]; then
elif lspci -k | grep "Kernel driver in use: amdgpu" &> /dev/null; 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) 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') temperature=$(sensors | grep 'edge' | awk '{print $2}' | sed 's/[^0-9.-]//g')
fi fi
@ -69,10 +68,8 @@
vram_usage_display="$(echo $vram_usage_gib)G" vram_usage_display="$(echo $vram_usage_gib)G"
fi fi
# Print the VRAM usage in MB or GiB, and include GPU utilization and temperature # Print the VRAM usage and temperature
echo "{\"text\":\"󰢮 $(echo $vram_usage_display)\",\"tooltip\":\"$(echo $temperature)°C\"}" echo "{\"text\":\"󰢮 $(echo $vram_usage_display)\",\"tooltip\":\"$(echo $temperature)°C\"}"
else
:
fi fi
''; '';
format = "{}"; format = "{}";

View file

@ -1,9 +1,12 @@
{ ... }: { home-manager, ... }:
{ {
imports = [ imports = [
./jimbo ./jimbo
./liquidsoap ./liquidsoap
./nextcloud ./nextcloud
./nginx ./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 = { users.users = {
jimbo = { jimbo = {
@ -26,7 +26,6 @@
"input" "input"
"disk" "disk"
"dialout" "dialout"
"networkmanager"
"rtkit" "rtkit"
"kvm" "kvm"
"libvirtd" "libvirtd"
@ -39,4 +38,17 @@
shell = pkgs.zsh; 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 = [ imports = [
./greetd ./greetd
./portals
]; ];
programs.sway = { programs.sway = {
enable = true; enable = true;
xwayland.enable = true; extraPackages = with pkgs; [ swaylock ];
extraPackages = with pkgs; [
swaylock
swaybg
];
}; };
# Allow swaylock to function # Allow swaylock to function
security.pam.services.swaylock = {}; 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, ... }: { pkgs, ... }:
{ {
services = { # Configure greetd for login directly to Sway
# Configure greetd for "auto" login (single user only) services.greetd = let
greetd = let startSway = pkgs.writeScript "startsway" ''
startSway = pkgs.writeScript "startsway" '' if ${pkgs.pciutils}/bin/lspci -k | grep "in use: nvidia" &> /dev/null; then
if lspci -k | grep "Kernel driver in use: nvidia" &> /dev/null; then export LIBVA_DRIVER_NAME=nvidia
export LIBVA_DRIVER_NAME=nvidia export GBM_BACKEND=nvidia-drm
export GBM_BACKEND=nvidia-drm export __GLX_VENDOR_LIBRARY_NAME=nvidia
export __GLX_VENDOR_LIBRARY_NAME=nvidia else
else :
: fi
fi
export XDG_CURRENT_DESKTOP=sway export XDG_CURRENT_DESKTOP=sway
export QT_QPA_PLATFORM="wayland;xcb" export QT_QPA_PLATFORM="wayland;xcb"
sway --unsupported-gpu sway --unsupported-gpu
''; '';
in { in {
enable = true; enable = true;
restart = true; restart = true;
settings = { settings = {
terminal = { terminal = {
vt = 2; vt = 2;
switch = true; switch = true;
}; };
default_session = { default_session = {
command = "${startSway}"; command = "${startSway}";
user = "jimbo"; 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 = { programs = {
dconf.enable = true; dconf.enable = true;
light.enable = true; light.enable = true;
xwayland.enable = true;
}; };
services = { 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 = [ imports = [
./audio
./bluetooth ./bluetooth
./filesystems ./filesystems
./impermanence
./networking ./networking
./pipewire
./printing ./printing
./udev ./udev
./video ./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; wireless.enable = false;
dhcpcd.enable = true; dhcpcd.enable = true;
nftables.enable = true; nftables.enable = true;
nameservers = [
"1.1.1.1"
"1.1.1.2"
];
}; };
} }

View file

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

View file

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

View file

@ -5,7 +5,5 @@
enableB43Firmware = true; enableB43Firmware = true;
}; };
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [ unstable.impala ];
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 = { services = {
printing = { printing = {
enable = true; enable = true;
drivers = with pkgs; [hplip]; drivers = with pkgs; [ hplip ];
webInterface = false; webInterface = false;
}; };
avahi = { avahi = {

View file

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

View file

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

View file

@ -1,11 +1,11 @@
{ ... }: { ... }:
{ {
imports = [ imports = [
./fwupd
./gnome-keyring ./gnome-keyring
./gvfs
./keyd ./keyd
./mpd ./mpd
./networkfs
./polkit ./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 = { main = {
capslock = "overload(control,esc)"; capslock = "overload(control,esc)";
leftcontrol = "overload(ctrlmod,noop)"; leftcontrol = "overload(ctrlmod,noop)";
esc = "`"; esc = "`";
rightcontrol = "esc"; rightcontrol = "esc";
left = "noop"; 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 = { services.sunshine = {
enable = true; enable = true;
settings.port = 57989;
autoStart = false; autoStart = false;
}; };
} }

View file

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

View file

@ -12,7 +12,7 @@
min-port = 49000; min-port = 49000;
max-port = 50000; max-port = 50000;
use-auth-secret = true; 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}"; realm = "turn.${config.domains.jim1}";
cert = "/var/lib/acme/turn.${config.domains.jim1}.com/fullchain.pem"; cert = "/var/lib/acme/turn.${config.domains.jim1}.com/fullchain.pem";
pkey = "/var/lib/acme/turn.${config.domains.jim1}.com/key.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=udp"
"turn:turn.${config.domains.jim1}:3478?transport=tcp" "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"; turn_user_lifetime = "1h";
}; };
}; };
@ -32,10 +32,12 @@
# Open coturn ports # Open coturn ports
networking.firewall = { networking.firewall = {
allowedUDPPorts = [ allowedUDPPorts = [
3478 5349 3478
]; 5349
allowedUDPPortRanges = [
{ from = 49000; to = 50000; }
]; ];
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}"; public_baseurl = "https://matrix.${config.domains.jim1}";
suppress_key_server_warning = true; suppress_key_server_warning = true;
listeners = [{ listeners = [
port = 8008; {
bind_addresses = [ "::" "0.0.0.0" ]; port = 8008;
resources = [ { compress = false; names = [ "client" "federation" ]; } ]; bind_addresses = [ "::" "0.0.0.0" ];
type = "http"; resources = [ { compress = true; names = [ "client" "federation" ]; } ];
tls = false; type = "http";
x_forwarded = true; tls = false;
}]; x_forwarded = true;
}
];
email = { email = {
notif_from = "Jimbo's Matrix <noreply@${config.domains.jim1}>"; 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