# Adapted from Mic92/dotfiles { self , flake-utils , nixpkgs , home-manager , nixos-hardware , ... }: (flake-utils.lib.eachSystem ["x86_64-linux"] (system: let pkgs = nixpkgs.legacyPackages.${system}; selfPkgs = self.packages.${system}; pythonPackages = import ./pkgs/python-pkgs; python3Packages = pythonPackages { callPackage = pkgs.python3Packages.callPackage; }; #lib = import ./lib; in { apps.deploy = { type = "app"; program = toString (pkgs.writeScript "deploy" '' #!${pkgs.runtimeShell} nixos-rebuild switch --upgrade --flake ".#$1" --target-host "$1.dadada.li" --build-host localhost --use-remote-sudo ''); }; apps.hm-switch = { type = "app"; program = toString (pkgs.writeScript "hm-switch" '' #!${pkgs.runtimeShell} set -eu -o pipefail -x tmpdir=$(mktemp -d) export PATH=${pkgs.lib.makeBinPath [ pkgs.coreutils pkgs.nixFlakes pkgs.jq ]} trap "rm -rf $tmpdir" EXIT declare -A profiles=(["gorgon"]="home" ["timsch-nb"]="work") profile=''${profiles[$HOSTNAME]:-common} flake=$(nix flake metadata --json ${./.} | jq -r .url) nix build --show-trace --out-link "$tmpdir/result" "$flake#hmConfigurations.''${profile}.activationPackage" "$@" link=$(realpath $tmpdir/result) $link/activate ''); }; apps.recipemd = { type = "app"; program = "${selfPkgs.recipemd}/bin/recipemd"; }; devShell = pkgs.callPackage ./shell.nix { deploy = selfPkgs.deploy; }; packages = flake-utils.lib.flattenTree { deploy = pkgs.callPackage ./pkgs/deploy.nix { }; scripts = pkgs.callPackage ./pkgs/scripts.nix { }; keys = pkgs.callPackage ./pkgs/keys { }; homePage = pkgs.callPackage ./pkgs/homePage { }; recipemd = pkgs.python3Packages.toPythonApplication python3Packages.recipemd; }; })) // { hmConfigurations = import ./home/configurations.nix { inherit self nixpkgs home-manager; }; hmModules = import ./home/modules; nixosConfigurations = import ./nixos/configurations.nix { nixosSystem = nixpkgs.lib.nixosSystem; inherit self nixpkgs home-manager nixos-hardware; }; nixosModule = import ./nixos/modules; overlays = import ./overlays; pythonPackages = import ./pkgs/python-pkgs; hydraJobs = ( nixpkgs.lib.mapAttrs' (name: config: nixpkgs.lib.nameValuePair name config.config.system.build.toplevel) self.nixosConfigurations ) // (nixpkgs.lib.mapAttrs' (name: config: nixpkgs.lib.nameValuePair name config.activation-script) self.hmConfigurations ); }