Remove home manager from the steam deck.
This commit is contained in:
parent
ae10e31365
commit
16811fb240
61
nix/steam_deck/configuration.nix
Normal file
61
nix/steam_deck/configuration.nix
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
nixgl,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# ./roles/2ship2harkinian
|
||||||
|
# ./roles/ares
|
||||||
|
# ./roles/dolphin
|
||||||
|
# ./roles/dont_use_substituters
|
||||||
|
# ./roles/duckstation
|
||||||
|
# ./roles/global_options
|
||||||
|
# ./roles/graphics
|
||||||
|
# ./roles/pcsx2
|
||||||
|
# ./roles/rpcs3
|
||||||
|
# ./roles/ryujinx
|
||||||
|
# ./roles/shipwright
|
||||||
|
# ./roles/sm64ex
|
||||||
|
# ./roles/spaghettikart
|
||||||
|
# ./roles/steam_rom_manager
|
||||||
|
# ./roles/yuzu
|
||||||
|
# ./util/copy_files
|
||||||
|
# ./util/persist_symlink
|
||||||
|
./util/unfree_polyfill
|
||||||
|
];
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
# };
|
||||||
|
|
||||||
|
config = {
|
||||||
|
castrum.packages = with pkgs; [ nano ];
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -1,79 +0,0 @@
|
|||||||
* Initial Setup
|
|
||||||
** Mount /home/deck/nix to /nix
|
|
||||||
The default /nix is too small and it could be modified by OS releases. We want to use something in our home folder since that will be untouched in upgrades.
|
|
||||||
|
|
||||||
# TODO: /home/nix gets owned by root but it should be owned by deck:deck for single-user nix installs
|
|
||||||
|
|
||||||
# TODO: nixos-installer adds this to /home/deck/.bash_profile , will this be wiped out in updates?
|
|
||||||
# if [ -e /home/deck/.nix-profile/etc/profile.d/nix.sh ]; then . /home/deck/.nix-profile/etc/profile.d/nix.sh; fi # added by Nix installer
|
|
||||||
|
|
||||||
Create =/etc/systemd/system/nix-directory.service=
|
|
||||||
#+begin_src text
|
|
||||||
[Unit]
|
|
||||||
Description=Create a `/nix` directory to be used for bind mounting
|
|
||||||
#PropagatesStopTo=nix-daemon.service
|
|
||||||
PropagatesStopTo=nix.mount
|
|
||||||
DefaultDependencies=no
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
ExecStart=steamos-readonly disable
|
|
||||||
ExecStart=mkdir -vp /nix
|
|
||||||
ExecStart=chmod -v 0755 /nix
|
|
||||||
ExecStart=chown -v root /nix
|
|
||||||
ExecStart=chgrp -v root /nix
|
|
||||||
ExecStart=steamos-readonly enable
|
|
||||||
ExecStop=steamos-readonly disable
|
|
||||||
ExecStop=rmdir /nix
|
|
||||||
ExecStop=steamos-readonly enable
|
|
||||||
RemainAfterExit=true
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Create =/etc/systemd/system/nix.mount=
|
|
||||||
#+begin_src text
|
|
||||||
[Unit]
|
|
||||||
Description=Mount `/home/nix` on `/nix`
|
|
||||||
#PropagatesStopTo=nix-daemon.service
|
|
||||||
PropagatesStopTo=nix-directory.service
|
|
||||||
After=nix-directory.service
|
|
||||||
Requires=nix-directory.service
|
|
||||||
ConditionPathIsDirectory=/nix
|
|
||||||
DefaultDependencies=no
|
|
||||||
#RequiredBy=nix-daemon.service
|
|
||||||
#RequiredBy=nix-daemon.socket
|
|
||||||
|
|
||||||
[Mount]
|
|
||||||
What=/home/nix
|
|
||||||
Where=/nix
|
|
||||||
Type=none
|
|
||||||
DirectoryMode=0755
|
|
||||||
Options=bind
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Create =/etc/systemd/system/ensure-symlinked-units-resolve.service=
|
|
||||||
#+begin_src text
|
|
||||||
[Unit]
|
|
||||||
Description=Ensure Nix related units which are symlinked resolve
|
|
||||||
After=nix.mount
|
|
||||||
Requires=nix-directory.service
|
|
||||||
Requires=nix.mount
|
|
||||||
DefaultDependencies=no
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=oneshot
|
|
||||||
RemainAfterExit=yes
|
|
||||||
ExecStart=/usr/bin/systemctl daemon-reload
|
|
||||||
#ExecStart=/usr/bin/systemctl restart --no-block nix-daemon.socket
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=sysinit.target
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Enable the mount by running
|
|
||||||
#+begin_src bash
|
|
||||||
sudo systemctl enable --now ensure-symlinked-units-resolve.service
|
|
||||||
#+end_src
|
|
||||||
** Install nix
|
|
||||||
#+begin_src bash
|
|
||||||
sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --no-daemon
|
|
||||||
#+end_src
|
|
||||||
82
nix/steam_deck/flake.lock
generated
Normal file
82
nix/steam_deck/flake.lock
generated
Normal file
@ -0,0 +1,82 @@
|
|||||||
|
{
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixgl": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": [
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1762090880,
|
||||||
|
"narHash": "sha256-fbRQzIGPkjZa83MowjbD2ALaJf9y6KMDdJBQMKFeY/8=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixGL",
|
||||||
|
"rev": "b6105297e6f0cd041670c3e8628394d4ee247ed5",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "nixGL",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1770197578,
|
||||||
|
"narHash": "sha256-AYqlWrX09+HvGs8zM6ebZ1pwUqjkfpnv8mewYwAo+iM=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "00c21e4c93d963c50d4c0c89bfa84ed6e0694df2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixgl": "nixgl",
|
||||||
|
"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
|
||||||
|
}
|
||||||
52
nix/steam_deck/flake.nix
Normal file
52
nix/steam_deck/flake.nix
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
description = "My system configuration";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
|
||||||
|
nixgl = {
|
||||||
|
url = "github:nix-community/nixGL";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
outputs =
|
||||||
|
{
|
||||||
|
nixpkgs,
|
||||||
|
nixgl,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
|
||||||
|
castrum = import ./util/castrum;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
packages = forAllSystems (
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
inherit system;
|
||||||
|
overlays = [ nixgl.overlay ];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
profile = castrum.lib.castrumSystem {
|
||||||
|
inherit pkgs;
|
||||||
|
# Specifies things to pin in the flake registry and in NIX_PATH.
|
||||||
|
pinned = {
|
||||||
|
nixpkgs = toString nixpkgs;
|
||||||
|
};
|
||||||
|
|
||||||
|
modules = [
|
||||||
|
# { nixpkgs.overlays = [ nixgl.overlay ]; }
|
||||||
|
# impermanence.homeManagerModules.impermanence
|
||||||
|
./hosts/deck
|
||||||
|
./configuration.nix
|
||||||
|
];
|
||||||
|
specialArgs = {
|
||||||
|
inherit nixgl;
|
||||||
|
inherit nixpkgs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
};
|
||||||
|
}
|
||||||
20
nix/steam_deck/hosts/deck/DEPLOY_SWITCH
Executable file
20
nix/steam_deck/hosts/deck/DEPLOY_SWITCH
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
set -euo pipefail
|
||||||
|
IFS=$'\n\t'
|
||||||
|
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
|
: "${JOBS:="1"}"
|
||||||
|
|
||||||
|
TARGET=deck@172.16.16.250
|
||||||
|
|
||||||
|
rsync -av --progress --delete --exclude=.git "$DIR/../../" "${TARGET}:~/.config/mynix"
|
||||||
|
rsync -av --progress --delete --exclude=.git "/persist/manual/manual_add_to_store" "${TARGET}:~/.persist/manual/"
|
||||||
|
|
||||||
|
# nix run --extra-experimental-features nix-command --extra-experimental-features flakes .#profile.switch
|
||||||
|
|
||||||
|
# ssh "${TARGET}" 'source /home/deck/.nix-profile/etc/profile.d/nix.sh && for f in ~/.persist/manual/manual_add_to_store/*; do nix-store --add-fixed sha256 "$f"; done'
|
||||||
|
|
||||||
|
ssh "${TARGET}" "source /home/deck/.nix-profile/etc/profile.d/nix.sh && nix run --extra-experimental-features nix-command --extra-experimental-features flakes /home/deck/.config/mynix#profile.switch --show-trace"
|
||||||
|
|
||||||
|
# ssh "${TARGET}" 'cat .config/mynix/flake.lock' > "$DIR/../../flake.lock"
|
||||||
30
nix/steam_deck/hosts/deck/default.nix
Normal file
30
nix/steam_deck/hosts/deck/default.nix
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [ ];
|
||||||
|
|
||||||
|
config = {
|
||||||
|
# me.ares.enable = true;
|
||||||
|
# me.dolphin.enable = true;
|
||||||
|
# me.dont_use_substituters.enable = true;
|
||||||
|
# me.duckstation.enable = true;
|
||||||
|
# me.graphical = true;
|
||||||
|
# me.optimizations.enable = true;
|
||||||
|
# me.pcsx2.enable = true;
|
||||||
|
# me.rpcs3.enable = true;
|
||||||
|
# me.ryujinx.enable = true;
|
||||||
|
# me.ship2harkinian.enable = true;
|
||||||
|
# me.shipwright.enable = true;
|
||||||
|
# me.sm64ex.enable = true;
|
||||||
|
# me.spaghettikart.enable = true;
|
||||||
|
# me.steam_rom_manager.enable = true; # Steam rom manager UI does not render. I think it wants to be in an AppImage.
|
||||||
|
# me.yuzu.enable = true;
|
||||||
|
|
||||||
|
castrum.packages = with pkgs; [ ];
|
||||||
|
};
|
||||||
|
}
|
||||||
72
nix/steam_deck/util/castrum/castrumSystem.nix
Normal file
72
nix/steam_deck/util/castrum/castrumSystem.nix
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
# Creates a profile. Arguments are forwarded to pkgs.buildEnv.
|
||||||
|
#
|
||||||
|
# The following attributes are available:
|
||||||
|
# - .switch: switches to the profile
|
||||||
|
# - .rollback: rolls back to the previous version of the profile
|
||||||
|
args@{
|
||||||
|
# nixpkgs to use
|
||||||
|
pkgs,
|
||||||
|
# Name of the profile, which appears in the Nix store path of the result
|
||||||
|
name ? "castrum-profile",
|
||||||
|
# Items to pin in the flake registry and NIX_PATH, such that they're seen by
|
||||||
|
# `nix run nixpkgs#hello` and `nix-shell -p hello --run hello`.
|
||||||
|
pinned ? { },
|
||||||
|
# Extra arguments given when switching profiles (n.b. not shell escaped).
|
||||||
|
extraSwitchArgs ? [ ],
|
||||||
|
|
||||||
|
modules ? [ ],
|
||||||
|
specialArgs ? { },
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
args' = builtins.removeAttrs args [
|
||||||
|
"pkgs"
|
||||||
|
"pinned"
|
||||||
|
"extraSwitchArgs"
|
||||||
|
"modules"
|
||||||
|
"specialArgs"
|
||||||
|
];
|
||||||
|
pins = import ./pin.nix { inherit pkgs pinned; };
|
||||||
|
|
||||||
|
config = pkgs.lib.evalModules {
|
||||||
|
modules = [ ./modules ] ++ modules;
|
||||||
|
specialArgs = specialArgs // {
|
||||||
|
_pkgs = pkgs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
env = pkgs.buildEnv (
|
||||||
|
args'
|
||||||
|
// {
|
||||||
|
inherit name;
|
||||||
|
paths = [ pkgs.nix ] ++ config.config.castrum.packages;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
in
|
||||||
|
env
|
||||||
|
// {
|
||||||
|
switch = pkgs.writeShellScriptBin "switch" ''
|
||||||
|
nix-env --set ${env} ${toString extraSwitchArgs} "$@"
|
||||||
|
'';
|
||||||
|
rollback = pkgs.writeShellScriptBin "rollback" ''
|
||||||
|
nix-env --rollback ${toString extraSwitchArgs} "$@"
|
||||||
|
'';
|
||||||
|
|
||||||
|
# pass through pins, so you can e.g. nix build .#profile.pins.channels
|
||||||
|
inherit pins;
|
||||||
|
# This script pins any of the items in "pinned" in both the flake registry
|
||||||
|
# and the nix channels, such that `nix run nixpkgs#hello` and
|
||||||
|
# `nix-shell -p hello --run hello` will hit the same nixpkgs as is used in
|
||||||
|
# the declarative profile.
|
||||||
|
#
|
||||||
|
# It is not really possible to cleanly roll this back in terms of the flake
|
||||||
|
# registry, so we suggest just reverting with git in that case.
|
||||||
|
pin = pkgs.writeShellScriptBin "pin" ''
|
||||||
|
if [[ $UID == 0 ]]; then
|
||||||
|
${pins.pinFlakes { isRoot = true; }}
|
||||||
|
else
|
||||||
|
${pins.pinFlakes { isRoot = false; }}
|
||||||
|
fi
|
||||||
|
nix-env --profile /nix/var/nix/profiles/per-user/$USER/channels --set ${pins.channels}
|
||||||
|
'';
|
||||||
|
}
|
||||||
3
nix/steam_deck/util/castrum/default.nix
Normal file
3
nix/steam_deck/util/castrum/default.nix
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
lib = import ./lib.nix;
|
||||||
|
}
|
||||||
3
nix/steam_deck/util/castrum/lib.nix
Normal file
3
nix/steam_deck/util/castrum/lib.nix
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
castrumSystem = import ./castrumSystem.nix;
|
||||||
|
}
|
||||||
13
nix/steam_deck/util/castrum/modules/default.nix
Normal file
13
nix/steam_deck/util/castrum/modules/default.nix
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./nixpkgs.nix
|
||||||
|
./packages.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
68
nix/steam_deck/util/castrum/modules/nixpkgs.nix
Normal file
68
nix/steam_deck/util/castrum/modules/nixpkgs.nix
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
options,
|
||||||
|
lib,
|
||||||
|
_pkgs,
|
||||||
|
nixpkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
# finalPkgs = _pkgs;
|
||||||
|
finalPkgs = import nixpkgs {
|
||||||
|
system = _pkgs.system;
|
||||||
|
config = { };
|
||||||
|
overlays = [ ];
|
||||||
|
# inherit system;
|
||||||
|
# overlays = [ nixgl.overlay ];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
];
|
||||||
|
|
||||||
|
# options.nixpkgs = {
|
||||||
|
# config = lib.mkOption {
|
||||||
|
# default = { };
|
||||||
|
# example = lib.literalExpression ''
|
||||||
|
# { allowBroken = true; allowUnfree = true; }
|
||||||
|
# '';
|
||||||
|
# type = configType;
|
||||||
|
# description = ''
|
||||||
|
# Global configuration for Nixpkgs.
|
||||||
|
# The complete list of [Nixpkgs configuration options](https://nixos.org/manual/nixpkgs/unstable/#sec-config-options-reference) is in the [Nixpkgs manual section on global configuration](https://nixos.org/manual/nixpkgs/unstable/#chap-packageconfig).
|
||||||
|
|
||||||
|
# Ignored when {option}`nixpkgs.pkgs` is set.
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
|
||||||
|
# overlays = lib.mkOption {
|
||||||
|
# default = [ ];
|
||||||
|
# example = lib.literalExpression ''
|
||||||
|
# [
|
||||||
|
# (self: super: {
|
||||||
|
# openssh = super.openssh.override {
|
||||||
|
# hpnSupport = true;
|
||||||
|
# kerberos = self.libkrb5;
|
||||||
|
# };
|
||||||
|
# })
|
||||||
|
# ]
|
||||||
|
# '';
|
||||||
|
# type = lib.types.listOf overlayType;
|
||||||
|
# description = ''
|
||||||
|
# List of overlays to apply to Nixpkgs.
|
||||||
|
# This option allows modifying the Nixpkgs package set accessed through the `pkgs` module argument.
|
||||||
|
|
||||||
|
# For details, see the [Overlays chapter in the Nixpkgs manual](https://nixos.org/manual/nixpkgs/stable/#chap-overlays).
|
||||||
|
|
||||||
|
# If the {option}`nixpkgs.pkgs` option is set, overlays specified using `nixpkgs.overlays` will be applied after the overlays that were already included in `nixpkgs.pkgs`.
|
||||||
|
# '';
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
|
||||||
|
config = {
|
||||||
|
_module.args = {
|
||||||
|
pkgs = finalPkgs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
25
nix/steam_deck/util/castrum/modules/packages.nix
Normal file
25
nix/steam_deck/util/castrum/modules/packages.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
];
|
||||||
|
|
||||||
|
options.castrum = {
|
||||||
|
packages = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.path;
|
||||||
|
default = [ ];
|
||||||
|
example = with pkgs; [
|
||||||
|
nano
|
||||||
|
bash
|
||||||
|
];
|
||||||
|
description = ''
|
||||||
|
List of packages to install.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
33
nix/steam_deck/util/castrum/pin.nix
Normal file
33
nix/steam_deck/util/castrum/pin.nix
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
pinned ? { },
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
inherit (pkgs) lib;
|
||||||
|
pathOk = item: builtins.match ".*-source$" (toString item) != null;
|
||||||
|
pathChecked =
|
||||||
|
name: item:
|
||||||
|
pkgs.lib.assertMsg (pathOk item) ''
|
||||||
|
Flake registry pin item path must end with -source, due to https://github.com/NixOS/nix/issues/7075.
|
||||||
|
Name: ${name}
|
||||||
|
Path: ${toString item}
|
||||||
|
|
||||||
|
Consider pinning nixpkgs with `builtins.fetchTarball` with `name` set to "source".
|
||||||
|
'';
|
||||||
|
|
||||||
|
pins = builtins.mapAttrs (
|
||||||
|
name: value:
|
||||||
|
assert pathChecked name value;
|
||||||
|
value
|
||||||
|
) pinned;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit pins;
|
||||||
|
channels = pkgs.linkFarm "user-environment" pins;
|
||||||
|
pinFlakes =
|
||||||
|
{ isRoot }:
|
||||||
|
lib.concatMapStringsSep "\n" (
|
||||||
|
name:
|
||||||
|
"nix registry pin ${lib.optionalString isRoot "--registry /etc/nix/registry.json"} --override-flake ${name} ${pins.${name}} ${name}"
|
||||||
|
) (builtins.attrNames pins);
|
||||||
|
}
|
||||||
20
nix/steam_deck/util/unfree_polyfill/default.nix
Normal file
20
nix/steam_deck/util/unfree_polyfill/default.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
foo,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user