http://pkgs.tgirl.cloud/
at main 4.4 kB view raw
1{ 2 inputs.nixpkgs.url = "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz"; 3 4 outputs = 5 { 6 self, 7 nixpkgs, 8 ... 9 }: 10 let 11 inherit (nixpkgs) lib; 12 13 outputSystems = lib.systems.flakeExposed; 14 cachedSystems = [ 15 "x86_64-linux" 16 "aarch64-linux" 17 "aarch64-darwin" 18 ]; 19 devSystems = [ 20 "x86_64-linux" 21 "aarch64-linux" 22 "x86_64-darwin" 23 "aarch64-darwin" 24 ]; 25 26 forAllSystems = 27 systems: fn: 28 lib.genAttrs systems ( 29 system: 30 fn ( 31 import nixpkgs { 32 inherit system; 33 config.allowUnfree = true; 34 } 35 ) 36 ); 37 38 mkModule = 39 { 40 name ? "default", 41 class, 42 file, 43 }: 44 { 45 _class = class; 46 _file = "${self.outPath}/flake.nix#${class}Modules.${name}"; 47 48 imports = [ (import file { tgirlpkgsSelf = self; }) ]; 49 }; 50 in 51 { 52 packages = forAllSystems outputSystems ( 53 pkgs: 54 lib.filterAttrs ( 55 _: pkg: 56 let 57 isDerivation = lib.isDerivation pkg; 58 availableOnHost = lib.meta.availableOn pkgs.stdenv.hostPlatform pkg; 59 isBroken = pkg.meta.broken or false; 60 in 61 isDerivation && !isBroken && availableOnHost 62 ) self.legacyPackages.${pkgs.stdenv.hostPlatform.system} 63 ); 64 65 # a raw unfilted scope of packages 66 legacyPackages = forAllSystems outputSystems (pkgs: import ./default.nix { inherit pkgs; }); 67 68 hydraJobs = forAllSystems cachedSystems ( 69 pkgs: 70 lib.filterAttrs ( 71 _: pkg: 72 let 73 isDerivation = lib.isDerivation pkg; 74 availableOnHost = lib.meta.availableOn pkgs.stdenv.hostPlatform pkg; 75 isCross = pkg.stdenv.buildPlatform != pkg.stdenv.targetPlatform; 76 isBroken = pkg.meta.broken or false; 77 isCacheable = !(pkg.preferLocalBuild or false); 78 in 79 isDerivation && (availableOnHost || isCross) && !isBroken && isCacheable 80 ) self.legacyPackages.${pkgs.stdenv.hostPlatform.system} 81 ); 82 83 # taken and slightly modified from 84 # https://github.com/lilyinstarlight/nixos-cosmic/blob/0b0e62252fb3b4e6b0a763190413513be499c026/flake.nix#L81 85 apps = forAllSystems devSystems (pkgs: { 86 update = { 87 type = "app"; 88 program = lib.getExe ( 89 pkgs.writeShellApplication { 90 name = "update"; 91 92 text = lib.concatStringsSep "\n" ( 93 lib.mapAttrsToList ( 94 name: pkg: 95 if pkg ? updateScript && (lib.isList pkg.updateScript) then 96 lib.escapeShellArgs ( 97 if (lib.match "nix-update|.*/nix-update" (lib.head pkg.updateScript) != null) then 98 pkg.updateScript 99 ++ [ 100 "--commit" 101 name 102 ] 103 else 104 pkg.updateScript 105 ) 106 else 107 toString pkg.updateScript or "# no update script for ${name}" 108 ) self.legacyPackages.${pkgs.stdenv.hostPlatform.system} 109 ); 110 } 111 ); 112 }; 113 }); 114 115 devShells = forAllSystems devSystems (pkgs: { 116 default = pkgs.callPackage ./shell.nix { }; 117 }); 118 119 formatter = forAllSystems devSystems (pkgs: pkgs.nixfmt-tree); 120 121 overlays.default = _: prev: import ./default.nix { pkgs = prev; }; 122 123 nixosModules.default = mkModule { 124 class = "nixos"; 125 file = ./modules/nixos; 126 }; 127 128 darwinModules.default = mkModule { 129 class = "darwin"; 130 file = ./modules/darwin; 131 }; 132 133 homeModules.default = mkModule { 134 class = "homeManager"; 135 file = ./modules/home-manager; 136 }; 137 138 homeManagerModules = lib.mapAttrs ( 139 _: 140 lib.warn "Flake attribute 'tgirlpkgs.homeManagerModules' is deprecated and will be removed in the future. Use 'tgirlpkgs.homeModules' instead." 141 ) self.homeModules; 142 }; 143 144 nixConfig = { 145 extra-substituters = [ "https://cache.tgirl.cloud/tgirlcloud" ]; 146 extra-trusted-public-keys = [ "tgirlcloud:EaOlHrpuOI6Zwmir3/MzqS9uA0Xn3gYr15/k/v0HIPo=" ]; 147 }; 148}