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.
|
@ -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 ❤️
|
||||
|
||||
|
|
121
flake.lock
|
@ -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": {
|
||||
|
|
64
flake.nix
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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" ];
|
||||
|
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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" ];
|
||||
|
|
68
hosts/firefly/boot/default.nix
Normal 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
|
@ -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";
|
||||
}
|
95
hosts/firefly/disko/default.nix
Normal 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;
|
||||
};
|
||||
}
|
|
@ -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;
|
|
@ -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";
|
||||
}
|
|
@ -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" ];
|
||||
};
|
||||
};
|
||||
}
|
|
@ -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";
|
||||
}
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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" ];
|
||||
|
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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" ];
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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" ];
|
||||
|
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 314 KiB |
Before Width: | Height: | Size: 2 MiB After Width: | Height: | Size: 2 MiB |
Before Width: | Height: | Size: 2.3 MiB After Width: | Height: | Size: 2.3 MiB |
Before Width: | Height: | Size: 1.9 MiB After Width: | Height: | Size: 1.9 MiB |
Before Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 820 KiB |
Before Width: | Height: | Size: 570 KiB |
Before Width: | Height: | Size: 1 MiB |
Before Width: | Height: | Size: 406 KiB |
Before Width: | Height: | Size: 470 KiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 1.8 MiB |
|
@ -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";
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 ];
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -1,7 +1,12 @@
|
|||
{ ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.mpv = {
|
||||
enable = true;
|
||||
scripts = with pkgs.mpvScripts; [
|
||||
mpris
|
||||
sponsorblock
|
||||
thumbnail
|
||||
];
|
||||
config = {
|
||||
volume = 55;
|
||||
loop-playlist = "inf";
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
spotdl
|
||||
playerctl
|
||||
ffmpeg
|
||||
alsa-utils
|
||||
puddletag
|
||||
pulsemixer
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
vesktop
|
||||
|
|
|
@ -3,7 +3,11 @@
|
|||
imports = [
|
||||
./avtools
|
||||
./chat
|
||||
./gaming
|
||||
./general
|
||||
./headless
|
||||
./production
|
||||
./remote-desktop
|
||||
./school
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
dolphin-emu
|
||||
|
@ -6,6 +6,6 @@
|
|||
ryujinx
|
||||
duckstation
|
||||
pcsx2
|
||||
#lime3ds
|
||||
#unstable.lime3ds
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
steam
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
xash3d
|
||||
];
|
||||
home.packages = with pkgs; [ xash3d ];
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
imv
|
||||
|
|
|
@ -2,12 +2,9 @@
|
|||
{
|
||||
home.packages = with pkgs; [
|
||||
gotop
|
||||
tcptrack
|
||||
p7zip
|
||||
vimv
|
||||
dua
|
||||
pciutils
|
||||
usbutils
|
||||
protonvpn-cli_2
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ pkgs, lib, config, ... }:
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
programs.obs-studio = {
|
||||
enable = true;
|
||||
|
|
|
@ -4,6 +4,6 @@
|
|||
remmina
|
||||
freerdp
|
||||
zoom-us
|
||||
globalprotect-openconnect
|
||||
unstable.gpauth
|
||||
];
|
||||
}
|
||||
|
|
|
@ -7,5 +7,6 @@
|
|||
./neovim
|
||||
./ranger
|
||||
./tmux
|
||||
./zsh
|
||||
];
|
||||
}
|
||||
|
|
|
@ -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";
|
|
@ -3,6 +3,5 @@
|
|||
imports = [
|
||||
./gnome-keyring
|
||||
./udiskie
|
||||
./zsh
|
||||
];
|
||||
}
|
|
@ -4,6 +4,7 @@
|
|||
./dconf
|
||||
./fonts
|
||||
./gtk
|
||||
./nix
|
||||
./xdg
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{ pkgs, ... }: {
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
liberation_ttf
|
||||
twitter-color-emoji
|
||||
|
|
5
modules/home/settings/nix/default.nix
Normal file
|
@ -0,0 +1,5 @@
|
|||
{ ... }:
|
||||
{
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
home.stateVersion = "24.05";
|
||||
}
|
|
@ -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}
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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}";
|
||||
|
|
|
@ -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
|
||||
];
|
||||
}
|
||||
|
|
|
@ -41,90 +41,99 @@
|
|||
(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";
|
||||
};
|
||||
|
|
|
@ -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
|
||||
# Print the VRAM usage and temperature
|
||||
echo "{\"text\":\" $(echo $vram_usage_display)\",\"tooltip\":\"$(echo $temperature)°C\"}"
|
||||
else
|
||||
:
|
||||
fi
|
||||
'';
|
||||
format = "{}";
|
||||
|
|
|
@ -1,9 +1,12 @@
|
|||
{ ... }:
|
||||
{ home-manager, ... }:
|
||||
{
|
||||
imports = [
|
||||
./jimbo
|
||||
./liquidsoap
|
||||
./nextcloud
|
||||
./nginx
|
||||
home-manager.nixosModules.home-manager
|
||||
];
|
||||
|
||||
users.mutableUsers = false;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
services = {
|
||||
# Configure greetd for "auto" login (single user only)
|
||||
greetd = let
|
||||
# Configure greetd for login directly to Sway
|
||||
services.greetd = let
|
||||
startSway = pkgs.writeScript "startsway" ''
|
||||
if lspci -k | grep "Kernel driver in use: nvidia" &> /dev/null; then
|
||||
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
|
||||
|
@ -31,5 +30,4 @@
|
|||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
16
modules/system/desktop/sway/portals/default.nix
Normal 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
|
||||
];
|
||||
};
|
||||
}
|
|
@ -3,7 +3,6 @@
|
|||
programs = {
|
||||
dconf.enable = true;
|
||||
light.enable = true;
|
||||
xwayland.enable = true;
|
||||
};
|
||||
|
||||
services = {
|
||||
|
|
20
modules/system/devices/audio/default.nix
Normal 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;
|
||||
};
|
||||
}
|
|
@ -1,10 +1,11 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./audio
|
||||
./bluetooth
|
||||
./filesystems
|
||||
./impermanence
|
||||
./networking
|
||||
./pipewire
|
||||
./printing
|
||||
./udev
|
||||
./video
|
||||
|
|
8
modules/system/devices/impermanence/default.nix
Normal file
|
@ -0,0 +1,8 @@
|
|||
{ impermanence, ... }:
|
||||
{
|
||||
imports = [
|
||||
./root
|
||||
./jimbo
|
||||
impermanence.nixosModules.impermanence
|
||||
];
|
||||
}
|
37
modules/system/devices/impermanence/jimbo/default.nix
Normal 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"
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
24
modules/system/devices/impermanence/root/default.nix
Normal 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"
|
||||
];
|
||||
};
|
||||
}
|
|
@ -4,5 +4,9 @@
|
|||
wireless.enable = false;
|
||||
dhcpcd.enable = true;
|
||||
nftables.enable = true;
|
||||
nameservers = [
|
||||
"1.1.1.1"
|
||||
"1.1.1.2"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,16 +1,15 @@
|
|||
{ config, ... }:
|
||||
{
|
||||
networking.firewall = {
|
||||
allowedUDPPorts = [ 51820 ];
|
||||
};
|
||||
networking = {
|
||||
firewall.allowedUDPPorts = [ 51820 ];
|
||||
|
||||
networking.wireguard.interfaces = {
|
||||
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";
|
||||
|
@ -19,4 +18,5 @@
|
|||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -5,7 +5,5 @@
|
|||
enableB43Firmware = true;
|
||||
};
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
unstable.impala
|
||||
];
|
||||
environment.systemPackages = with pkgs; [ unstable.impala ];
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
};
|
||||
}
|
|
@ -3,7 +3,7 @@
|
|||
services = {
|
||||
printing = {
|
||||
enable = true;
|
||||
drivers = with pkgs; [hplip];
|
||||
drivers = with pkgs; [ hplip ];
|
||||
webInterface = false;
|
||||
};
|
||||
avahi = {
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
destination = "/etc/udev/rules.d/10-oculus.rules";
|
||||
};
|
||||
in {
|
||||
packages = [
|
||||
oculusRules
|
||||
];
|
||||
packages = [ oculusRules ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -7,8 +7,6 @@
|
|||
destination = "/etc/udev/rules.d/10-pdp.rules";
|
||||
};
|
||||
in {
|
||||
packages = [
|
||||
pdpRules
|
||||
];
|
||||
packages = [ pdpRules ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./fwupd
|
||||
./gnome-keyring
|
||||
./gvfs
|
||||
./keyd
|
||||
./mpd
|
||||
./networkfs
|
||||
./polkit
|
||||
./snapper
|
||||
];
|
||||
}
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
{ pkgs, ... }:
|
||||
{
|
||||
services.fwupd.enable = true;
|
||||
|
||||
environment.systemPackages = with pkgs; [
|
||||
fwupd
|
||||
];
|
||||
}
|
|
@ -8,7 +8,6 @@
|
|||
main = {
|
||||
capslock = "overload(control,esc)";
|
||||
leftcontrol = "overload(ctrlmod,noop)";
|
||||
|
||||
esc = "`";
|
||||
rightcontrol = "esc";
|
||||
left = "noop";
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./globalprotect
|
||||
];
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
{ ... }:
|
||||
{
|
||||
services.globalprotect.enable = true;
|
||||
}
|
13
modules/system/services/pc/snapper/default.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{ ... }:
|
||||
{
|
||||
imports = [
|
||||
./root
|
||||
./jimbo
|
||||
];
|
||||
|
||||
services.snapper = {
|
||||
snapshotInterval = "0/6:00:00";
|
||||
cleanupInterval = "12:00:00";
|
||||
persistentTimer = true;
|
||||
};
|
||||
}
|
12
modules/system/services/pc/snapper/jimbo/default.nix
Normal 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;
|
||||
};
|
||||
}
|
12
modules/system/services/pc/snapper/root/default.nix
Normal 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;
|
||||
};
|
||||
}
|
|
@ -2,7 +2,6 @@
|
|||
{
|
||||
services.sunshine = {
|
||||
enable = true;
|
||||
settings.port = 57989;
|
||||
autoStart = false;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
}];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -13,14 +13,16 @@
|
|||
public_baseurl = "https://matrix.${config.domains.jim1}";
|
||||
suppress_key_server_warning = true;
|
||||
|
||||
listeners = [{
|
||||
listeners = [
|
||||
{
|
||||
port = 8008;
|
||||
bind_addresses = [ "::" "0.0.0.0" ];
|
||||
resources = [ { compress = false; names = [ "client" "federation" ]; } ];
|
||||
resources = [ { compress = true; names = [ "client" "federation" ]; } ];
|
||||
type = "http";
|
||||
tls = false;
|
||||
x_forwarded = true;
|
||||
}];
|
||||
}
|
||||
];
|
||||
|
||||
email = {
|
||||
notif_from = "Jimbo's Matrix <noreply@${config.domains.jim1}>";
|
||||
|
|