From b8ae87b93880bc6c12f639ea6a67397cb461617b Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Thu, 22 Aug 2024 18:10:55 +0200 Subject: [PATCH 1/8] persistence: persist direnv allowed dirs --- hosts/voyager/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/voyager/default.nix b/hosts/voyager/default.nix index 753c0d9..b05972d 100644 --- a/hosts/voyager/default.nix +++ b/hosts/voyager/default.nix @@ -86,6 +86,7 @@ ".config/github-copilot" ".config/ipython" ".cache/pre-commit" + ".local/share/direnv" # Services ".local/state/wireplumber" # volume settings From 618144c7ac6e5546158b3d69ac6b7480f4c90aaa Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Sat, 24 Aug 2024 10:33:53 +0200 Subject: [PATCH 2/8] Add docker --- hosts/voyager/default.nix | 2 ++ options/system/default.nix | 14 +++++++++++--- system/shared/services/default.nix | 1 + system/shared/services/docker.nix | 16 ++++++++++++++++ 4 files changed, 30 insertions(+), 3 deletions(-) create mode 100644 system/shared/services/docker.nix diff --git a/hosts/voyager/default.nix b/hosts/voyager/default.nix index b05972d..1fd0ade 100644 --- a/hosts/voyager/default.nix +++ b/hosts/voyager/default.nix @@ -37,6 +37,7 @@ username = "itsdrike"; sound.enable = true; + docker.enable = true; impermanence = { root = { @@ -48,6 +49,7 @@ extraDirectories = [ "/var/log" + "/var/lib/docker" ]; }; diff --git a/options/system/default.nix b/options/system/default.nix index 2b66816..37cc37a 100644 --- a/options/system/default.nix +++ b/options/system/default.nix @@ -1,6 +1,5 @@ -{lib, ...}: -with lib; let - inherit (lib) mkOption; +{lib, ...}: let + inherit (lib) mkOption mkEnableOption types; in { imports = [ ./boot @@ -21,5 +20,14 @@ in { sound = { enable = mkEnableOption "sound related programs and audio-dependent programs"; }; + + docker = { + enable = mkEnableOption "docker virtualisation platform"; + data-root = mkOption { + type = types.str; + description = "Path to the directory where docker data should be stored"; + default = "/var/lib/docker"; + }; + }; }; } diff --git a/system/shared/services/default.nix b/system/shared/services/default.nix index b0a0fe2..2b4d446 100644 --- a/system/shared/services/default.nix +++ b/system/shared/services/default.nix @@ -7,5 +7,6 @@ _: { ./thermald.nix ./journald.nix ./fstrim.nix + ./docker.nix ]; } diff --git a/system/shared/services/docker.nix b/system/shared/services/docker.nix new file mode 100644 index 0000000..1873a13 --- /dev/null +++ b/system/shared/services/docker.nix @@ -0,0 +1,16 @@ +{ + lib, + config, + ... +}: let + cfg = config.myOptions.system.docker; +in { + config = lib.mkIf cfg.enable { + virtualisation.docker = { + enable = true; + storageDriver = "btrfs"; + + daemon.settings.data-root = cfg.data-root; + }; + }; +} From 8f6d4073b09fca092f829ac07fc1e67cfae748c9 Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Mon, 26 Aug 2024 16:56:31 +0200 Subject: [PATCH 3/8] Add lutris --- home/programs/graphical/games/default.nix | 1 + home/programs/graphical/games/lutris.nix | 19 +++++++++++++++++++ hosts/voyager/default.nix | 1 + options/home/programs/default.nix | 1 + 4 files changed, 22 insertions(+) create mode 100644 home/programs/graphical/games/lutris.nix diff --git a/home/programs/graphical/games/default.nix b/home/programs/graphical/games/default.nix index f5d053f..d443723 100644 --- a/home/programs/graphical/games/default.nix +++ b/home/programs/graphical/games/default.nix @@ -1,5 +1,6 @@ _: { imports = [ ./prismlauncher.nix + ./lutris.nix ]; } diff --git a/home/programs/graphical/games/lutris.nix b/home/programs/graphical/games/lutris.nix new file mode 100644 index 0000000..36547a3 --- /dev/null +++ b/home/programs/graphical/games/lutris.nix @@ -0,0 +1,19 @@ +{ + lib, + pkgs, + osConfig, + ... +}: let + inherit (lib) mkIf; + + cfg = osConfig.myOptions.home-manager.programs.games.lutris; +in { + config = mkIf cfg.enable { + home.packages = with pkgs; [ + lutris.override + { + extraPkgs = pkgs: []; + } + ]; + }; +} diff --git a/hosts/voyager/default.nix b/hosts/voyager/default.nix index 1fd0ade..c131af9 100644 --- a/hosts/voyager/default.nix +++ b/hosts/voyager/default.nix @@ -234,6 +234,7 @@ }; games = { steam.enable = true; + lutris.enable = true; prismlauncher.enable = true; }; }; diff --git a/options/home/programs/default.nix b/options/home/programs/default.nix index f0018c0..7b6be36 100644 --- a/options/home/programs/default.nix +++ b/options/home/programs/default.nix @@ -65,6 +65,7 @@ in { games = { steam.enable = mkEnableOption "Steam client"; + lutris.enable = mkEnableOption "Lutris (Open Gaming Platform for Linux)"; prismlauncher.enable = mkEnableOption "PrismLauncher"; }; From af7339c2e754cc6f11e02386b28ee9faaf6ca398 Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Sun, 1 Sep 2024 16:22:22 +0200 Subject: [PATCH 4/8] Add note on backing up LUKS headers --- docs/01_INSTALLATION.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/01_INSTALLATION.md b/docs/01_INSTALLATION.md index 4821e16..8dd0a97 100644 --- a/docs/01_INSTALLATION.md +++ b/docs/01_INSTALLATION.md @@ -49,6 +49,14 @@ cryptsetup open /dev/disk/by-label/NIXCRYPTFS crypfs mkfs.btrfs -L NIXFS /dev/mapper/cryptfs ``` +> [!NOTE] +> For the LUKS encrypted partitions, I'd heavily recommend that you back up the LUKS headers in case of a partial drive failure, so that you're still +> able to recover your remaining data. To do this, you can use the following command: +> +> ```bash +> cryptsetup luksHeaderBackup /dev/device --header-backup-file /mnt/backup/file.img +> ``` + ### BTRFS Subvolumes Now we will split our btrfs partition into the following subvolumes: From 161b754274d4ca1ed027fe0383f95c5ad68634c7 Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Tue, 10 Sep 2024 15:32:35 +0200 Subject: [PATCH 5/8] Use native nix packages in neovim --- .../terminal/editors/neovim/default.nix | 39 +++++++++++++++++-- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/home/programs/terminal/editors/neovim/default.nix b/home/programs/terminal/editors/neovim/default.nix index cb9fa65..93679c9 100644 --- a/home/programs/terminal/editors/neovim/default.nix +++ b/home/programs/terminal/editors/neovim/default.nix @@ -1,26 +1,57 @@ {pkgs, ...}: { - # TODO: Consider switching to nixvim - programs.neovim = { enable = true; viAlias = true; vimAlias = true; # Packages required for: + # # - Mason to build various language servers / linters / formatters from source # - Runtime dependencies of plugins / lang servers / ... withNodeJs = true; withPython3 = true; extraPackages = with pkgs; [ + # Tools for building Mason packages go python3 rustc cargo gcc + cmake + gnumake + + # lang servers + lua-language-server + rust-analyzer + taplo + gopls + marksman + yaml-language-server + ruff + neocmakelsp + bash-language-server + nixd + + # Linters / formatters + stylua + shfmt + gofumpt + gotools + sqlfluff + hadolint + markdownlint-cli2 + nodePackages.prettier + shellcheck + shfmt + alejandra deadnix statix - alejandra - nixd + + # Other tools / utilities + ripgrep + fd + jq + lazygit ]; }; } From 7c6fb65431754234c5267ba52b67cdcda4706ac1 Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Tue, 10 Sep 2024 15:32:52 +0200 Subject: [PATCH 6/8] Persist venv-selector --- hosts/voyager/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/hosts/voyager/default.nix b/hosts/voyager/default.nix index c131af9..820d8ff 100644 --- a/hosts/voyager/default.nix +++ b/hosts/voyager/default.nix @@ -88,6 +88,7 @@ ".config/github-copilot" ".config/ipython" ".cache/pre-commit" + ".cache/venv-selector" ".local/share/direnv" # Services From b7e8083c15011f91545d8fad350f79844a96a33b Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Tue, 10 Sep 2024 16:51:32 +0200 Subject: [PATCH 7/8] nix: Update --- flake.lock | 108 ++++++++++++++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 54 deletions(-) diff --git a/flake.lock b/flake.lock index 90182c4..f3aab81 100644 --- a/flake.lock +++ b/flake.lock @@ -132,11 +132,11 @@ ] }, "locked": { - "lastModified": 1719994518, - "narHash": "sha256-pQMhCCHyQGRzdfAkdJ4cIWiw+JNuWsTX7f0ZYSyz0VY=", + "lastModified": 1725234343, + "narHash": "sha256-+ebgonl3NbiKD2UD0x4BszCZQ6sTfL4xioaM49o5B3Y=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "9227223f6d922fee3c7b190b2cc238a99527bbb7", + "rev": "567b938d64d4b4112ee253b9274472dc3a346eb6", "type": "github" }, "original": { @@ -153,11 +153,11 @@ ] }, "locked": { - "lastModified": 1717285511, - "narHash": "sha256-iKzJcpdXih14qYVcZ9QC9XuZYnPc6T8YImb6dX166kw=", + "lastModified": 1722555600, + "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "2a55567fcf15b1b1c7ed712a2c6fadaec7412ea8", + "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", "type": "github" }, "original": { @@ -257,11 +257,11 @@ ] }, "locked": { - "lastModified": 1719226092, - "narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=", + "lastModified": 1724947644, + "narHash": "sha256-MHHrHasTngp7EYQOObHJ1a/IsRF+wodHqOckhH6uZbk=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5", + "rev": "dba4367b9a9d9615456c430a6d6af716f6e84cef", "type": "github" }, "original": { @@ -284,11 +284,11 @@ ] }, "locked": { - "lastModified": 1713898448, - "narHash": "sha256-6q6ojsp/Z9P2goqnxyfCSzFOD92T3Uobmj8oVAicUOs=", + "lastModified": 1719226092, + "narHash": "sha256-YNkUMcCUCpnULp40g+svYsaH1RbSEj6s4WdZY/SHe38=", "owner": "hercules-ci", "repo": "hercules-ci-effects", - "rev": "c0302ec12d569532a6b6bd218f698bc402e93adc", + "rev": "11e4b8dc112e2f485d7c97e1cee77f9958f498f5", "type": "github" }, "original": { @@ -303,6 +303,27 @@ "nixpkgs" ] }, + "locked": { + "lastModified": 1725948275, + "narHash": "sha256-4QOPemDQ9VRLQaAdWuvdDBhh+lEUOAnSMHhdr4nS1mk=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "e5fa72bad0c6f533e8d558182529ee2acc9454fe", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "schizofox", + "nixpkgs" + ] + }, "locked": { "lastModified": 1723015306, "narHash": "sha256-jQnFEtH20/OsDPpx71ntZzGdRlpXhUENSQCGTjn//NA=", @@ -317,34 +338,13 @@ "type": "github" } }, - "home-manager_2": { - "inputs": { - "nixpkgs": [ - "schizofox", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1717097707, - "narHash": "sha256-HC5vJ3oYsjwsCaSbkIPv80e4ebJpNvFKQTBOGlHvjLs=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "0eb314b4f0ba337e88123e0b1e57ef58346aafd9", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, "impermanence": { "locked": { - "lastModified": 1719091691, - "narHash": "sha256-AxaLX5cBEcGtE02PeGsfscSb/fWMnyS7zMWBXQWDKbE=", + "lastModified": 1725690722, + "narHash": "sha256-4qWg9sNh5g1qPGO6d/GV2ktY+eDikkBTbWSg5/iD2nY=", "owner": "nix-community", "repo": "impermanence", - "rev": "23c1f06316b67cb5dabdfe2973da3785cfe9c34a", + "rev": "63f4d0443e32b0dd7189001ee1894066765d18a5", "type": "github" }, "original": { @@ -389,11 +389,11 @@ ] }, "locked": { - "lastModified": 1722479120, - "narHash": "sha256-P0fXZvYT56dKd5Zjuao4uQqgw9YFZ5AE2V31f4iluXI=", + "lastModified": 1725503605, + "narHash": "sha256-P/3wqoBMbQfjEtweRIzUBRWL7yj52ODsVPMinvOCFhQ=", "owner": "nixpak", "repo": "nixpak", - "rev": "c53bd63c6851f6972fb1f1f192e608775fb54a9f", + "rev": "baa4b365dd20aa5b56f73bc446e2970a3089c145", "type": "github" }, "original": { @@ -415,11 +415,11 @@ ] }, "locked": { - "lastModified": 1717036060, - "narHash": "sha256-Bm1pBy1goxIz9PD0PRJ9ZgQzl7MQOQ6n5IB4wLNdXrA=", + "lastModified": 1723083542, + "narHash": "sha256-Nkbb3j+P0zMqvZUlV6WbT5erHasZ14NW0TJS3Bb9dVY=", "owner": "nixpak", "repo": "nixpak", - "rev": "3a68b5453f75b1c8e5d31859a654e061a57dc059", + "rev": "d36970c58794c90401617accae0eb48868e335e6", "type": "github" }, "original": { @@ -430,11 +430,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1722813957, - "narHash": "sha256-IAoYyYnED7P8zrBFMnmp7ydaJfwTnwcnqxUElC1I26Y=", + "lastModified": 1725634671, + "narHash": "sha256-v3rIhsJBOMLR8e/RNWxr828tB+WywYIoajrZKFM+0Gg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "cb9a96f23c491c081b38eab96d22fa958043c9fa", + "rev": "574d1eac1c200690e27b8eb4e24887f8df7ac27c", "type": "github" }, "original": { @@ -559,11 +559,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1722689807, - "narHash": "sha256-8YZ2T0o2bcSaXmEbuxIhbb7u4MpVSU7BGdgPpLy6RNk=", + "lastModified": 1725210690, + "narHash": "sha256-iCGXWHn7MeU3uKLw0bQyyl3rvIN7/X2bxZ7buqZgNvU=", "owner": "schizofox", "repo": "schizofox", - "rev": "cd6fbdda984644176ad45bfb4ecfb61fd190b95d", + "rev": "4c554d44b73823d820bb6add4c12411e0ffecd80", "type": "github" }, "original": { @@ -603,11 +603,11 @@ ] }, "locked": { - "lastModified": 1723004010, - "narHash": "sha256-9NaGh1bUlIWrRJXY3qTmX5IFa+5xEP2wf8J0DCi/Wxs=", + "lastModified": 1725941773, + "narHash": "sha256-pvjDesWV1L9LgiqKT1JUlviVFMcH3jVOm/wjt/uqIpg=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "5a4a301de746e16851165b0da8ab6d38ed37b8dd", + "rev": "26955b675c39338e4e1963eaa1f5405890e63fb8", "type": "github" }, "original": { @@ -654,11 +654,11 @@ ] }, "locked": { - "lastModified": 1723046394, - "narHash": "sha256-WvUtvAfuhTL128OIDGgRcKjXkqbLkyypG711nlGmMNw=", + "lastModified": 1725430478, + "narHash": "sha256-W30JZlSiFIUALwFtjIDG5E6LtuUTjHvAVrNlKpuSEt0=", "owner": "abenz1267", "repo": "walker", - "rev": "bb2f7fa6a01ec92388e992cc9a8348e72fa00622", + "rev": "e4a58cd93691d3d9ace67a691bd74d54032c89b0", "type": "github" }, "original": { From 7d1c51a1a3f65b28672469b44e2ec31a6814cad1 Mon Sep 17 00:00:00 2001 From: ItsDrike Date: Tue, 10 Sep 2024 18:24:15 +0200 Subject: [PATCH 8/8] remove windowdance hyprland rule - deprecated --- home/programs/graphical/wms/hyprland/config/window_rules.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/home/programs/graphical/wms/hyprland/config/window_rules.nix b/home/programs/graphical/wms/hyprland/config/window_rules.nix index c242816..b3c309b 100644 --- a/home/programs/graphical/wms/hyprland/config/window_rules.nix +++ b/home/programs/graphical/wms/hyprland/config/window_rules.nix @@ -92,7 +92,6 @@ # # Jetbrains - "windowdance, class:^(jetbrains-.*)$,floating:1" "center, class:^(jetbrains-.*)$,title:^(splash)$,floating:1" "nofocus, class:^(jetbrains-.*)$,title:^(splash)$,floating:1" "noborder, class:^(jetbrains-.*)$,title:^(splash)$,floating:1"