A fork of attic a self-hostable Nix Binary Cache server
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

flake: Allow overriding Rust toolchain

+110 -73
+1 -1
flake/devshells.nix
··· 35 35 cfg = config.attic.devshell; 36 36 in { 37 37 attic.devshell.packageSets = with pkgs; { 38 - rustc = [ 38 + rustc = lib.optionals (config.attic.toolchain == null) [ 39 39 rustc 40 40 ]; 41 41
+109 -72
flake/packages.nix
··· 1 - { self, inputs, lib, makeCranePkgs, ... }: 1 + { self 2 + , lib 3 + , flake-parts-lib 4 + , inputs 5 + , config 6 + , makeCranePkgs 7 + , getSystem 8 + , ... 9 + }: 10 + 2 11 let 3 - defaultMakeCranePkgs = pkgs: let 4 - craneLib = inputs.crane.mkLib pkgs; 5 - in pkgs.callPackage ../crane.nix { inherit craneLib; }; 12 + inherit (lib) 13 + mkOption 14 + types 15 + ; 16 + inherit (flake-parts-lib) 17 + mkPerSystemOption 18 + ; 6 19 in 7 20 { 8 - _module.args.makeCranePkgs = lib.mkDefault defaultMakeCranePkgs; 21 + options = { 22 + perSystem = mkPerSystemOption { 23 + options.attic = { 24 + toolchain = mkOption { 25 + type = types.nullOr types.package; 26 + default = null; 27 + }; 28 + }; 29 + }; 30 + }; 31 + 32 + config = { 33 + _module.args.makeCranePkgs = lib.mkDefault (pkgs: let 34 + perSystemConfig = getSystem pkgs.system; 35 + craneLib = builtins.foldl' (acc: f: f acc) pkgs [ 36 + inputs.crane.mkLib 37 + (craneLib: 38 + if perSystemConfig.attic.toolchain == null then craneLib 39 + else craneLib.overrideToolchain config.attic.toolchain 40 + ) 41 + ]; 42 + in pkgs.callPackage ../crane.nix { 43 + inherit craneLib; 44 + }); 9 45 10 - perSystem = { self', pkgs, cranePkgs, ... }: (lib.mkMerge [ 11 - { 12 - _module.args.cranePkgs = makeCranePkgs pkgs; 46 + perSystem = { self', pkgs, config, cranePkgs, ... }: (lib.mkMerge [ 47 + { 48 + _module.args.cranePkgs = makeCranePkgs pkgs; 13 49 14 - packages = { 15 - default = self'.packages.attic; 50 + packages = { 51 + default = self'.packages.attic; 16 52 17 - inherit (cranePkgs) 18 - attic 19 - attic-client 20 - attic-server 21 - ; 53 + inherit (cranePkgs) 54 + attic 55 + attic-client 56 + attic-server 57 + ; 22 58 23 - attic-nixpkgs = pkgs.callPackage ../package.nix { }; 59 + attic-nixpkgs = pkgs.callPackage ../package.nix { }; 24 60 25 - attic-ci-installer = pkgs.callPackage ../ci-installer.nix { 26 - inherit self; 27 - }; 61 + attic-ci-installer = pkgs.callPackage ../ci-installer.nix { 62 + inherit self; 63 + }; 28 64 29 - book = pkgs.callPackage ../book { 30 - attic = self'.packages.attic; 65 + book = pkgs.callPackage ../book { 66 + attic = self'.packages.attic; 67 + }; 31 68 }; 32 - }; 33 - } 69 + } 34 70 35 - (lib.mkIf pkgs.stdenv.isLinux { 36 - packages = { 37 - attic-server-image = pkgs.dockerTools.buildImage { 38 - name = "attic-server"; 39 - tag = "main"; 40 - copyToRoot = [ 41 - self'.packages.attic-server 71 + (lib.mkIf pkgs.stdenv.isLinux { 72 + packages = { 73 + attic-server-image = pkgs.dockerTools.buildImage { 74 + name = "attic-server"; 75 + tag = "main"; 76 + copyToRoot = [ 77 + self'.packages.attic-server 42 78 43 - # Debugging utilities for `fly ssh console` 44 - pkgs.busybox 79 + # Debugging utilities for `fly ssh console` 80 + pkgs.busybox 45 81 46 - # Now required by the fly.io sshd 47 - pkgs.dockerTools.fakeNss 48 - ]; 49 - config = { 50 - Entrypoint = [ "${self'.packages.attic-server}/bin/atticd" ]; 51 - Env = [ 52 - "SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" 82 + # Now required by the fly.io sshd 83 + pkgs.dockerTools.fakeNss 53 84 ]; 85 + config = { 86 + Entrypoint = [ "${self'.packages.attic-server}/bin/atticd" ]; 87 + Env = [ 88 + "SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt" 89 + ]; 90 + }; 54 91 }; 55 92 }; 56 - }; 57 - }) 93 + }) 58 94 59 - # Unfortunately, x86_64-darwin fails to evaluate static builds 60 - (lib.mkIf (pkgs.system != "x86_64-darwin") { 61 - packages = { 62 - # TODO: Make this work with Crane 63 - attic-static = (pkgs.pkgsStatic.callPackage ../package.nix { 64 - nix = pkgs.pkgsStatic.nix.overrideAttrs (old: { 65 - patches = (old.patches or []) ++ [ 66 - # To be submitted 67 - (pkgs.fetchpatch { 68 - url = "https://github.com/NixOS/nix/compare/3172c51baff5c81362fcdafa2e28773c2949c660...6b09a02536d5946458b537dfc36b7d268c9ce823.diff"; 69 - hash = "sha256-LFLq++J2XitEWQ0o57ihuuUlYk2PgUr11h7mMMAEe3c="; 70 - }) 95 + # Unfortunately, x86_64-darwin fails to evaluate static builds 96 + (lib.mkIf (pkgs.system != "x86_64-darwin") { 97 + packages = { 98 + # TODO: Make this work with Crane 99 + attic-static = (pkgs.pkgsStatic.callPackage ../package.nix { 100 + nix = pkgs.pkgsStatic.nix.overrideAttrs (old: { 101 + patches = (old.patches or []) ++ [ 102 + # To be submitted 103 + (pkgs.fetchpatch { 104 + url = "https://github.com/NixOS/nix/compare/3172c51baff5c81362fcdafa2e28773c2949c660...6b09a02536d5946458b537dfc36b7d268c9ce823.diff"; 105 + hash = "sha256-LFLq++J2XitEWQ0o57ihuuUlYk2PgUr11h7mMMAEe3c="; 106 + }) 107 + ]; 108 + }); 109 + }).overrideAttrs (old: { 110 + nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ 111 + pkgs.nukeReferences 71 112 ]; 72 - }); 73 - }).overrideAttrs (old: { 74 - nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ 75 - pkgs.nukeReferences 76 - ]; 77 113 78 - # Read by pkg_config crate (do some autodetection in build.rs?) 79 - PKG_CONFIG_ALL_STATIC = "1"; 114 + # Read by pkg_config crate (do some autodetection in build.rs?) 115 + PKG_CONFIG_ALL_STATIC = "1"; 80 116 81 - "NIX_CFLAGS_LINK_${pkgs.pkgsStatic.stdenv.cc.suffixSalt}" = "-lc"; 82 - RUSTFLAGS = "-C relocation-model=static"; 117 + "NIX_CFLAGS_LINK_${pkgs.pkgsStatic.stdenv.cc.suffixSalt}" = "-lc"; 118 + RUSTFLAGS = "-C relocation-model=static"; 83 119 84 - postFixup = (old.postFixup or "") + '' 85 - rm -f $out/nix-support/propagated-build-inputs 86 - nuke-refs $out/bin/attic 87 - ''; 88 - }); 120 + postFixup = (old.postFixup or "") + '' 121 + rm -f $out/nix-support/propagated-build-inputs 122 + nuke-refs $out/bin/attic 123 + ''; 124 + }); 89 125 90 - attic-client-static = self'.packages.attic-static.override { 91 - clientOnly = true; 126 + attic-client-static = self'.packages.attic-static.override { 127 + clientOnly = true; 128 + }; 92 129 }; 93 - }; 94 - }) 95 - ]); 130 + }) 131 + ]); 132 + }; 96 133 }