From 138a204f139c28d8b091a2ecc043c36f5e853f03 Mon Sep 17 00:00:00 2001 From: Ethan Reece Date: Wed, 9 Jul 2025 03:42:07 -0500 Subject: [PATCH] Switch to flake-parts modules for treefmt and devshell --- .sops.yaml | 9 +++---- Justfile | 8 ------ README.md | 2 +- flake.lock | 50 +++++++++++++++++++++++++++------- flake.nix | 60 +++++++++++++++++++++++------------------ secrets/secrets.yaml | 64 ++++++++++++++++++++++---------------------- 6 files changed, 112 insertions(+), 81 deletions(-) delete mode 100644 Justfile diff --git a/.sops.yaml b/.sops.yaml index cd7ad2f..189c9a5 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -7,8 +7,7 @@ creation_rules: - path_regex: secrets/* key_groups: - age: - - *laptop - - *vpn - - *vpn_ssh - - *builder - + - *laptop + - *vpn + - *vpn_ssh + - *builder diff --git a/Justfile b/Justfile deleted file mode 100644 index f8c1d9b..0000000 --- a/Justfile +++ /dev/null @@ -1,8 +0,0 @@ -default: - home-manager switch --flake .#sudoer777 -update: - nix flake update -backup: - home-manager switch --flake .#sudoer777 -b backup -man: - man home-configuration.nix diff --git a/README.md b/README.md index d9decec..fd73825 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Laptop configuration -This is the Nix home-manager configuration for my laptop, allowing me to easily manage a user configuration that can quickly be reproduced on other machines. It is currently being used on a foreign distro (Fedora Asahi Remix), but I plan to switch to NixOS when time allows and make it reusable for other systems I am currently using. +This is the Nix home-manager configuration for my laptop, allowing me to easily manage a user configuration that can quickly be reproduced on other machines. It is currently being used on a foreign distro (Fedora Asahi Remix), but I plan to switch to NixOS when time allows and make it reusable for other systems I am currently using. It uses direnv to automatically load the environment for running commands for this Flake. ## Features diff --git a/flake.lock b/flake.lock index 4c4065e..ab77c97 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,23 @@ { "nodes": { + "devshell": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1741473158, + "narHash": "sha256-kWNaq6wQUbUMlPgw8Y+9/9wP0F8SHkjy24/mN3UAppg=", + "owner": "numtide", + "repo": "devshell", + "rev": "7c9e793ebe66bcba8292989a68c0419b737a22a0", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": [ @@ -127,9 +145,7 @@ "inputs": { "flake-utils": "flake-utils", "flakey-profile": "flakey-profile", - "lix": [ - "lix" - ], + "lix": "lix", "nixpkgs": [ "nixpkgs" ] @@ -168,6 +184,22 @@ } }, "nixpkgs": { + "locked": { + "lastModified": 1722073938, + "narHash": "sha256-OpX0StkL8vpXyWOGUD6G+MA26wAXK6SpT94kLJXo6B4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e36e9f57337d0ff0cf77aceb58af4c805472bfae", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { "locked": { "lastModified": 1749776303, "narHash": "sha256-OHibOvVwKqO1qvRg0r3agtd1EagW4THBcoWT7QGgcNo=", @@ -183,7 +215,7 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs_3": { "locked": { "lastModified": 1749285348, "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", @@ -199,7 +231,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_4": { "locked": { "lastModified": 1747958103, "narHash": "sha256-qmmFCrfBwSHoWw7cVK4Aj+fns+c54EBP8cGqp/yK410=", @@ -218,7 +250,7 @@ "nur": { "inputs": { "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_2", + "nixpkgs": "nixpkgs_3", "treefmt-nix": "treefmt-nix" }, "locked": { @@ -237,12 +269,12 @@ }, "root": { "inputs": { + "devshell": "devshell", "flake-parts": "flake-parts", "home-manager": "home-manager", - "lix": "lix", "lix-module": "lix-module", "nixgl": "nixgl", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "nur": "nur", "sops-nix": "sops-nix", "treefmt-nix": "treefmt-nix_2" @@ -306,7 +338,7 @@ }, "treefmt-nix_2": { "inputs": { - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_4" }, "locked": { "lastModified": 1750931469, diff --git a/flake.nix b/flake.nix index a6190a0..fcf9323 100644 --- a/flake.nix +++ b/flake.nix @@ -2,6 +2,7 @@ { description = "Home Manager configuration"; inputs = { + devshell.url = "github:numtide/devshell"; flake-parts = { url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; @@ -10,14 +11,9 @@ url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; }; - lix = { - url = "https://git.lix.systems/lix-project/lix/archive/main.tar.gz"; - flake = false; - }; lix-module = { url = "https://git.lix.systems/lix-project/nixos-module/archive/main.tar.gz"; inputs.nixpkgs.follows = "nixpkgs"; - inputs.lix.follows = "lix"; }; nixgl = { url = "github:nix-community/nixGL"; @@ -40,20 +36,17 @@ systems = [ "aarch64-linux" ]; imports = [ inputs.home-manager.flakeModules.home-manager + inputs.treefmt-nix.flakeModule + inputs.devshell.flakeModule # ./home/flake-module.nix ]; flake = { homeConfigurations = { asahi = withSystem "aarch64-linux" ( - ctx@{ - config, - inputs', - pkgs, - ... - }: + { pkgs, ... }: inputs.home-manager.lib.homeManagerConfiguration { inherit pkgs; - extraSpecialArgs = { inherit inputs inputs' pkgs; }; + extraSpecialArgs = { inherit inputs pkgs; }; modules = [ ./home/home.nix inputs.lix-module.nixosModules.default @@ -65,7 +58,7 @@ }; }; perSystem = - { self', system, ... }: + { system, config, ... }: let pkgs = import inputs.nixpkgs { inherit system; @@ -74,32 +67,47 @@ inputs.nixgl.overlays.default ]; }; - treefmtEval = inputs.treefmt-nix.lib.evalModule pkgs ./treefmt.nix; - treefmtWrapper = treefmtEval.config.build.wrapper; in { _module.args.pkgs = pkgs; - _module.args.treefmtEval = treefmtEval; - devShells.default = pkgs.mkShell { - buildInputs = [ - inputs.lix.outPath - inputs.sops-nix.nixosModules.sops + devshells.default = { + commands = [ + { + help = "`home-manager switch` for asahi"; + name = "switch-asahi"; + command = "home-manager switch --flake .#asahi"; + } + { + help = "`home-manager switch` for asahi with backup"; + name = "switch-asahi-backup"; + command = "home-manager switch --flake .#asahi -b backup"; + } + { + help = "update dependencies"; + name = "update"; + command = "nix flake update"; + } + { + help = "show home-manager documentation"; + name = "man-home"; + command = "man home-configuration.nix"; + } + ]; + packages = [ + config.treefmt.build.wrapper pkgs.age pkgs.forgejo-cli pkgs.helix - pkgs.just + pkgs.lix pkgs.marksman pkgs.nil + pkgs.sops pkgs.taplo pkgs.uutils-coreutils pkgs.yaml-language-server - treefmtWrapper ]; }; - # formatter.${system} = treefmtWrapper; - # checks.${system} = { - # formatting = treefmtEval.config.build.check self; - # }; + treefmt = ./treefmt.nix; }; } ); diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml index 9dfa5c7..860ddb2 100644 --- a/secrets/secrets.yaml +++ b/secrets/secrets.yaml @@ -1,34 +1,34 @@ openrouter_api_key: ENC[AES256_GCM,data:V/JK4bZb6ps22fseIz01AuXqHG+jGy1un3GzJNR5JL2y7WynHdVp9xsK01D4HoYApxYhbKG87VM2/40MSdfu46Rd7e6BwGCaiw==,iv:BMHPFzpu99911v3tBNvuZSzRiXpi+hJ+o/aGL3O/xPc=,tag:iXNV+chWGbUKUaghv6Rytw==,type:str] sops: - age: - - recipient: age1thulhunl9qf552rnlvhrdjrfy3udhfy43389thm5ehr09ycrwcsqdjd25q - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDbkV1UUo0b0FzSVZ6ZTUw - cjdFNkpVOXFRanNuQkZWTlo4MjNVUTlyS1d3Ck9LVW9aemRTaFdLV0xnRGFuZUhT - QW5ab29kWmFjOWpvOEdXWjRMUkZWYUUKLS0tIHcxbWVjMlFMR2p4eWFrL1o5U3RR - akhEeWtRRHN5OG9ndzRVRS8rcm45RFEKa3Blj75nqr/tlzsHR4TIuGmUZiQvC2xI - cS1Zaja1WlcdRw6S8YapYF3jpP9fCPLun4vDQTPfuqMTt2R38TrO1w== - -----END AGE ENCRYPTED FILE----- - - recipient: age1emavxf6jydt0f8nt7y5xyagthhh0hcc3f0kthtt2yx0am7df3vdqw7uwk6 - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3MmphS0kwMkh5eVAveGFy - eVVqb3dITFRQQWx4cUdybXlNMGNEbUlDcVNRCkVkQlh5eGo0SkNVQ3k5c25LQUxU - ZHlMdEEvRXBMQVFVVjZtK2U1cU9KRTQKLS0tIGtlMHJRbThhZHBvSHlFQlFIdEtT - d25YNzhHekQrSUtyNklBcVIwalY3ek0KVYnN1qvmmcVPWZ1u+HwM8Ua+BbMOky7B - qXLuKB7yz2/utw9ACm6kzd28CB5kBIELdsv0GvmexV73cYe7h/w71w== - -----END AGE ENCRYPTED FILE----- - - recipient: age1gqtj74kr2yumd7wkaf83j2ctlmltv6ykvkwna4thjjmr0v0tts6qnt5dc0 - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1QmJsOEJGM2JOV2FRQ0Y2 - Ui9uRGNmTkRneUpLR3ZRb0VqYWJvTlRzOHlJCkgwa0R6em1ndWMvVDZ6cW5idElz - UG8zaVNNdWJiRStocHkzc1Z2T0dVVWMKLS0tIHhSTEgwRXpPdXR2b1BqQnF2RVp4 - bUZvN0pwdHBuYkN5M2JaOVExcXVFcmcKGPvIgMyzqBI2fUCU/83rPjnRHVKm0G43 - nCbcF+TwcvNzgS8rGD3of8OeyK3D03jIJla9zVFBSWZ/zA5YHIHkgg== - -----END AGE ENCRYPTED FILE----- - lastmodified: "2025-07-08T06:03:47Z" - mac: ENC[AES256_GCM,data:QDbGVibN23+BYfPfpw49qPVKF2k76ANaaMaxcWDIaPHvNdIcT+CdNl6Y+HJgayZjBA8W03djnm7Sts+4ijt8+SWuw5pHBmSqs4h5cZ7Vb2SAKjTYz2vPKb3aBHChWLpeIeL9Ihcn2GKqAl8D7PUP7i+YvC8Owr+U5xND/zaHCJ8=,iv:5ERCUXnjVpiOBLeswkEYT/R3sHqBF6kyDZ78L8/pyTo=,tag:Dki4cKMF66MxqBLbjuItZg==,type:str] - unencrypted_suffix: _unencrypted - version: 3.10.2 + age: + - recipient: age1thulhunl9qf552rnlvhrdjrfy3udhfy43389thm5ehr09ycrwcsqdjd25q + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBDbkV1UUo0b0FzSVZ6ZTUw + cjdFNkpVOXFRanNuQkZWTlo4MjNVUTlyS1d3Ck9LVW9aemRTaFdLV0xnRGFuZUhT + QW5ab29kWmFjOWpvOEdXWjRMUkZWYUUKLS0tIHcxbWVjMlFMR2p4eWFrL1o5U3RR + akhEeWtRRHN5OG9ndzRVRS8rcm45RFEKa3Blj75nqr/tlzsHR4TIuGmUZiQvC2xI + cS1Zaja1WlcdRw6S8YapYF3jpP9fCPLun4vDQTPfuqMTt2R38TrO1w== + -----END AGE ENCRYPTED FILE----- + - recipient: age1emavxf6jydt0f8nt7y5xyagthhh0hcc3f0kthtt2yx0am7df3vdqw7uwk6 + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3MmphS0kwMkh5eVAveGFy + eVVqb3dITFRQQWx4cUdybXlNMGNEbUlDcVNRCkVkQlh5eGo0SkNVQ3k5c25LQUxU + ZHlMdEEvRXBMQVFVVjZtK2U1cU9KRTQKLS0tIGtlMHJRbThhZHBvSHlFQlFIdEtT + d25YNzhHekQrSUtyNklBcVIwalY3ek0KVYnN1qvmmcVPWZ1u+HwM8Ua+BbMOky7B + qXLuKB7yz2/utw9ACm6kzd28CB5kBIELdsv0GvmexV73cYe7h/w71w== + -----END AGE ENCRYPTED FILE----- + - recipient: age1gqtj74kr2yumd7wkaf83j2ctlmltv6ykvkwna4thjjmr0v0tts6qnt5dc0 + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA1QmJsOEJGM2JOV2FRQ0Y2 + Ui9uRGNmTkRneUpLR3ZRb0VqYWJvTlRzOHlJCkgwa0R6em1ndWMvVDZ6cW5idElz + UG8zaVNNdWJiRStocHkzc1Z2T0dVVWMKLS0tIHhSTEgwRXpPdXR2b1BqQnF2RVp4 + bUZvN0pwdHBuYkN5M2JaOVExcXVFcmcKGPvIgMyzqBI2fUCU/83rPjnRHVKm0G43 + nCbcF+TwcvNzgS8rGD3of8OeyK3D03jIJla9zVFBSWZ/zA5YHIHkgg== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2025-07-08T06:03:47Z" + mac: ENC[AES256_GCM,data:QDbGVibN23+BYfPfpw49qPVKF2k76ANaaMaxcWDIaPHvNdIcT+CdNl6Y+HJgayZjBA8W03djnm7Sts+4ijt8+SWuw5pHBmSqs4h5cZ7Vb2SAKjTYz2vPKb3aBHChWLpeIeL9Ihcn2GKqAl8D7PUP7i+YvC8Owr+U5xND/zaHCJ8=,iv:5ERCUXnjVpiOBLeswkEYT/R3sHqBF6kyDZ78L8/pyTo=,tag:Dki4cKMF66MxqBLbjuItZg==,type:str] + unencrypted_suffix: _unencrypted + version: 3.10.2