initial commit
This commit is contained in:
commit
fa2d43d85d
6 changed files with 122 additions and 0 deletions
5
README.md
Normal file
5
README.md
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Cursed Idea
|
||||
|
||||
What if I made The Sims 2 a nix derivation
|
||||
|
||||
Requires the original ISOs and product keys to be stored in the nix-store
|
16
flake.nix
Normal file
16
flake.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = github:NixOS/nixpkgs;
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
outputs = { self, nixpkgs, flake-utils, ... }: flake-utils.lib.eachSystem [ "x86_64-linux" ] (system:
|
||||
let
|
||||
pkgs = import nixpkgs {
|
||||
inherit system;
|
||||
};
|
||||
in
|
||||
rec {
|
||||
packages = pkgs.callPackage./pkgs/merged.nix { };
|
||||
hydraJobs = packages;
|
||||
});
|
||||
}
|
32
pkgs/disks.nix
Normal file
32
pkgs/disks.nix
Normal file
|
@ -0,0 +1,32 @@
|
|||
# Raw ISO
|
||||
{ emptyDirectory, p7zip, stdenvNoCC, ... }:
|
||||
let
|
||||
build_iso = args: stdenvNoCC.mkDerivation ({
|
||||
buildPhase = ''
|
||||
echo "You need to manually add the iso to the nix store"
|
||||
exit 1
|
||||
'';
|
||||
outputHashAlgo = "sha256";
|
||||
outputHashMode = "flat";
|
||||
} // args);
|
||||
in
|
||||
rec {
|
||||
isos = {
|
||||
sims2-cd1 = build_iso {
|
||||
name = "Sims2_1.iso";
|
||||
outputHash = "19l3xblr5ay3ym2iwfyaksfnxisbhk9cgz876j4hs0hr1876bpp5";
|
||||
};
|
||||
sims2-cd2 = build_iso {
|
||||
name = "Sims2_2.iso";
|
||||
outputHash = "1d4bn02fmanh3y42lbdg6212wdzkdyfwv9fzb3v06szy263ig567";
|
||||
};
|
||||
sims2-cd3 = build_iso {
|
||||
name = "Sims2_3.iso";
|
||||
outputHash = "0612rzmjzwmqkr2rdrc9pvbiwqbcv2220dlnwaxjcf4fiw3s070a";
|
||||
};
|
||||
sims2-cd4 = build_iso {
|
||||
name = "Sims2_4.iso";
|
||||
outputHash = "0g6pjwrfb8v7fc2bnflv35iz68scgylx4yd1pq8lj09560bh3iq0";
|
||||
};
|
||||
};
|
||||
}
|
38
pkgs/extracted.nix
Normal file
38
pkgs/extracted.nix
Normal file
|
@ -0,0 +1,38 @@
|
|||
# Disk extraction
|
||||
{ emptyDirectory, p7zip, libarchive, stdenvNoCC, callPackage }:
|
||||
let
|
||||
isos = (callPackage ./disks.nix { }).isos;
|
||||
extract_iso = iso: stdenvNoCC.mkDerivation {
|
||||
name = "${iso.name}-extracted";
|
||||
nativeBuildInputs = [
|
||||
p7zip
|
||||
];
|
||||
buildPhase = "true";
|
||||
src = emptyDirectory;
|
||||
installPhase = ''
|
||||
mkdir $out
|
||||
cd $out
|
||||
7z x ${iso}
|
||||
'';
|
||||
};
|
||||
extract_compressed_zip = iso_ex: stdenvNoCC.mkDerivation {
|
||||
name = "${iso_ex.name}-extracted";
|
||||
nativeBuildInputs = [
|
||||
libarchive
|
||||
];
|
||||
buildPhase = "true";
|
||||
src = iso_ex;
|
||||
installPhase = ''
|
||||
mkdir $out
|
||||
cd $out
|
||||
bsdtar -xvvf $src/compressed.zip
|
||||
if [ -f $src/en-us_compressed.zip ]; then
|
||||
bsdtar -xvvf $src/en-us_compressed.zip
|
||||
fi
|
||||
'';
|
||||
};
|
||||
in
|
||||
rec {
|
||||
extracted_iso = builtins.mapAttrs (_: extract_iso) isos;
|
||||
extracted_all = builtins.mapAttrs (_: extract_compressed_zip) extracted_iso;
|
||||
}
|
19
pkgs/merged.nix
Normal file
19
pkgs/merged.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ callPackage, symlinkJoin }:
|
||||
let
|
||||
extracted = callPackage ./extracted.nix { };
|
||||
in
|
||||
{
|
||||
sims2 = symlinkJoin {
|
||||
name = "The Sims 2";
|
||||
paths = [
|
||||
extracted.extracted_all.sims2-cd1
|
||||
extracted.extracted_iso.sims2-cd1
|
||||
extracted.extracted_all.sims2-cd2
|
||||
extracted.extracted_iso.sims2-cd2
|
||||
extracted.extracted_all.sims2-cd3
|
||||
extracted.extracted_iso.sims2-cd3
|
||||
extracted.extracted_all.sims2-cd4
|
||||
extracted.extracted_iso.sims2-cd4
|
||||
];
|
||||
};
|
||||
}
|
12
pkgs/wineprefix.nix
Normal file
12
pkgs/wineprefix.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ emptyDirectory, stdenvNoCC, wineWowPackages }:
|
||||
stdenvNoCC.mkDerivation {
|
||||
name = "wine-prefix-base";
|
||||
src = emptyDirectory;
|
||||
buildPhase = "true";
|
||||
nativeBuildInputs = [ wineWowPackages.staging ];
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
export WINEPREFIX=$out/pfx
|
||||
wineboot -i
|
||||
'';
|
||||
}
|
Loading…
Reference in a new issue