Compare commits
3 Commits
dd96520ad1
...
starship
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9513882870 | ||
|
|
71a6843b37 | ||
|
|
7d9d1ca80e |
@@ -63,12 +63,6 @@
|
|||||||
./roles/shipwright
|
./roles/shipwright
|
||||||
./roles/2ship2harkinian
|
./roles/2ship2harkinian
|
||||||
./roles/nix_index
|
./roles/nix_index
|
||||||
./roles/flux
|
|
||||||
./roles/tekton
|
|
||||||
./roles/gnuplot
|
|
||||||
./roles/sops
|
|
||||||
./roles/gcloud
|
|
||||||
./roles/steam_run_free
|
|
||||||
];
|
];
|
||||||
|
|
||||||
nix.settings.experimental-features = [
|
nix.settings.experimental-features = [
|
||||||
@@ -158,10 +152,6 @@
|
|||||||
ncdu
|
ncdu
|
||||||
nix-tree
|
nix-tree
|
||||||
libarchive # bsdtar
|
libarchive # bsdtar
|
||||||
lsof
|
|
||||||
doas-sudo-shim # To support --use-remote-sudo for remote builds
|
|
||||||
dmidecode # Read SMBIOS information.
|
|
||||||
ipcalc
|
|
||||||
];
|
];
|
||||||
|
|
||||||
services.openssh = {
|
services.openssh = {
|
||||||
|
|||||||
12
nix/configuration/flake.lock
generated
12
nix/configuration/flake.lock
generated
@@ -135,11 +135,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1740432748,
|
"lastModified": 1737762889,
|
||||||
"narHash": "sha256-BCeFtoJ/+LrZc03viRJWHfzAqqG8gPu/ikZeurv05xs=",
|
"narHash": "sha256-5HGG09bh/Yx0JA8wtBMAzt0HMCL1bYZ93x4IqzVExio=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "home-manager",
|
"repo": "home-manager",
|
||||||
"rev": "c12dcc9b61429b2ad437a7d4974399ad8f910319",
|
"rev": "daf04c5950b676f47a794300657f1d3d14c1a120",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -191,11 +191,11 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1740367490,
|
"lastModified": 1737885589,
|
||||||
"narHash": "sha256-WGaHVAjcrv+Cun7zPlI41SerRtfknGQap281+AakSAw=",
|
"narHash": "sha256-Zf0hSrtzaM1DEz8//+Xs51k/wdSajticVrATqDrfQjg=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "0196c0175e9191c474c26ab5548db27ef5d34b05",
|
"rev": "852ff1d9e153d8875a83602e03fdef8a63f0ecf8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|||||||
61
nix/configuration/flakes/starship-game/flake.lock
generated
Normal file
61
nix/configuration/flakes/starship-game/flake.lock
generated
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735141468,
|
||||||
|
"narHash": "sha256-VIAjBr1qGcEbmhLwQJD6TABppPMggzOvqFsqkDoMsAY=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "4005c3ff7505313cbc21081776ad0ce5dfd7a3ce",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-24.11",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
34
nix/configuration/flakes/starship-game/flake.nix
Normal file
34
nix/configuration/flakes/starship-game/flake.nix
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
description = "A slightly better history for zsh";
|
||||||
|
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
|
||||||
|
inputs.flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
flake-utils,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
out =
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
# Maybe pkgs = import nixpkgs { inherit system; }; ?
|
||||||
|
appliedOverlay = self.overlays.default pkgs pkgs;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
packages = rec {
|
||||||
|
default = starship-game;
|
||||||
|
starship-game = appliedOverlay.starship-game;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
flake-utils.lib.eachDefaultSystem out
|
||||||
|
// {
|
||||||
|
overlays.default = final: prev: {
|
||||||
|
starship-game = final.callPackage ./package.nix { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
261
nix/configuration/flakes/starship-game/package.nix
Normal file
261
nix/configuration/flakes/starship-game/package.nix
Normal file
@@ -0,0 +1,261 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
SDL2,
|
||||||
|
cmake,
|
||||||
|
copyDesktopItems,
|
||||||
|
fetchFromGitHub,
|
||||||
|
fetchpatch,
|
||||||
|
fetchurl,
|
||||||
|
imagemagick,
|
||||||
|
imgui,
|
||||||
|
libpng,
|
||||||
|
libpulseaudio,
|
||||||
|
libzip,
|
||||||
|
lsb-release,
|
||||||
|
makeDesktopItem,
|
||||||
|
makeWrapper,
|
||||||
|
ninja,
|
||||||
|
nlohmann_json,
|
||||||
|
pkg-config,
|
||||||
|
python3,
|
||||||
|
spdlog,
|
||||||
|
stormlib,
|
||||||
|
tinyxml-2,
|
||||||
|
writeTextFile,
|
||||||
|
zenity,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
# This would get fetched at build time otherwise, see:
|
||||||
|
# https://github.com/HarbourMasters/2ship2harkinian/blob/1.0.2/mm/CMakeLists.txt#L708
|
||||||
|
gamecontrollerdb = fetchurl {
|
||||||
|
name = "gamecontrollerdb.txt";
|
||||||
|
url = "https://raw.githubusercontent.com/gabomdq/SDL_GameControllerDB/b1759cf84028aab89caa1c395e198c340b8dfd89/gamecontrollerdb.txt";
|
||||||
|
hash = "sha256-7C5EkqBIhLGNJuhi3832y0ffW5Ep7iuTYXb1bL5h2Js=";
|
||||||
|
};
|
||||||
|
|
||||||
|
# 2ship needs a specific imgui version
|
||||||
|
imgui' = imgui.overrideAttrs rec {
|
||||||
|
version = "1.90.6";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ocornut";
|
||||||
|
repo = "imgui";
|
||||||
|
rev = "v${version}-docking";
|
||||||
|
hash = "sha256-Y8lZb1cLJF48sbuxQ3vXq6GLru/WThR78pq7LlORIzc=";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
libgfxd = fetchFromGitHub {
|
||||||
|
owner = "glankk";
|
||||||
|
repo = "libgfxd";
|
||||||
|
rev = "96fd3b849f38b3a7c7b7f3ff03c5921d328e6cdf";
|
||||||
|
hash = "sha256-dedZuV0BxU6goT+rPvrofYqTz9pTA/f6eQcsvpDWdvQ=";
|
||||||
|
};
|
||||||
|
|
||||||
|
yaml_cpp = fetchFromGitHub {
|
||||||
|
owner = "jbeder";
|
||||||
|
repo = "yaml-cpp";
|
||||||
|
rev = "f7320141120f720aecc4c32be25586e7da9eb978";
|
||||||
|
hash = "sha256-J87oS6Az1/vNdyXu3L7KmUGWzU0IAkGrGMUUha+xDXI=";
|
||||||
|
};
|
||||||
|
|
||||||
|
# spdlog = fetchFromGitHub {
|
||||||
|
# owner = "gabime";
|
||||||
|
# repo = "spdlog";
|
||||||
|
# rev = "7e635fca68d014934b4af8a1cf874f63989352b7";
|
||||||
|
# hash = "sha256-cxTaOuLXHRU8xMz9gluYz0a93O0ez2xOxbloyc1m1ns=";
|
||||||
|
# };
|
||||||
|
|
||||||
|
# stb_impl = writeTextFile {
|
||||||
|
# name = "stb_impl.c";
|
||||||
|
# text = ''
|
||||||
|
# #define STB_IMAGE_IMPLEMENTATION
|
||||||
|
# #include "stb_image.h"
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
|
||||||
|
# stb' = fetchurl {
|
||||||
|
# name = "stb_image.h";
|
||||||
|
# url = "https://raw.githubusercontent.com/nothings/stb/0bc88af4de5fb022db643c2d8e549a0927749354/stb_image.h";
|
||||||
|
# hash = "sha256-xUsVponmofMsdeLsI6+kQuPg436JS3PBl00IZ5sg3Vw=";
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Apply 2ship's patch for stormlib
|
||||||
|
stormlib' = stormlib.overrideAttrs (prev: rec {
|
||||||
|
version = "9.25";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "ladislav-zezula";
|
||||||
|
repo = "StormLib";
|
||||||
|
rev = "v${version}";
|
||||||
|
hash = "sha256-HTi2FKzKCbRaP13XERUmHkJgw8IfKaRJvsK3+YxFFdc=";
|
||||||
|
};
|
||||||
|
nativeBuildInputs = prev.nativeBuildInputs ++ [ pkg-config ];
|
||||||
|
patches = (prev.patches or [ ]) ++ [
|
||||||
|
(fetchpatch {
|
||||||
|
name = "stormlib-optimizations.patch";
|
||||||
|
url = "https://github.com/briaguya-ai/StormLib/commit/ff338b230544f8b2bb68d2fbe075175ed2fd758c.patch";
|
||||||
|
hash = "sha256-Jbnsu5E6PkBifcx/yULMVC//ab7tszYgktS09Azs5+4=";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
|
thread_pool = fetchFromGitHub {
|
||||||
|
owner = "bshoshany";
|
||||||
|
repo = "thread-pool";
|
||||||
|
rev = "v4.1.0";
|
||||||
|
hash = "sha256-zhRFEmPYNFLqQCfvdAaG5VBNle9Qm8FepIIIrT9sh88=";
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
|
pname = "starship-game";
|
||||||
|
version = "v1.0.0";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "HarbourMasters";
|
||||||
|
repo = "starship";
|
||||||
|
# rev = "5e5e49da93e066f51c3010ba38f09331d866f2db";
|
||||||
|
tag = finalAttrs.version;
|
||||||
|
hash = "sha256-kaLLlLuonqE2DJcRlWR4tCEBNjwIYFlzeDLcYsvMO7I=";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# patches = [
|
||||||
|
# # remove fetching stb as we will patch our own
|
||||||
|
# ./0001-deps.patch
|
||||||
|
# ];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
cmake
|
||||||
|
copyDesktopItems
|
||||||
|
imagemagick
|
||||||
|
lsb-release
|
||||||
|
makeWrapper
|
||||||
|
ninja
|
||||||
|
pkg-config
|
||||||
|
python3
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
SDL2
|
||||||
|
imgui'
|
||||||
|
libpng
|
||||||
|
libpulseaudio
|
||||||
|
libzip
|
||||||
|
nlohmann_json
|
||||||
|
spdlog
|
||||||
|
stormlib'
|
||||||
|
tinyxml-2
|
||||||
|
zenity
|
||||||
|
];
|
||||||
|
|
||||||
|
cmakeFlags = [
|
||||||
|
(lib.cmakeBool "NON_PORTABLE" true)
|
||||||
|
(lib.cmakeFeature "CMAKE_INSTALL_PREFIX" "${placeholder "out"}/starship-game")
|
||||||
|
(lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_IMGUI" "${imgui'.src}")
|
||||||
|
(lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_LIBGFXD" "${libgfxd}")
|
||||||
|
(lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_STORMLIB" "${stormlib'}")
|
||||||
|
(lib.cmakeFeature "FETCHCONTENT_SOURCE_DIR_THREADPOOL" "${thread_pool}")
|
||||||
|
];
|
||||||
|
|
||||||
|
dontAddPrefix = true;
|
||||||
|
|
||||||
|
# Linking fails without this
|
||||||
|
hardeningDisable = [ "format" ];
|
||||||
|
|
||||||
|
# Pie needs to be enabled or else it segfaults
|
||||||
|
hardeningEnable = [ "pie" ];
|
||||||
|
|
||||||
|
# preConfigure = ''
|
||||||
|
# # mirror 2ship's stb
|
||||||
|
# mkdir stb
|
||||||
|
# cp ${stb'} ./stb/${stb'.name}
|
||||||
|
# cp ${stb_impl} ./stb/${stb_impl.name}
|
||||||
|
|
||||||
|
# substituteInPlace libultraship/cmake/dependencies/common.cmake \
|
||||||
|
# --replace-fail "\''${STB_DIR}" "/build/source/stb"
|
||||||
|
# '';
|
||||||
|
|
||||||
|
# (cd tools/Torch && cmake -H. -Bbuild-cmake -GNinja \
|
||||||
|
# -DFETCHCONTENT_SOURCE_DIR_LIBGFXD=${libgfxd} \
|
||||||
|
# -DFETCHCONTENT_SOURCE_DIR_YAML-CPP=${finalAttrs.yaml_cpp_src} \
|
||||||
|
# -DFETCHCONTENT_SOURCE_DIR_SPDLOG=${finalAttrs.spdlog_src}
|
||||||
|
# )
|
||||||
|
|
||||||
|
configurePhase = ''
|
||||||
|
cmake -H. -Bbuild-cmake -GNinja \
|
||||||
|
-DFETCHCONTENT_SOURCE_DIR_IMGUI=${imgui'.src} \
|
||||||
|
-DFETCHCONTENT_SOURCE_DIR_STORMLIB=${stormlib'} \
|
||||||
|
-DFETCHCONTENT_SOURCE_DIR_THREADPOOL=${thread_pool}
|
||||||
|
|
||||||
|
(cd tools/Torch && cmake -H. -Bbuild-cmake -GNinja \
|
||||||
|
-DFETCHCONTENT_SOURCE_DIR_LIBGFXD=${libgfxd} \
|
||||||
|
-DFETCHCONTENT_SOURCE_DIR_YAML-CPP=${yaml_cpp} \
|
||||||
|
-DFETCHCONTENT_SOURCE_DIR_SPDLOG=${spdlog}
|
||||||
|
)
|
||||||
|
|
||||||
|
(cd libultraship && cmake -H. -Bbuild-cmake -GNinja \
|
||||||
|
-DFETCHCONTENT_SOURCE_DIR_LIBGFXD=${libgfxd} \
|
||||||
|
-DFETCHCONTENT_SOURCE_DIR_IMGUI=${imgui'.src} \
|
||||||
|
-DFETCHCONTENT_SOURCE_DIR_STORMLIB=${stormlib'} \
|
||||||
|
-DFETCHCONTENT_SOURCE_DIR_THREADPOOL=${thread_pool}
|
||||||
|
)
|
||||||
|
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
cmake --build build-cmake
|
||||||
|
'';
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
cp ${gamecontrollerdb} ${gamecontrollerdb.name}
|
||||||
|
pushd ../OTRExporter
|
||||||
|
python3 ./extract_assets.py -z ../build/ZAPD/ZAPD.out --norom --xml-root ../mm/assets/xml --custom-assets-path ../mm/assets/custom --custom-otr-file 2ship.o2r --port-ver ${finalAttrs.version}
|
||||||
|
popd
|
||||||
|
'';
|
||||||
|
|
||||||
|
preInstall = ''
|
||||||
|
# Cmake likes it here for its install paths
|
||||||
|
cp ../OTRExporter/2ship.o2r mm/
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
ln -s $out/2s2h/2s2h.elf $out/bin/2s2h
|
||||||
|
install -Dm644 ../mm/linux/2s2hIcon.png $out/share/pixmaps/2s2h.png
|
||||||
|
'';
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
wrapProgram $out/2s2h/2s2h.elf --prefix PATH ":" ${lib.makeBinPath [ zenity ]}
|
||||||
|
'';
|
||||||
|
|
||||||
|
desktopItems = [
|
||||||
|
(makeDesktopItem {
|
||||||
|
name = "starship";
|
||||||
|
icon = "starship";
|
||||||
|
exec = "starship";
|
||||||
|
comment = finalAttrs.meta.description;
|
||||||
|
genericName = "Starship";
|
||||||
|
desktopName = "starship";
|
||||||
|
categories = [ "Game" ];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
homepage = "https://github.com/HarbourMasters/2ship2harkinian";
|
||||||
|
description = "A PC port of Majora's Mask with modern controls, widescreen, high-resolution, and more";
|
||||||
|
mainProgram = "starship";
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
maintainers = with lib.maintainers; [ ];
|
||||||
|
license = with lib.licenses; [
|
||||||
|
# # OTRExporter, OTRGui, ZAPDTR, libultraship
|
||||||
|
# mit
|
||||||
|
# # 2 Ship 2 Harkinian
|
||||||
|
# cc0
|
||||||
|
# # Reverse engineering
|
||||||
|
# unfree
|
||||||
|
];
|
||||||
|
};
|
||||||
|
})
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
boot.initrd.kernelModules = [ "i915" ];
|
boot.initrd.kernelModules = [ "i915" ];
|
||||||
|
|
||||||
# Mount tmpfs at /tmp
|
# Mount tmpfs at /tmp
|
||||||
# boot.tmp.useTmpfs = true;
|
boot.tmp.useTmpfs = true;
|
||||||
|
|
||||||
me.bluetooth.enable = true;
|
me.bluetooth.enable = true;
|
||||||
me.emacs_flavor = "plainmacs";
|
me.emacs_flavor = "plainmacs";
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
{
|
{ config, pkgs, ... }:
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
@@ -12,7 +7,6 @@
|
|||||||
./power_management.nix
|
./power_management.nix
|
||||||
./screen_brightness.nix
|
./screen_brightness.nix
|
||||||
./wifi.nix
|
./wifi.nix
|
||||||
./framework_module.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Generate with `head -c4 /dev/urandom | od -A none -t x4`
|
# Generate with `head -c4 /dev/urandom | od -A none -t x4`
|
||||||
@@ -33,15 +27,8 @@
|
|||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
fw-ectool
|
fw-ectool
|
||||||
framework-tool
|
|
||||||
];
|
];
|
||||||
|
|
||||||
# Enable light sensor
|
|
||||||
# hardware.sensor.iio.enable = lib.mkDefault true;
|
|
||||||
|
|
||||||
# Enable TRIM
|
|
||||||
# services.fstrim.enable = lib.mkDefault true;
|
|
||||||
|
|
||||||
me.alacritty.enable = true;
|
me.alacritty.enable = true;
|
||||||
me.ansible.enable = true;
|
me.ansible.enable = true;
|
||||||
me.ares.enable = true;
|
me.ares.enable = true;
|
||||||
@@ -51,10 +38,7 @@
|
|||||||
me.docker.enable = true;
|
me.docker.enable = true;
|
||||||
me.emacs_flavor = "full";
|
me.emacs_flavor = "full";
|
||||||
me.firefox.enable = true;
|
me.firefox.enable = true;
|
||||||
me.flux.enable = true;
|
|
||||||
me.gcloud.enable = true;
|
|
||||||
me.git.config = ../../roles/git/files/gitconfig_home;
|
me.git.config = ../../roles/git/files/gitconfig_home;
|
||||||
me.gnuplot.enable = true;
|
|
||||||
me.gpg.enable = true;
|
me.gpg.enable = true;
|
||||||
me.graphical = true;
|
me.graphical = true;
|
||||||
me.graphics_card_type = "amd";
|
me.graphics_card_type = "amd";
|
||||||
@@ -68,12 +52,9 @@
|
|||||||
me.python.enable = true;
|
me.python.enable = true;
|
||||||
me.qemu.enable = true;
|
me.qemu.enable = true;
|
||||||
me.rust.enable = true;
|
me.rust.enable = true;
|
||||||
me.sops.enable = true;
|
|
||||||
me.sound.enable = true;
|
me.sound.enable = true;
|
||||||
me.steam.enable = true;
|
me.steam.enable = true;
|
||||||
me.steam_run_free.enable = true;
|
|
||||||
me.sway.enable = true;
|
me.sway.enable = true;
|
||||||
me.tekton.enable = true;
|
|
||||||
me.terraform.enable = true;
|
me.terraform.enable = true;
|
||||||
me.vnc_client.enable = true;
|
me.vnc_client.enable = true;
|
||||||
me.vscode.enable = true;
|
me.vscode.enable = true;
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
config = lib.mkMerge [
|
|
||||||
{
|
|
||||||
boot.extraModulePackages = with config.boot.kernelPackages; [
|
|
||||||
framework-laptop-kmod
|
|
||||||
];
|
|
||||||
# https://github.com/DHowett/framework-laptop-kmod?tab=readme-ov-file#usage
|
|
||||||
boot.kernelModules = [
|
|
||||||
"cros_ec"
|
|
||||||
"cros_ec_lpcs"
|
|
||||||
];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -56,32 +56,6 @@
|
|||||||
# };
|
# };
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.link-docker-creds = {
|
|
||||||
# Contains credentials so it cannot be added to the nix store
|
|
||||||
enable = true;
|
|
||||||
description = "link-docker-creds";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
wants = [ "multi-user.target" ];
|
|
||||||
after = [ "multi-user.target" ];
|
|
||||||
# path = with pkgs; [
|
|
||||||
# zfs
|
|
||||||
# ];
|
|
||||||
unitConfig.DefaultDependencies = "no";
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = "yes";
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
if [ -e /persist/manual/docker/config.json ]; then
|
|
||||||
install --directory --owner talexander --group talexander --mode 0700 /home/talexander/.docker
|
|
||||||
ln -s /persist/manual/docker/config.json /home/talexander/.docker/config.json
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
preStop = ''
|
|
||||||
rm -f /home/talexander/.docker/config.json
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
# Needed for non-rootless docker
|
# Needed for non-rootless docker
|
||||||
users.users.talexander.extraGroups = [ "docker" ];
|
users.users.talexander.extraGroups = [ "docker" ];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ in
|
|||||||
(lib.mkIf (config.me.graphical) {
|
(lib.mkIf (config.me.graphical) {
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
(final: prev: {
|
(final: prev: {
|
||||||
my_emacs = final.emacs30-pgtk;
|
my_emacs = final.emacs29-pgtk;
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
@@ -121,7 +121,6 @@ in
|
|||||||
dicts: with dicts; [
|
dicts: with dicts; [
|
||||||
en
|
en
|
||||||
en-computers
|
en-computers
|
||||||
# en-science # TODO: Why is en-science non-free?
|
|
||||||
]
|
]
|
||||||
))
|
))
|
||||||
final.nixd # nix language server
|
final.nixd # nix language server
|
||||||
@@ -130,9 +129,6 @@ in
|
|||||||
final.shellcheck
|
final.shellcheck
|
||||||
final.cmake-language-server
|
final.cmake-language-server
|
||||||
final.cmake # Used by cmake-language-server
|
final.cmake # Used by cmake-language-server
|
||||||
final.rust-analyzer
|
|
||||||
final.nodePackages_latest.prettier # Format yaml, json, and JS
|
|
||||||
final.terraform-ls
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -51,27 +51,17 @@
|
|||||||
;; Persist history over Emacs restarts. Vertico sorts by history position.
|
;; Persist history over Emacs restarts. Vertico sorts by history position.
|
||||||
(use-package savehist
|
(use-package savehist
|
||||||
;; This is an emacs built-in but we're pulling the latest version
|
;; This is an emacs built-in but we're pulling the latest version
|
||||||
:pin gnu
|
|
||||||
:config
|
:config
|
||||||
(savehist-mode))
|
(savehist-mode))
|
||||||
|
|
||||||
(use-package which-key
|
(use-package which-key
|
||||||
:pin gnu
|
|
||||||
:diminish
|
:diminish
|
||||||
:config
|
:config
|
||||||
(which-key-mode))
|
(which-key-mode))
|
||||||
|
|
||||||
(use-package windmove
|
(use-package windmove
|
||||||
;; This is an emacs built-in but we're pulling the latest version
|
:config
|
||||||
:pin gnu
|
(windmove-default-keybindings))
|
||||||
:bind
|
|
||||||
(
|
|
||||||
("S-<up>" . windmove-up)
|
|
||||||
("S-<right>" . windmove-right)
|
|
||||||
("S-<down>" . windmove-down)
|
|
||||||
("S-<left>" . windmove-left)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
(setq tramp-default-method "ssh")
|
(setq tramp-default-method "ssh")
|
||||||
|
|
||||||
|
|||||||
@@ -63,9 +63,6 @@
|
|||||||
show-trailing-whitespace t
|
show-trailing-whitespace t
|
||||||
;; Remove the line when killing it with ctrl-k
|
;; Remove the line when killing it with ctrl-k
|
||||||
kill-whole-line t
|
kill-whole-line t
|
||||||
|
|
||||||
;; Show the current project in the mode line
|
|
||||||
project-mode-line t
|
|
||||||
)
|
)
|
||||||
|
|
||||||
;; (setq-default fringes-outside-margins t)
|
;; (setq-default fringes-outside-margins t)
|
||||||
|
|||||||
@@ -1,23 +1,16 @@
|
|||||||
(use-package org
|
(use-package org
|
||||||
:ensure nil
|
:ensure nil
|
||||||
:commands org-mode
|
:commands org-mode
|
||||||
:bind (:map org-mode-map
|
:bind (
|
||||||
("C-c l" . org-store-link)
|
("C-c l" . org-store-link)
|
||||||
("C-c a" . org-agenda)
|
("C-c a" . org-agenda)
|
||||||
("S-<up>" . org-shiftup)
|
("C--" . org-timestamp-down)
|
||||||
("S-<right>" . org-shiftright)
|
("C-=" . org-timestamp-up)
|
||||||
("S-<down>" . org-shiftdown)
|
|
||||||
("S-<left>" . org-shiftleft)
|
|
||||||
)
|
)
|
||||||
:hook (
|
:hook (
|
||||||
(org-mode . (lambda ()
|
(org-mode . (lambda ()
|
||||||
(org-indent-mode +1)
|
(org-indent-mode +1)
|
||||||
))
|
))
|
||||||
;; Make windmove work in Org mode:
|
|
||||||
(org-shiftup-final . windmove-up)
|
|
||||||
(org-shiftleft-final . windmove-left)
|
|
||||||
(org-shiftdown-final . windmove-down)
|
|
||||||
(org-shiftright-final . windmove-right)
|
|
||||||
)
|
)
|
||||||
:config
|
:config
|
||||||
(require 'org-tempo)
|
(require 'org-tempo)
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me = {
|
|
||||||
flux.enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install flux.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.me.flux.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
fluxcd
|
|
||||||
];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me = {
|
|
||||||
gcloud.enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install gcloud.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.me.gcloud.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
(google-cloud-sdk.withExtraComponents [ google-cloud-sdk.components.gke-gcloud-auth-plugin ])
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.persistence."/state" = lib.mkIf (!config.me.buildingIso) {
|
|
||||||
hideMounts = true;
|
|
||||||
users.talexander = {
|
|
||||||
directories = [
|
|
||||||
{
|
|
||||||
directory = ".config/gcloud";
|
|
||||||
user = "talexander";
|
|
||||||
group = "talexander";
|
|
||||||
mode = "0700";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
name = Tom Alexander
|
name = Tom Alexander
|
||||||
signingkey = D3A179C9A53C0EDE
|
signingkey = D3A179C9A53C0EDE
|
||||||
[push]
|
[push]
|
||||||
default = simple # (default since 2.0)
|
default = simple
|
||||||
[alias]
|
[alias]
|
||||||
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
|
lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
|
||||||
bh = log --oneline --branches=* --remotes=* --graph --decorate
|
bh = log --oneline --branches=* --remotes=* --graph --decorate
|
||||||
@@ -12,42 +12,24 @@
|
|||||||
excludesfile = ~/.gitignore_global
|
excludesfile = ~/.gitignore_global
|
||||||
[commit]
|
[commit]
|
||||||
gpgsign = true
|
gpgsign = true
|
||||||
verbose = true
|
|
||||||
[pull]
|
[pull]
|
||||||
rebase = true
|
rebase = true
|
||||||
[log]
|
[log]
|
||||||
date = local
|
date = local
|
||||||
[init]
|
[init]
|
||||||
defaultBranch = main
|
defaultBranch = main
|
||||||
|
|
||||||
|
# Use meld for `git difftool` and `git mergetool`
|
||||||
[diff]
|
[diff]
|
||||||
tool = meld # Use meld for `git difftool` and `git mergetool`
|
tool = meld
|
||||||
algorithm = histogram
|
|
||||||
colorMoved = plain
|
|
||||||
mnemonicPrefix = true
|
|
||||||
renames = true
|
|
||||||
[difftool]
|
[difftool]
|
||||||
prompt = false
|
prompt = false
|
||||||
[difftool "meld"]
|
[difftool "meld"]
|
||||||
cmd = meld "$LOCAL" "$REMOTE"
|
cmd = meld "$LOCAL" "$REMOTE"
|
||||||
[merge]
|
[merge]
|
||||||
tool = meld
|
tool = meld
|
||||||
conflictStyle = zdiff3
|
|
||||||
[mergetool "meld"]
|
[mergetool "meld"]
|
||||||
# Make the middle pane start with partially-merged contents:
|
# Make the middle pane start with partially-merged contents:
|
||||||
cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"
|
cmd = meld "$LOCAL" "$MERGED" "$REMOTE" --output "$MERGED"
|
||||||
# Make the middle pane start without any merge progress:
|
# Make the middle pane start without any merge progress:
|
||||||
# cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"
|
# cmd = meld "$LOCAL" "$BASE" "$REMOTE" --output "$MERGED"
|
||||||
[column]
|
|
||||||
ui = auto
|
|
||||||
[branch]
|
|
||||||
sort = -committerdate
|
|
||||||
[tag]
|
|
||||||
sort = version:refname
|
|
||||||
[fetch]
|
|
||||||
prune = true
|
|
||||||
pruneTags = true
|
|
||||||
all = true
|
|
||||||
[rebase]
|
|
||||||
autoSquash = true
|
|
||||||
autoStash = true
|
|
||||||
updateRefs = true
|
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me = {
|
|
||||||
gnuplot.enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install gnuplot.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.me.gnuplot.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
gnuplot
|
|
||||||
];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -37,11 +37,6 @@
|
|||||||
xorg.xeyes # to test which windows are using x11
|
xorg.xeyes # to test which windows are using x11
|
||||||
];
|
];
|
||||||
hardware.graphics.enable = true;
|
hardware.graphics.enable = true;
|
||||||
# hardware.graphics.enable32Bit = true;
|
|
||||||
|
|
||||||
# Vulkan Support (64-bit is enabled by default, 32-bit is disabled by default)
|
|
||||||
# hardware.opengl.driSupport = true; # This is already enabled by default
|
|
||||||
# hardware.opengl.driSupport32Bit = true; # For 32 bit applications
|
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -28,21 +28,6 @@ let
|
|||||||
alias_klog = pkgs.writeShellScriptBin "klog" ''
|
alias_klog = pkgs.writeShellScriptBin "klog" ''
|
||||||
exec ${pkgs.kubectl}/bin/kubectl logs --all-containers "$@"
|
exec ${pkgs.kubectl}/bin/kubectl logs --all-containers "$@"
|
||||||
'';
|
'';
|
||||||
decrypt_k8s_secret =
|
|
||||||
(pkgs.writeScriptBin "decrypt_k8s_secret" (builtins.readFile ./files/decrypt_k8s_secret.bash))
|
|
||||||
.overrideAttrs
|
|
||||||
(old: {
|
|
||||||
buildCommand = "${old.buildCommand}\n patchShebangs $out";
|
|
||||||
buildInputs = [ pkgs.makeWrapper ];
|
|
||||||
postBuild = ''
|
|
||||||
wrapProgram $out/bin/decrypt_k8s_secret --prefix PATH : ${
|
|
||||||
lib.makeBinPath [
|
|
||||||
pkgs.kubectl
|
|
||||||
pkgs.jq
|
|
||||||
]
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
});
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ];
|
imports = [ ];
|
||||||
@@ -70,7 +55,6 @@ in
|
|||||||
alias_kdel
|
alias_kdel
|
||||||
alias_kd
|
alias_kd
|
||||||
alias_klog
|
alias_klog
|
||||||
decrypt_k8s_secret
|
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
|
environment.persistence."/persist" = lib.mkIf (!config.me.buildingIso) {
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
#
|
|
||||||
set -euo pipefail
|
|
||||||
IFS=$'\n\t'
|
|
||||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
|
|
||||||
kubectl get secret -o json "${@}" | jq '.data[] |= @base64d | .data'
|
|
||||||
@@ -17,8 +17,6 @@ let
|
|||||||
buildCommand = "${old.buildCommand}\n patchShebangs $out";
|
buildCommand = "${old.buildCommand}\n patchShebangs $out";
|
||||||
|
|
||||||
});
|
});
|
||||||
kernel_version_check = lib.versionAtLeast config.boot.kernelPackages.kernel.version "6.12";
|
|
||||||
nixos_version_check = lib.versionAtLeast (lib.versions.majorMinor lib.version) "25.05";
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ];
|
imports = [ ];
|
||||||
@@ -37,8 +35,6 @@ in
|
|||||||
{
|
{
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
ffmpeg
|
ffmpeg
|
||||||
libva-utils # for vainfo
|
|
||||||
vdpauinfo
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
(lib.mkIf config.me.graphical {
|
(lib.mkIf config.me.graphical {
|
||||||
@@ -63,21 +59,6 @@ in
|
|||||||
cast_file_vaapi
|
cast_file_vaapi
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
(lib.mkIf (config.me.graphics_card_type == "amd") {
|
|
||||||
environment.sessionVariables = {
|
|
||||||
VDPAU_DRIVER = "radeonsi";
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(lib.mkIf (config.me.graphics_card_type == "intel") {
|
|
||||||
hardware.graphics.extraPackages = with pkgs; [
|
|
||||||
intel-media-driver
|
|
||||||
libvdpau-va-gl # Support vdpau applications using va-api
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.sessionVariables = {
|
|
||||||
VDPAU_DRIVER = "va_gl";
|
|
||||||
};
|
|
||||||
})
|
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,7 +61,6 @@
|
|||||||
iwd
|
iwd
|
||||||
ldns # for drill
|
ldns # for drill
|
||||||
arp-scan # To find devices on the network
|
arp-scan # To find devices on the network
|
||||||
wavemon
|
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.extraModprobeConfig = ''
|
boot.extraModprobeConfig = ''
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
# MANUAL: rustup target add x86_64-unknown-linux-musl
|
|
||||||
# MANUAL: rustup target add wasm32-unknown-unknown
|
|
||||||
# MANUAL: rustup component add rustc-codegen-cranelift
|
|
||||||
{
|
{
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
@@ -8,21 +5,6 @@
|
|||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
|
||||||
cargo_wrapped =
|
|
||||||
package: prog:
|
|
||||||
pkgs.writeShellScriptBin "${prog}" ''
|
|
||||||
export PATH="$PATH:${
|
|
||||||
lib.makeBinPath [
|
|
||||||
pkgs.clang
|
|
||||||
pkgs.pkg-config # Needed for openssl-sys
|
|
||||||
]
|
|
||||||
}"
|
|
||||||
# Needed for openssl-sys
|
|
||||||
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:${pkgs.openssl.dev}/lib/pkgconfig"
|
|
||||||
exec ${package}/bin/${prog} "''${@}"
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [ ];
|
imports = [ ];
|
||||||
|
|
||||||
@@ -42,6 +24,7 @@ in
|
|||||||
rustup
|
rustup
|
||||||
lldb # for lldb-vscode
|
lldb # for lldb-vscode
|
||||||
musl # for building static binaries
|
musl # for building static binaries
|
||||||
|
rust-analyzer
|
||||||
cargo-semver-checks
|
cargo-semver-checks
|
||||||
# ? cargo-bloat
|
# ? cargo-bloat
|
||||||
# ? cargo-outdated
|
# ? cargo-outdated
|
||||||
@@ -55,89 +38,17 @@ in
|
|||||||
".cargo/config.toml" = {
|
".cargo/config.toml" = {
|
||||||
source = ./files/cargo_config.toml;
|
source = ./files/cargo_config.toml;
|
||||||
};
|
};
|
||||||
".rustup/settings.toml" = {
|
# # TODO: Figure out what to do with credentials.
|
||||||
source = ./files/rustup_settings.toml;
|
# ".cargo/credentials.toml" = {
|
||||||
};
|
# source = ./files/cargo_credentials.toml;
|
||||||
|
# };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.persistence."/state" = lib.mkIf (!config.me.buildingIso) {
|
|
||||||
hideMounts = true;
|
|
||||||
users.talexander = {
|
|
||||||
directories = [
|
|
||||||
{
|
|
||||||
directory = ".rustup";
|
|
||||||
user = "talexander";
|
|
||||||
group = "talexander";
|
|
||||||
mode = "0755";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
directory = ".cargo/registry";
|
|
||||||
user = "talexander";
|
|
||||||
group = "talexander";
|
|
||||||
mode = "0755";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.link-rust-creds = {
|
|
||||||
# Contains credentials so it cannot be added to the nix store
|
|
||||||
enable = true;
|
|
||||||
description = "link-rust-creds";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
wants = [ "multi-user.target" ];
|
|
||||||
after = [ "multi-user.target" ];
|
|
||||||
# path = with pkgs; [
|
|
||||||
# zfs
|
|
||||||
# ];
|
|
||||||
unitConfig.DefaultDependencies = "no";
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = "yes";
|
|
||||||
};
|
|
||||||
script = ''
|
|
||||||
if [ -e /persist/manual/rust/cargo_credentials.toml ]; then
|
|
||||||
install --directory --owner talexander --group talexander --mode 0755 /home/talexander/.cargo
|
|
||||||
ln -s /persist/manual/rust/cargo_credentials.toml /home/talexander/.cargo/credentials.toml
|
|
||||||
fi
|
|
||||||
'';
|
|
||||||
preStop = ''
|
|
||||||
rm -f /home/talexander/.cargo/credentials.toml
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(final: prev: {
|
|
||||||
rustup = pkgs.symlinkJoin {
|
|
||||||
name = "rustup";
|
|
||||||
paths =
|
|
||||||
(builtins.map (cargo_wrapped prev.rustup) [
|
|
||||||
"cargo"
|
|
||||||
"cargo-clippy"
|
|
||||||
"cargo-fmt"
|
|
||||||
"cargo-miri"
|
|
||||||
"clippy-driver"
|
|
||||||
"rls"
|
|
||||||
"rust-analyzer"
|
|
||||||
"rust-gdb"
|
|
||||||
"rust-gdbgui"
|
|
||||||
"rust-lldb"
|
|
||||||
"rustc"
|
|
||||||
"rustdoc"
|
|
||||||
"rustfmt"
|
|
||||||
"rustup"
|
|
||||||
])
|
|
||||||
++ [
|
|
||||||
prev.rustup
|
|
||||||
];
|
|
||||||
buildInputs = [ pkgs.makeWrapper ];
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: Install clippy, cranelift, rust-src
|
# TODO: Install clippy, cranelift, rust-src
|
||||||
|
# TODO: Install rust targets x86_64-unknown-linux-musl and wasm32-unknown-unknown
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
default_toolchain = "nightly-x86_64-unknown-linux-gnu"
|
|
||||||
profile = "default"
|
|
||||||
version = "12"
|
|
||||||
|
|
||||||
[overrides]
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me = {
|
|
||||||
sops.enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install sops.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.me.sops.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
sops # For encrypting kubernetes secrets.
|
|
||||||
];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -20,12 +20,4 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.talexander =
|
|
||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.file.".ssh/config" = {
|
|
||||||
source = ./files/ssh_config;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
Host poudriere
|
|
||||||
ProxyJump talexander@mrmanager
|
|
||||||
HostName 10.215.1.203
|
|
||||||
|
|
||||||
Host controller0
|
|
||||||
ProxyJump talexander@mrmanager
|
|
||||||
HostName 10.215.1.204
|
|
||||||
|
|
||||||
Host controller1
|
|
||||||
ProxyJump talexander@mrmanager
|
|
||||||
HostName 10.215.1.205
|
|
||||||
|
|
||||||
Host controller2
|
|
||||||
ProxyJump talexander@mrmanager
|
|
||||||
HostName 10.215.1.206
|
|
||||||
|
|
||||||
Host worker0
|
|
||||||
ProxyJump talexander@mrmanager
|
|
||||||
HostName 10.215.1.207
|
|
||||||
|
|
||||||
Host worker1
|
|
||||||
ProxyJump talexander@mrmanager
|
|
||||||
HostName 10.215.1.208
|
|
||||||
|
|
||||||
Host worker2
|
|
||||||
ProxyJump talexander@mrmanager
|
|
||||||
HostName 10.215.1.209
|
|
||||||
|
|
||||||
Host brianai
|
|
||||||
ProxyJump talexander@mrmanager
|
|
||||||
HostName 10.215.1.215
|
|
||||||
|
|
||||||
Host *
|
|
||||||
Compression yes
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me = {
|
|
||||||
steam_run_free.enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install steam_run_free.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.me.steam_run_free.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
steam-run-free
|
|
||||||
];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me = {
|
|
||||||
tekton.enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install tekton.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.me.tekton.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
tektoncd-cli
|
|
||||||
];
|
|
||||||
}
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -53,7 +53,6 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
tooltip {
|
tooltip {
|
||||||
/* CSS for hover menu */
|
|
||||||
background-color: #323232;
|
background-color: #323232;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -184,23 +183,7 @@ tooltip {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#tray {
|
#tray {
|
||||||
/* CSS rules for the tray (not the right-click or hover menu) */
|
/* No styles */
|
||||||
}
|
|
||||||
|
|
||||||
/* #tray menu menuitem */
|
|
||||||
#tray menu {
|
|
||||||
/* CSS for right click menu */
|
|
||||||
background: #323232;
|
|
||||||
padding: 5px;
|
|
||||||
border: 1px solid white;
|
|
||||||
}
|
|
||||||
#tray menu menuitem {
|
|
||||||
/* CSS for menu items in the right click menu */
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray menu menuitem:hover {
|
|
||||||
/* CSS for hovering over a right-click menu item. */
|
|
||||||
background-color: #434343;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#window {
|
#window {
|
||||||
|
|||||||
101
nix/steam_deck/configuration/flake.lock
generated
101
nix/steam_deck/configuration/flake.lock
generated
@@ -1,101 +0,0 @@
|
|||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"flake-utils": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1659877975,
|
|
||||||
"narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=",
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "numtide",
|
|
||||||
"repo": "flake-utils",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"home-manager": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1739314552,
|
|
||||||
"narHash": "sha256-ggVf2BclyIW3jexc/uvgsgJH4e2cuG6Nyg54NeXgbFI=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"rev": "83bd3a26ac0526ae04fa74df46738bb44b89dcdd",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "home-manager",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"impermanence": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1737831083,
|
|
||||||
"narHash": "sha256-LJggUHbpyeDvNagTUrdhe/pRVp4pnS6wVKALS782gRI=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "impermanence",
|
|
||||||
"rev": "4b3e914cdf97a5b536a889e939fb2fd2b043a170",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "impermanence",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixgl": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-utils": "flake-utils",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1713543440,
|
|
||||||
"narHash": "sha256-lnzZQYG0+EXl/6NkGpyIz+FEOc/DSEG57AP1VsdeNrM=",
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixGL",
|
|
||||||
"rev": "310f8e49a149e4c9ea52f1adf70cdc768ec53f8a",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nix-community",
|
|
||||||
"repo": "nixGL",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1739138025,
|
|
||||||
"narHash": "sha256-M4ilIfGxzbBZuURokv24aqJTbdjPA9K+DtKUzrJaES4=",
|
|
||||||
"owner": "nixos",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "b2243f41e860ac85c0b446eadc6930359b294e79",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "nixos",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"home-manager": "home-manager",
|
|
||||||
"impermanence": "impermanence",
|
|
||||||
"nixgl": "nixgl",
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
||||||
@@ -1,47 +0,0 @@
|
|||||||
{
|
|
||||||
description = "My system configuration";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
|
||||||
nixgl.url = "github:nix-community/nixGL";
|
|
||||||
nixgl.inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
home-manager = {
|
|
||||||
url = "github:nix-community/home-manager";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
impermanence = {
|
|
||||||
url = "github:nix-community/impermanence";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
outputs =
|
|
||||||
{
|
|
||||||
nixpkgs,
|
|
||||||
nixgl,
|
|
||||||
home-manager,
|
|
||||||
impermanence,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
system = "x86_64-linux";
|
|
||||||
pkgs = import nixpkgs {
|
|
||||||
inherit system;
|
|
||||||
overlays = [ nixgl.overlay ];
|
|
||||||
};
|
|
||||||
in
|
|
||||||
# pkgs = nixpkgs.legacyPackages.${system};
|
|
||||||
{
|
|
||||||
defaultPackage.${system} = home-manager.defaultPackage.${system};
|
|
||||||
homeConfigurations."deck" = home-manager.lib.homeManagerConfiguration {
|
|
||||||
inherit pkgs;
|
|
||||||
|
|
||||||
extraSpecialArgs = { inherit nixgl; };
|
|
||||||
|
|
||||||
modules = [
|
|
||||||
{ nixpkgs.overlays = [ nixgl.overlay ]; }
|
|
||||||
impermanence.homeManagerModules.impermanence
|
|
||||||
./hosts/deck
|
|
||||||
./home.nix
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
# TODO: Optimize for znver2
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
nixgl,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./roles/2ship2harkinian
|
|
||||||
./roles/graphics
|
|
||||||
./roles/shipwright
|
|
||||||
./roles/sm64ex
|
|
||||||
./roles/steam_rom_manager
|
|
||||||
./util/unfree_polyfill
|
|
||||||
];
|
|
||||||
|
|
||||||
home.username = "deck";
|
|
||||||
home.homeDirectory = "/home/deck";
|
|
||||||
home.stateVersion = "24.11";
|
|
||||||
|
|
||||||
programs.home-manager.enable = true;
|
|
||||||
|
|
||||||
# enable flakes
|
|
||||||
nix = {
|
|
||||||
package = pkgs.nix;
|
|
||||||
settings.experimental-features = [
|
|
||||||
"nix-command"
|
|
||||||
"flakes"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
# Automatic garbage collection
|
|
||||||
nix.gc = {
|
|
||||||
# Runs nix-collect-garbage --delete-older-than 30d
|
|
||||||
automatic = true;
|
|
||||||
randomizedDelaySec = "14m";
|
|
||||||
options = "--delete-older-than 30d";
|
|
||||||
};
|
|
||||||
nix.settings.auto-optimise-store = true;
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
pkgs.nixgl.nixGLIntel
|
|
||||||
(pkgs.nixgl.nixGLCommon pkgs.nixgl.nixGLIntel)
|
|
||||||
pkgs.nixgl.nixVulkanIntel
|
|
||||||
];
|
|
||||||
|
|
||||||
# This would keep build-time dependencies so I can rebuild while offline.
|
|
||||||
# nix.settings = {
|
|
||||||
# keep-outputs = true;
|
|
||||||
# keep-derivations = true;
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
config = {
|
|
||||||
me.graphical = true;
|
|
||||||
me.ship2harkinian.enable = true;
|
|
||||||
me.shipwright.enable = true;
|
|
||||||
me.sm64ex.enable = true;
|
|
||||||
me.steam_rom_manager.enable = true; # Steam rom manager UI does not render. I think it wants to be in an AppImage.
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
# MANUAL: mkdir -p ~/.persist/.local/share/2ship/saves
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
steam_2s2h = pkgs.writeScriptBin "steam_2s2h" ''
|
|
||||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.libglvnd}/lib"
|
|
||||||
exec ${pkgs._2ship2harkinian}/bin/2s2h
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me = {
|
|
||||||
ship2harkinian.enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install 2ship2harkinian.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.me.ship2harkinian.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
|
||||||
allowedUnfree = [ "2ship2harkinian" ];
|
|
||||||
}
|
|
||||||
(lib.mkIf config.me.graphical {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
_2ship2harkinian
|
|
||||||
steam_2s2h
|
|
||||||
];
|
|
||||||
|
|
||||||
home.file.".local/share/2ship/2ship2harkinian.json" = {
|
|
||||||
source = ./files/2ship2harkinian.json;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.persistence."/home/deck/.persist" = {
|
|
||||||
directories = [
|
|
||||||
{
|
|
||||||
directory = ".local/share/2ship/saves";
|
|
||||||
method = "symlink";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
home.persistence."/home/deck/.state" = {
|
|
||||||
files = [
|
|
||||||
".local/share/2ship/mm.o2r"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(final: prev: {
|
|
||||||
_2ship2harkinian = pkgs.buildEnv {
|
|
||||||
name = prev._2ship2harkinian.name;
|
|
||||||
paths = [
|
|
||||||
(config.lib.nixGL.wrap prev._2ship2harkinian)
|
|
||||||
];
|
|
||||||
extraOutputsToInstall = [
|
|
||||||
"man"
|
|
||||||
"doc"
|
|
||||||
"info"
|
|
||||||
];
|
|
||||||
# We have to use 555 instead of the normal 444 here because the .desktop file ends up inside $HOME on steam deck and desktop files must be either not in $HOME or must be executable, otherwise KDE Plasma refuses to execute them.
|
|
||||||
postBuild = ''
|
|
||||||
chmod 0555 $out/share/applications/2s2h.desktop
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
})
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{
|
|
||||||
"CVars": {
|
|
||||||
"gInterpolationFPS": 60,
|
|
||||||
"gSettings": {
|
|
||||||
"InternalResolution": 2.0,
|
|
||||||
"MSAAValue": 2,
|
|
||||||
"OpenMenuBar": 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Window": {
|
|
||||||
"Fullscreen": {
|
|
||||||
"Enabled": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me = {
|
|
||||||
blank.enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install blank.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.me.blank.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
];
|
|
||||||
}
|
|
||||||
(lib.mkIf config.me.graphical {
|
|
||||||
})
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
nixgl,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me.graphics_card_type = lib.mkOption {
|
|
||||||
type = lib.types.nullOr (
|
|
||||||
lib.types.enum [
|
|
||||||
"amd"
|
|
||||||
"intel"
|
|
||||||
"nvidia"
|
|
||||||
]
|
|
||||||
);
|
|
||||||
default = null;
|
|
||||||
example = "amd";
|
|
||||||
description = "What graphics card type is in the computer.";
|
|
||||||
};
|
|
||||||
|
|
||||||
options.me.graphical = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install graphical programs.";
|
|
||||||
};
|
|
||||||
|
|
||||||
config = (
|
|
||||||
lib.mkMerge [
|
|
||||||
(lib.mkIf config.me.graphical {
|
|
||||||
nixGL.packages = nixgl.packages;
|
|
||||||
# home.packages = with pkgs; [
|
|
||||||
# mesa-demos # for glxgears
|
|
||||||
# vulkan-tools # for vkcube
|
|
||||||
# ];
|
|
||||||
})
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,78 +0,0 @@
|
|||||||
# MANUAL: mkdir -p ~/.persist/.local/share/soh/Save
|
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
steam_shipwright = pkgs.writeScriptBin "steam_soh" ''
|
|
||||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.libglvnd}/lib"
|
|
||||||
exec ${pkgs.shipwright}/bin/soh
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me = {
|
|
||||||
shipwright.enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install shipwright.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.me.shipwright.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
|
||||||
allowedUnfree = [ "shipwright" ];
|
|
||||||
}
|
|
||||||
(lib.mkIf config.me.graphical {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
shipwright
|
|
||||||
steam_shipwright
|
|
||||||
];
|
|
||||||
|
|
||||||
home.file.".local/share/soh/shipofharkinian.json" = {
|
|
||||||
source = ./files/shipofharkinian.json;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.persistence."/home/deck/.persist" = {
|
|
||||||
directories = [
|
|
||||||
{
|
|
||||||
directory = ".local/share/soh/Save";
|
|
||||||
method = "symlink";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
home.persistence."/home/deck/.state" = {
|
|
||||||
files = [
|
|
||||||
".local/share/soh/oot.otr"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(final: prev: {
|
|
||||||
shipwright = pkgs.buildEnv {
|
|
||||||
name = prev.shipwright.name;
|
|
||||||
paths = [
|
|
||||||
(config.lib.nixGL.wrap prev.shipwright)
|
|
||||||
];
|
|
||||||
extraOutputsToInstall = [
|
|
||||||
"man"
|
|
||||||
"doc"
|
|
||||||
"info"
|
|
||||||
];
|
|
||||||
# We have to use 555 instead of the normal 444 here because the .desktop file ends up inside $HOME on steam deck and desktop files must be either not in $HOME or must be executable, otherwise KDE Plasma refuses to execute them.
|
|
||||||
postBuild = ''
|
|
||||||
chmod 0555 $out/share/applications/soh.desktop
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
})
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
{
|
|
||||||
"CVars": {
|
|
||||||
"gInternalResolution": 2.0,
|
|
||||||
"gInterpolationFPS": 60,
|
|
||||||
"gMSAAValue": 2,
|
|
||||||
"gMatchRefreshRate": 0,
|
|
||||||
"gOnFileSelectNameEntry": 0,
|
|
||||||
"gOpenWindows": {
|
|
||||||
"modalWindowEnabled": 1
|
|
||||||
},
|
|
||||||
"gZFightingMode": 0
|
|
||||||
},
|
|
||||||
"ConfigVersion": 2,
|
|
||||||
"Window": {
|
|
||||||
"Fullscreen": {
|
|
||||||
"Enabled": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
steam_sm64ex = pkgs.writeScriptBin "steam_sm64ex" ''
|
|
||||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${pkgs.libglvnd}/lib"
|
|
||||||
exec ${pkgs.sm64ex}/bin/sm64ex
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me = {
|
|
||||||
sm64ex.enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install sm64ex.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.me.sm64ex.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
(lib.mkIf config.me.graphical {
|
|
||||||
allowedUnfree = [ "sm64ex" ];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
sm64ex
|
|
||||||
steam_sm64ex
|
|
||||||
];
|
|
||||||
|
|
||||||
# nixpkgs.overlays = [
|
|
||||||
# (final: prev: {
|
|
||||||
# sm4ex = prev.sm64ex.override {
|
|
||||||
# baseRom.name = "SuperMario64.z64";
|
|
||||||
# };
|
|
||||||
# })
|
|
||||||
# ];
|
|
||||||
|
|
||||||
home.file.".local/share/sm64ex/sm64config.txt" = {
|
|
||||||
source = ./files/sm64config.txt;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.persistence."/home/deck/.persist" = {
|
|
||||||
files = [
|
|
||||||
".local/share/sm64ex/sm64_save_file.bin"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(final: prev: {
|
|
||||||
sm64ex =
|
|
||||||
let
|
|
||||||
desktop_item = pkgs.makeDesktopItem {
|
|
||||||
name = "sm64ex";
|
|
||||||
desktopName = "Super Mario 64";
|
|
||||||
comment = "A PC Port of Super Mario 64.";
|
|
||||||
categories = [
|
|
||||||
"Game"
|
|
||||||
];
|
|
||||||
icon = "sm64ex";
|
|
||||||
type = "Application";
|
|
||||||
exec = "sm64ex";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
pkgs.buildEnv {
|
|
||||||
name = prev.sm64ex.name;
|
|
||||||
paths = [
|
|
||||||
(config.lib.nixGL.wrap prev.sm64ex)
|
|
||||||
];
|
|
||||||
extraOutputsToInstall = [
|
|
||||||
"man"
|
|
||||||
"doc"
|
|
||||||
"info"
|
|
||||||
];
|
|
||||||
# We have to use 555 instead of the normal 444 here because the .desktop file ends up inside $HOME on steam deck and desktop files must be either not in $HOME or must be executable, otherwise KDE Plasma refuses to execute them.
|
|
||||||
postBuild = ''
|
|
||||||
install -m 555 -D "${desktop_item}/share/applications/"* -t $out/share/applications/
|
|
||||||
install -m 444 -D "${./files/icon.png}" $out/share/pixmaps/sm64ex.png
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
})
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
fullscreen true
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
{
|
|
||||||
stdenv,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
package = (pkgs.callPackage ./package.nix { });
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [ ];
|
|
||||||
|
|
||||||
options.me = {
|
|
||||||
steam_rom_manager.enable = lib.mkOption {
|
|
||||||
type = lib.types.bool;
|
|
||||||
default = false;
|
|
||||||
example = true;
|
|
||||||
description = "Whether we want to install steam_rom_manager.";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf config.me.steam_rom_manager.enable (
|
|
||||||
lib.mkMerge [
|
|
||||||
(lib.mkIf config.me.graphical {
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
package
|
|
||||||
];
|
|
||||||
})
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
{
|
|
||||||
stdenv,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
makeDesktopItem,
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
version = "2.5.29";
|
|
||||||
icon = pkgs.fetchurl {
|
|
||||||
url = "https://github.com/SteamGridDB/steam-rom-manager/blob/master/src/assets/icons/512x512.png?raw=true";
|
|
||||||
hash = "sha256-Nx29nJ2+44AYrTLP+CNmDJFAf2sjrH7sfYhg9fJx2qo=";
|
|
||||||
};
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
name = "steam-rom-manager";
|
|
||||||
src = pkgs.fetchurl {
|
|
||||||
url = "https://github.com/SteamGridDB/steam-rom-manager/releases/download/v${version}/Steam-ROM-Manager-${version}.AppImage";
|
|
||||||
hash = "sha256-6ZJ+MGIgr2osuQuqD6N9NnPiJFNq/HW6ivG8tyXUhvs=";
|
|
||||||
};
|
|
||||||
phases = [
|
|
||||||
"installPhase"
|
|
||||||
];
|
|
||||||
installPhase = ''
|
|
||||||
runHook preInstall
|
|
||||||
mkdir -p $out/bin
|
|
||||||
install --mode=0755 $src $out/bin/steam-rom-manager
|
|
||||||
runHook postInstall
|
|
||||||
'';
|
|
||||||
# We have to use 555 instead of the normal 444 here because the .desktop file ends up inside $HOME on steam deck and desktop files must be either not in $HOME or must be executable, otherwise KDE Plasma refuses to execute them.
|
|
||||||
postInstall = ''
|
|
||||||
mkdir -p $out/share/{applications,pixmaps}
|
|
||||||
install -m 555 -D "$desktopItem/share/applications/"* -t $out/share/applications/
|
|
||||||
install -m 444 -D "${icon}" $out/share/pixmaps/steamrommanager.png
|
|
||||||
'';
|
|
||||||
|
|
||||||
desktopItem = makeDesktopItem {
|
|
||||||
name = "steam-rom-manager";
|
|
||||||
desktopName = "Steam Rom Manager";
|
|
||||||
comment = "Manage additional entries in the Steam launcher.";
|
|
||||||
categories = [
|
|
||||||
"Application"
|
|
||||||
"Utility"
|
|
||||||
];
|
|
||||||
icon = "steamrommanager";
|
|
||||||
type = "Application";
|
|
||||||
exec = "steam-rom-manager";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
{ config, lib, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
inherit (builtins) elem;
|
|
||||||
inherit (lib) getName mkOption;
|
|
||||||
inherit (lib.types) listOf str;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
# Pending https://github.com/NixOS/nixpkgs/issues/55674
|
|
||||||
options.allowedUnfree = mkOption {
|
|
||||||
type = listOf str;
|
|
||||||
default = [ ];
|
|
||||||
};
|
|
||||||
config.nixpkgs.config.allowUnfreePredicate = p: elem (getName p) config.allowedUnfree;
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user