hercules-ci / flake-parts

❄️ Simplify Nix Flakes with the module system
https://flake.parts
MIT License
721 stars 41 forks source link

document how to use unfree template #135

Open lizelive opened 1 year ago

lizelive commented 1 year ago

thought i should just add flake-parts.flakeModules.unfree but that doesn't work also tried moving the allowUnfree into another file but can't figure out where to import nixpkgs

# Definitions can be imported from a separate file like this one

{ self, lib, ... }: {
  perSystem = { config, self', inputs', pkgs, system, ... }: {
    _module.args.pkgs = import nixpkgs {
      inherit system;
      config.allowUnfree = true;
    };
  };
  flake = {
  };
}
{
  description = "mlws";

  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    devenv.url = "github:cachix/devenv";
    nix2container.url = "github:nlewo/nix2container";
    nix2container.inputs.nixpkgs.follows = "nixpkgs";
    mk-shell-bin.url = "github:rrbutani/nix-mk-shell-bin";
  };

  outputs = inputs@{ flake-parts, nixpkgs, ... }:
  let x = 1;
  in
    flake-parts.lib.mkFlake { inherit inputs; } {
      imports = [
        inputs.devenv.flakeModule
        flake-parts.flakeModules.unfree
      ];
      systems = [ "x86_64-linux" "i686-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ];

      perSystem = { config, self', inputs', pkgs, system, ... }: {
        # Per-system attributes can be defined here. The self' and inputs'
        # module parameters provide easy access to attributes of the same
        # system.
        # _module.args.pkgs = import nixpkgs {
        #   inherit system;
        #   config.allowUnfree = true;
        # };
        # Equivalent to  inputs'.nixpkgs.legacyPackages.hello;
        packages.default = pkgs.hello;

        devenv.shells.default = {
          name = "mlws";
          languages.python.enable = true;
          languages.python.poetry.enable = true;
          # https://devenv.sh/reference/options/
          packages = [ pkgs.cudatoolkit ];

          # enterShell = ''
          #   hello
          # '';
        };

      };
      flake = {
        # The usual flake attributes can be defined here, including system-
        # agnostic ones like nixosModule and system-enumerating ones, although
        # those are more easily expressed in perSystem.

      };
    };
}