nix packaging
Still requires manual addition of modules and tweaking pagefind.
This commit is contained in:
		
							parent
							
								
									ffdbd0e614
								
							
						
					
					
						commit
						a787497feb
					
				
					 5 changed files with 147 additions and 9 deletions
				
			
		
							
								
								
									
										16
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,5 +1,7 @@
 | 
			
		|||
# build output
 | 
			
		||||
dist/
 | 
			
		||||
/result
 | 
			
		||||
 | 
			
		||||
# generated types
 | 
			
		||||
.astro/
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -13,17 +15,13 @@ yarn-debug.log*
 | 
			
		|||
yarn-error.log*
 | 
			
		||||
pnpm-debug.log*
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# environment variables
 | 
			
		||||
.env
 | 
			
		||||
.env.production
 | 
			
		||||
 | 
			
		||||
# macOS-specific files
 | 
			
		||||
.DS_Store
 | 
			
		||||
 | 
			
		||||
# jetbrains setting folder
 | 
			
		||||
# IDE folders
 | 
			
		||||
.idea/
 | 
			
		||||
.vscode/
 | 
			
		||||
 | 
			
		||||
# direnv
 | 
			
		||||
/.envrc
 | 
			
		||||
/.direnv/
 | 
			
		||||
 | 
			
		||||
modules/
 | 
			
		||||
modules_old/
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										82
									
								
								default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,82 @@
 | 
			
		|||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  stdenv,
 | 
			
		||||
  nix-gitignore,
 | 
			
		||||
 | 
			
		||||
  yarn-berry,
 | 
			
		||||
  nodejs,
 | 
			
		||||
  cacert,
 | 
			
		||||
}: stdenv.mkDerivation (final: let
 | 
			
		||||
  nodeModules = stdenv.mkDerivation {
 | 
			
		||||
    pname = "${final.pname}-node_modules";
 | 
			
		||||
    version = final.version;
 | 
			
		||||
 | 
			
		||||
    src = final.src;
 | 
			
		||||
 | 
			
		||||
    nativeBuildInputs = [ nodejs yarn-berry cacert ];
 | 
			
		||||
 | 
			
		||||
    configurePhase = ''
 | 
			
		||||
      mkdir garbage-tooling
 | 
			
		||||
 | 
			
		||||
      cat <<EOF > .yarnrc.yml
 | 
			
		||||
      enableTelemetry: false
 | 
			
		||||
      enableInlineBuilds: true
 | 
			
		||||
      enableProgressBars: false
 | 
			
		||||
      enableGlobalCache: false
 | 
			
		||||
      nodeLinker: node-modules
 | 
			
		||||
      EOF
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    buildPhase = ''
 | 
			
		||||
      # build will fail once due to missing nodejs executable
 | 
			
		||||
      # linking before running this won't work, it will just delete it
 | 
			
		||||
      HOME=$(pwd)/garbage-tooling yarn install || true
 | 
			
		||||
 | 
			
		||||
      mkdir -p node_modules/node/bin
 | 
			
		||||
      ln -s ${nodejs}/bin/node node_modules/node/bin/node
 | 
			
		||||
 | 
			
		||||
      HOME=$(pwd)/garbage-tooling yarn install
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    installPhase = ''
 | 
			
		||||
      # none of the cache path configs in yarnrc actually do anything
 | 
			
		||||
      # so we just copy node_modules manually
 | 
			
		||||
 | 
			
		||||
      rm node_modules/node/bin/node # remove dep on nix package for output hash
 | 
			
		||||
      mv node_modules $out
 | 
			
		||||
    '';
 | 
			
		||||
 | 
			
		||||
    fixupPhase = "true";
 | 
			
		||||
 | 
			
		||||
    outputHashMode = "recursive";
 | 
			
		||||
    outputHashAlgo = "sha256";
 | 
			
		||||
    outputHash = "rKoDjvG5t+aQRrzAz0eTifPtL3zmWAu/emxXWd1ocxM=";
 | 
			
		||||
  };
 | 
			
		||||
in {
 | 
			
		||||
  pname = "quickshell-web";
 | 
			
		||||
  version = "0.1.0";
 | 
			
		||||
 | 
			
		||||
  src = nix-gitignore.gitignoreSource [] ./.;
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ yarn-berry ];
 | 
			
		||||
 | 
			
		||||
  configurePhase = ''
 | 
			
		||||
    mkdir garbage-tooling
 | 
			
		||||
 | 
			
		||||
    cat <<EOF > .yarnrc.yml
 | 
			
		||||
    enableInlineBuilds: true
 | 
			
		||||
    enableProgressBars: false
 | 
			
		||||
    enableGlobalCache: false
 | 
			
		||||
    enableNetwork: false
 | 
			
		||||
    nodeLinker: node-modules
 | 
			
		||||
    EOF
 | 
			
		||||
 | 
			
		||||
    cp -r ${nodeModules} node_modules
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  buildPhase = ''
 | 
			
		||||
    HOME=$(pwd)/garbage-tooling yarn build
 | 
			
		||||
  '';
 | 
			
		||||
 | 
			
		||||
  installPhase = "mv dist $out";
 | 
			
		||||
})
 | 
			
		||||
							
								
								
									
										26
									
								
								flake.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								flake.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,26 @@
 | 
			
		|||
{
 | 
			
		||||
  "nodes": {
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1727348695,
 | 
			
		||||
        "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "id": "nixpkgs",
 | 
			
		||||
        "ref": "nixos-unstable",
 | 
			
		||||
        "type": "indirect"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "root": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": "nixpkgs"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "root": "root",
 | 
			
		||||
  "version": 7
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								flake.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								flake.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
{
 | 
			
		||||
  inputs = {
 | 
			
		||||
    nixpkgs.url = "nixpkgs/nixos-unstable";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs = { self, nixpkgs }: let
 | 
			
		||||
    forEachSystem = fn: nixpkgs.lib.genAttrs
 | 
			
		||||
      [ "x86_64-linux" "aarch64-linux" ]
 | 
			
		||||
      (system: fn system nixpkgs.legacyPackages.${system});
 | 
			
		||||
  in {
 | 
			
		||||
    packages = forEachSystem (system: pkgs: rec {
 | 
			
		||||
      quickshell-web = pkgs.callPackage ./default.nix {};
 | 
			
		||||
      default = quickshell-web;
 | 
			
		||||
    });
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										16
									
								
								shell.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								shell.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,16 @@
 | 
			
		|||
{
 | 
			
		||||
  pkgs ? import <nixpkgs> {},
 | 
			
		||||
  quickshell-web ? pkgs.callPackage ./default.nix {},
 | 
			
		||||
}: pkgs.mkShell {
 | 
			
		||||
  inputsFrom = [ quickshell-web ];
 | 
			
		||||
 | 
			
		||||
  nativeBuildInputs = [ (pkgs.writeShellScriptBin "yarn-install-hack" ''
 | 
			
		||||
    set -x
 | 
			
		||||
    yarn install || true
 | 
			
		||||
    mkdir -p node_modules/node/bin
 | 
			
		||||
    ln -sf ${pkgs.nodejs}/bin/node node_modules/node/bin/node
 | 
			
		||||
    yarn install
 | 
			
		||||
  '') ];
 | 
			
		||||
 | 
			
		||||
  YARN_NODE_LINKER = "node-modules";
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue