diff --git a/flake.lock b/flake.lock index 9b3f8d0..c0a174b 100644 --- a/flake.lock +++ b/flake.lock @@ -9,8 +9,8 @@ ] }, "locked": { - "lastModified": 1747936972, - "narHash": "sha256-MZUY92ZRyEsM6tfqFqbvqx8InwJ+jh7peYreR4bbsSQ=", + "lastModified": 1748618316, + "narHash": "sha256-NzkDNSFTVwoXX37n/+u7z93aUdPFIeh8+P7QhX7M8cw=", "path": "/home/alice/projects/edit", "type": "path" }, @@ -28,11 +28,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1747392669, - "narHash": "sha256-zky3+lndxKRu98PAwVK8kXPdg+Q1NVAhaI7YGrboKYA=", + "lastModified": 1748414334, + "narHash": "sha256-pWLq78fWssxiRAvLQZnxKupUogR25u+28XS4lfxMMoE=", "owner": "nix-community", "repo": "fenix", - "rev": "c3c27e603b0d9b5aac8a16236586696338856fbb", + "rev": "1c050d9008ff9e934f8bb5298c902259ea2cb3f7", "type": "github" }, "original": { @@ -77,6 +77,24 @@ "type": "github" } }, + "flake-utils_3": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "flakey-profile": { "locked": { "lastModified": 1712898590, @@ -99,11 +117,11 @@ ] }, "locked": { - "lastModified": 1747875884, - "narHash": "sha256-tdVx4kghhdy62LKuTnwE2RytOe8o88tah/yhpyuL0D4=", + "lastModified": 1751824240, + "narHash": "sha256-aDDC0CHTlL7QDKWWhdbEgVPK6KwWt+ca0QkmHYZxMzI=", "owner": "nix-community", "repo": "home-manager", - "rev": "f9186c64fcc6ee5f0114547acf9e814c806a640b", + "rev": "fd9e55f5fac45a26f6169310afca64d56b681935", "type": "github" }, "original": { @@ -149,11 +167,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1747900541, - "narHash": "sha256-dn64Pg9xLETjblwZs9Euu/SsjW80pd6lr5qSiyLY1pg=", + "lastModified": 1751432711, + "narHash": "sha256-136MeWtckSHTN9Z2WRNRdZ8oRP3vyx3L8UxeBYE+J9w=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "11f2d9ea49c3e964315215d6baa73a8d42672f06", + "rev": "497ae1357f1ac97f1aea31a4cb74ad0d534ef41f", "type": "github" }, "original": { @@ -165,11 +183,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747744144, - "narHash": "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q=", + "lastModified": 1751637120, + "narHash": "sha256-xVNy/XopSfIG9c46nRmPaKfH1Gn/56vQ8++xWA8itO4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f", + "rev": "5c724ed1388e53cc231ed98330a60eb2f7be4be3", "type": "github" }, "original": { @@ -184,17 +202,18 @@ "home-manager": "home-manager", "lix-module": "lix-module", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "tepid-client-services": "tepid-client-services" } }, "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1747323949, - "narHash": "sha256-G4NwzhODScKnXqt2mEQtDFOnI0wU3L1WxsiHX3cID/0=", + "lastModified": 1748389118, + "narHash": "sha256-5QJCzMtA2lBFNGou2dbFrGgWXxfL2O92oJoUnqeoNjI=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "f8e784353bde7cbf9a9046285c1caf41ac484ebe", + "rev": "4f7af13637a77ce1dc21e58fcd3f635efbfb43a7", "type": "github" }, "original": { @@ -233,6 +252,39 @@ "repo": "default", "type": "github" } + }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tepid-client-services": { + "inputs": { + "flake-utils": "flake-utils_3", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1748621871, + "narHash": "sha256-mflM2kstVU2S/bil0IJQb+T6gqlB7Sm7BkRW7FZG7l0=", + "path": "/home/alice/projects/tepid-client-services/", + "type": "path" + }, + "original": { + "path": "/home/alice/projects/tepid-client-services/", + "type": "path" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 6b26849..b7b9601 100644 --- a/flake.nix +++ b/flake.nix @@ -20,6 +20,12 @@ inputs.nixpkgs.follows = "nixpkgs"; }; + tepid-client-services = { + url = "path:/home/alice/projects/tepid-client-services/"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + }; outputs = { @@ -28,7 +34,8 @@ lix-module, home-manager, nixos-hardware, - edit + edit, + tepid-client-services }: let system = "x86_64-linux"; @@ -48,7 +55,7 @@ name = hostname; value = nixpkgs.lib.nixosSystem { inherit system; - # _module.args = { inherit edit; }; + specialArgs = { inherit edit tepid-client-services; }; modules = defaultModules ++ modules; }; }; diff --git a/hosts/randolph/configuration.nix b/hosts/randolph/configuration.nix index 6cae58a..ba8dd4f 100644 --- a/hosts/randolph/configuration.nix +++ b/hosts/randolph/configuration.nix @@ -2,7 +2,7 @@ # your system. Help is available in the configuration.nix(5) man page, on # https://search.nixos.org/options and in the NixOS manual (`nixos-help`). -{ config, lib, pkgs, ... }: +{ config, lib, pkgs, edit, tepid-client-services, flakelib, ... }: # fix this this is awful { imports = [ # Include the results of the hardware scan. @@ -39,6 +39,9 @@ # Enable unfree packages. nixpkgs.config.allowUnfree = true; + nixpkgs.config.permittedInsecurePackages = [ + "dotnet-runtime-7.0.20" + ]; networking.hostName = "randolph"; # Define your hostname. networking.networkmanager.enable = @@ -158,6 +161,9 @@ shell = pkgs.zsh; }; home-manager.users.alice = import ./home.nix; + home-manager.extraSpecialArgs = { + inherit edit tepid-client-services flakelib; + }; # Make sure swaylock works (defined in home.nix) security.pam.services.swaylock = { }; diff --git a/pkgs/celeste/celeste-linux.zip b/pkgs/celeste/celeste-linux.zip new file mode 100644 index 0000000..ac4fbc0 Binary files /dev/null and b/pkgs/celeste/celeste-linux.zip differ diff --git a/pkgs/celeste/default.nix b/pkgs/celeste/default.nix new file mode 100644 index 0000000..fffd58a --- /dev/null +++ b/pkgs/celeste/default.nix @@ -0,0 +1,122 @@ +{ + stdenvNoCC, + lib, + requireFile, + unzip, + copyDesktopItems, + xxd, + makeWrapper, + SDL2, + mono, + makeDesktopItem, + libfmodstudio_fix, + libfmodstudio, + libfna3d, + libfmodsdl, +}: +stdenvNoCC.mkDerivation rec { + name = "celeste-game"; + version = "1.4.0.0"; + + src = requireFile { + name = "celeste-linux.zip"; + url = "https://maddymakesgamesinc.itch.io/celeste"; + hash = "sha256-q4gniSgg00U3j5TZpvIZnSmqAyCHd/pOVAuQ3rDYEAs="; + }; + sourceRoot = "."; # needed for multiple directories + + nativeBuildInputs = [ + unzip # for unzipping + copyDesktopItems # will help! + makeWrapper + xxd + ]; + + buildInputs = [ + libfmodstudio_fix + libfmodstudio + libfna3d + SDL2 + libfmodsdl + + mono + ]; + + strictDeps = true; + dontConfigure = true; + + patchPhase = '' + # patch celeste + runHook prePatch + # TODO: i don't know what this magic string does and it bothers me + # TODO: convert these to patch files? + xxd -p < Celeste.exe | tr -d '\n' | LC_ALL=C sed 's/03000616fe012a0013300200210000000a000011160a02145112012014100100/03000616fe012a0013300200210000000a000011160a02145112012006020200/g' | xxd -r -p > Celeste.exe.patched + mv Celeste.exe.patched Celeste.exe + + # this cannot possibly be the best way of doing this + cat >Celeste.exe.config < + + + + + + + + + + EOF + + runHook postPatch + ''; + + dontBuild = true; + + installPhase = '' + runHook preInstall # these get clobbered + + mkdir -p $out/{bin,lib} + cp Celeste.exe Celeste.exe.config Celeste.pdb $out/lib + cp Celeste.Content.dll Celeste.Content.pdb $out/lib + cp FNA.dll FNA.dll.config FNA3D.dll $out/lib + cp -r Content/ $out/lib + cp -r Backups/ $out/lib + cp gamecontrollerdb.txt $out/lib + + mkdir -p $out/share/icons/hicolor/512x512/apps + cp Celeste.png $out/share/icons/hicolor/512x512/apps + + runHook postInstall + ''; + + postFixup = '' + makeWrapper "${mono}/bin/mono" "$out/bin/celeste-game" \ + --add-flags "--debug $out/lib/Celeste.exe" \ + --prefix LD_LIBRARY_PATH : ${ + lib.makeLibraryPath [ + "$out" + libfmodstudio_fix + libfmodstudio + libfna3d + SDL2 + libfmodsdl + ] + } + ''; + + desktopItems = [ + (makeDesktopItem { + name = name; + exec = "celeste-game %U"; + icon = "Celeste"; + comment = "Just breathe. You can do this..."; # should be an actual description of Celeste + desktopName = "Celeste"; + categories = [ + "Game" + "Application" + ]; + }) + ]; + + meta = { }; +} diff --git a/pkgs/edit/hi.nix b/pkgs/edit/hi.nix deleted file mode 100644 index 8ea921d..0000000 --- a/pkgs/edit/hi.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ - description = "core-lending"; - - inputs = { - nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; - flake-parts.url = "github:hercules-ci/flake-parts"; - rust-overlay = { - url = "github:oxalica/rust-overlay"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - }; - - outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } { - systems = [ - "x86_64-linux" - "aarch64-darwin" - ]; - - perSystem = { self', pkgs, system, ... }: - let - rustVersion = "1.86.0"; - rust = pkgs.rust-bin.stable.${rustVersion}; - rustPlatform = pkgs.makeRustPlatform { - rustc = rust.minimal; - cargo = rust.minimal; - }; - cargoToml = builtins.fromTOML (builtins.readFile ./Cargo.toml); - in - { - _module.args.pkgs = import inputs.nixpkgs { - inherit system; - overlays = [ inputs.rust-overlay.overlays.default ]; - }; - - packages.default = rustPlatform.buildRustPackage { - pname = cargoToml.package.name; - version = cargoToml.package.version; - - src = ./.; - cargoLock = { - lockFile = ./Cargo.lock; - }; - }; - - devShells.default = pkgs.mkShell { - buildInputs = [ - pkgs.diesel-cli - pkgs.elmPackages.elm - pkgs.elmPackages.elm-language-server - pkgs.postgresql_17 - (rust.default.override { - extensions = [ "rust-analyzer" "rust-src" ]; - }) - ]; - - shellHook = '' - export LANG="en_US.UTF-8" - ''; - }; - }; - }; -} diff --git a/pkgs/edit/result b/pkgs/edit/result new file mode 120000 index 0000000..e5015cd --- /dev/null +++ b/pkgs/edit/result @@ -0,0 +1 @@ +/nix/store/v87dnjfc7275z6lwc52qa42vw773nvr3-edit-1.0.0 \ No newline at end of file diff --git a/snippets/clifm.nix b/snippets/clifm.nix index e082872..ff029c7 100644 --- a/snippets/clifm.nix +++ b/snippets/clifm.nix @@ -1,20 +1,20 @@ {lib, pkgs, ...}: let - overlay = (final: prev: { - clifm = prev.clifm.overrideAttrs (old: { - version = "1.23"; - src = prev.fetchFromGitHub { - owner = "leo-arch"; - repo = prev.clifm.pname; - rev = "v1.23"; - hash = "sha256-FtlLz77yy/QfRyAhJSh5juCSPCZ921sTGhuYJzCusus="; - }; - }); - }); + # overlay = (final: prev: { + # clifm = prev.clifm.overrideAttrs (old: { + # version = "1.23"; + # src = prev.fetchFromGitHub { + # owner = "leo-arch"; + # repo = prev.clifm.pname; + # rev = "v1.23"; + # hash = "sha256-FtlLz77yy/QfRyAhJSh5juCSPCZ921sTGhuYJzCusus="; + # }; + # }); + # }); file_picker = pkgs.writeScriptBin "file_picker" (builtins.readFile "${pkgs.clifm}/share/clifm/plugins/file_picker.sh"); in { - home.packages = with pkgs.extend overlay; [ atool fzf xdragon unzip zip sshfs clifm ] + home.packages = with pkgs; [ atool fzf xdragon unzip zip sshfs clifm ] ++ [ file_picker ]; xdg.configFile."clifm/profiles/default/clifmrc".source = ./clifm/clifmrc; xdg.configFile."clifm/profiles/default/mimelist.clifm".source = ./clifm/mimelist.clifm;