mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-14 05:29:20 +03:00
Merge staging-next into staging
This commit is contained in:
commit
1ae7d136e8
88 changed files with 1974 additions and 960 deletions
|
@ -209,3 +209,6 @@ ce21e97a1f20dee15da85c084f9d1148d84f853b
|
||||||
|
|
||||||
# treewide: migrate packages to pkgs/by-name, take 1
|
# treewide: migrate packages to pkgs/by-name, take 1
|
||||||
571c71e6f73af34a229414f51585738894211408
|
571c71e6f73af34a229414f51585738894211408
|
||||||
|
|
||||||
|
# format files with nixfmt (#347275)
|
||||||
|
adb9714bd909df283c66bbd641bd631ff50a4260
|
||||||
|
|
3
.github/workflows/check-shell.yml
vendored
3
.github/workflows/check-shell.yml
vendored
|
@ -2,6 +2,9 @@ name: "Check shell"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
|
paths:
|
||||||
|
- 'shell.nix'
|
||||||
|
- './ci/**'
|
||||||
|
|
||||||
permissions: {}
|
permissions: {}
|
||||||
|
|
||||||
|
|
122
.github/workflows/eval.yml
vendored
122
.github/workflows/eval.yml
vendored
|
@ -1,6 +1,16 @@
|
||||||
name: Eval
|
name: Eval
|
||||||
|
|
||||||
on: pull_request_target
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
push:
|
||||||
|
# Keep this synced with ci/request-reviews/dev-branches.txt
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
- staging
|
||||||
|
- release-*
|
||||||
|
- staging-*
|
||||||
|
- haskell-updates
|
||||||
|
- python-updates
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
|
@ -11,6 +21,7 @@ jobs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
mergedSha: ${{ steps.merged.outputs.mergedSha }}
|
mergedSha: ${{ steps.merged.outputs.mergedSha }}
|
||||||
|
baseSha: ${{ steps.baseSha.outputs.baseSha }}
|
||||||
systems: ${{ steps.systems.outputs.systems }}
|
systems: ${{ steps.systems.outputs.systems }}
|
||||||
steps:
|
steps:
|
||||||
# Important: Because of `pull_request_target`, this doesn't check out the PR,
|
# Important: Because of `pull_request_target`, this doesn't check out the PR,
|
||||||
|
@ -24,7 +35,13 @@ jobs:
|
||||||
id: merged
|
id: merged
|
||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ github.token }}
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
GH_EVENT: ${{ github.event_name }}
|
||||||
run: |
|
run: |
|
||||||
|
case "$GH_EVENT" in
|
||||||
|
push)
|
||||||
|
echo "mergedSha=${{ github.sha }}" >> "$GITHUB_OUTPUT"
|
||||||
|
;;
|
||||||
|
pull_request_target)
|
||||||
if mergedSha=$(base/ci/get-merge-commit.sh ${{ github.repository }} ${{ github.event.number }}); then
|
if mergedSha=$(base/ci/get-merge-commit.sh ${{ github.repository }} ${{ github.event.number }}); then
|
||||||
echo "Checking the merge commit $mergedSha"
|
echo "Checking the merge commit $mergedSha"
|
||||||
echo "mergedSha=$mergedSha" >> "$GITHUB_OUTPUT"
|
echo "mergedSha=$mergedSha" >> "$GITHUB_OUTPUT"
|
||||||
|
@ -32,6 +49,8 @@ jobs:
|
||||||
# Skipping so that no notifications are sent
|
# Skipping so that no notifications are sent
|
||||||
echo "Skipping the rest..."
|
echo "Skipping the rest..."
|
||||||
fi
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
rm -rf base
|
rm -rf base
|
||||||
- name: Check out the PR at the test merge commit
|
- name: Check out the PR at the test merge commit
|
||||||
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
@ -39,8 +58,16 @@ jobs:
|
||||||
if: steps.merged.outputs.mergedSha
|
if: steps.merged.outputs.mergedSha
|
||||||
with:
|
with:
|
||||||
ref: ${{ steps.merged.outputs.mergedSha }}
|
ref: ${{ steps.merged.outputs.mergedSha }}
|
||||||
|
fetch-depth: 2
|
||||||
path: nixpkgs
|
path: nixpkgs
|
||||||
|
|
||||||
|
- name: Determine base commit
|
||||||
|
if: github.event_name == 'pull_request_target' && steps.merged.outputs.mergedSha
|
||||||
|
id: baseSha
|
||||||
|
run: |
|
||||||
|
baseSha=$(git -C nixpkgs rev-parse HEAD^1)
|
||||||
|
echo "baseSha=$baseSha" >> "$GITHUB_OUTPUT"
|
||||||
|
|
||||||
- name: Install Nix
|
- name: Install Nix
|
||||||
uses: cachix/install-nix-action@08dcb3a5e62fa31e2da3d490afc4176ef55ecd72 # v30
|
uses: cachix/install-nix-action@08dcb3a5e62fa31e2da3d490afc4176ef55ecd72 # v30
|
||||||
if: steps.merged.outputs.mergedSha
|
if: steps.merged.outputs.mergedSha
|
||||||
|
@ -105,6 +132,8 @@ jobs:
|
||||||
name: Process
|
name: Process
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [ outpaths, attrs ]
|
needs: [ outpaths, attrs ]
|
||||||
|
outputs:
|
||||||
|
baseRunId: ${{ steps.baseRunId.outputs.baseRunId }}
|
||||||
steps:
|
steps:
|
||||||
- name: Download output paths and eval stats for all systems
|
- name: Download output paths and eval stats for all systems
|
||||||
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
||||||
|
@ -124,18 +153,93 @@ jobs:
|
||||||
- name: Combine all output paths and eval stats
|
- name: Combine all output paths and eval stats
|
||||||
run: |
|
run: |
|
||||||
nix-build nixpkgs/ci -A eval.combine \
|
nix-build nixpkgs/ci -A eval.combine \
|
||||||
--arg resultsDir ./intermediate
|
--arg resultsDir ./intermediate \
|
||||||
|
-o prResult
|
||||||
|
|
||||||
- name: Upload the combined results
|
- name: Upload the combined results
|
||||||
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
|
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
|
||||||
with:
|
with:
|
||||||
name: result
|
name: result
|
||||||
path: result/*
|
path: prResult/*
|
||||||
|
|
||||||
|
- name: Get base run id
|
||||||
|
if: needs.attrs.outputs.baseSha
|
||||||
|
id: baseRunId
|
||||||
|
run: |
|
||||||
|
# Get the latest eval.yml workflow run for the PR's base commit
|
||||||
|
if ! run=$(gh api --method GET /repos/"$REPOSITORY"/actions/workflows/eval.yml/runs \
|
||||||
|
-f head_sha="$BASE_SHA" \
|
||||||
|
--jq '.workflow_runs | sort_by(.run_started_at) | .[-1]') \
|
||||||
|
|| [[ -z "$run" ]]; then
|
||||||
|
echo "Could not find an eval.yml workflow run for $BASE_SHA, cannot make comparison"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
echo "Comparing against $(jq .html_url <<< "$run")"
|
||||||
|
runId=$(jq .id <<< "$run")
|
||||||
|
conclusion=$(jq -r .conclusion <<< "$run")
|
||||||
|
|
||||||
# TODO: Run this workflow also on `push` (on at least the main development branches)
|
while [[ "$conclusion" == null ]]; do
|
||||||
# Then add an extra step here that waits for the base branch (not the merge base, because that could be very different)
|
echo "Workflow not done, waiting 10 seconds before checking again"
|
||||||
# to have completed the eval, then use
|
sleep 10
|
||||||
# gh api --method GET /repos/NixOS/nixpkgs/actions/workflows/eval.yml/runs -f head_sha=<BASE>
|
conclusion=$(gh api /repos/"$REPOSITORY"/actions/runs/"$runId" --jq '.conclusion')
|
||||||
# and follow it to the artifact results, where you can then download the outpaths.json from the base branch
|
done
|
||||||
# That can then be used to compare the number of changed paths, get evaluation stats and ping appropriate reviewers
|
|
||||||
|
if [[ "$conclusion" != "success" ]]; then
|
||||||
|
echo "Workflow was not successful, cannot make comparison"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "baseRunId=$runId" >> "$GITHUB_OUTPUT"
|
||||||
|
env:
|
||||||
|
REPOSITORY: ${{ github.repository }}
|
||||||
|
BASE_SHA: ${{ needs.attrs.outputs.baseSha }}
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
|
||||||
|
- uses: actions/download-artifact@v4
|
||||||
|
if: steps.baseRunId.outputs.baseRunId
|
||||||
|
with:
|
||||||
|
name: result
|
||||||
|
path: baseResult
|
||||||
|
github-token: ${{ github.token }}
|
||||||
|
run-id: ${{ steps.baseRunId.outputs.baseRunId }}
|
||||||
|
|
||||||
|
- name: Compare against the base branch
|
||||||
|
if: steps.baseRunId.outputs.baseRunId
|
||||||
|
run: |
|
||||||
|
nix-build nixpkgs/ci -A eval.compare \
|
||||||
|
--arg beforeResultDir ./baseResult \
|
||||||
|
--arg afterResultDir ./prResult \
|
||||||
|
-o comparison
|
||||||
|
|
||||||
|
# TODO: Request reviews from maintainers for packages whose files are modified in the PR
|
||||||
|
|
||||||
|
- name: Upload the combined results
|
||||||
|
if: steps.baseRunId.outputs.baseRunId
|
||||||
|
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3
|
||||||
|
with:
|
||||||
|
name: comparison
|
||||||
|
path: comparison/*
|
||||||
|
|
||||||
|
# Separate job to have a very tightly scoped PR write token
|
||||||
|
tag:
|
||||||
|
name: Tag
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: process
|
||||||
|
if: needs.process.outputs.baseRunId
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
steps:
|
||||||
|
- name: Download process result
|
||||||
|
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8
|
||||||
|
with:
|
||||||
|
name: comparison
|
||||||
|
path: comparison
|
||||||
|
|
||||||
|
- name: Tagging pull request
|
||||||
|
run: |
|
||||||
|
gh api \
|
||||||
|
--method POST \
|
||||||
|
/repos/${{ github.repository }}/issues/${{ github.event.number }}/labels \
|
||||||
|
--input <(jq -c '{ labels: .labels }' comparison/changed-paths.json)
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
|
152
ci/eval/compare.jq
Normal file
152
ci/eval/compare.jq
Normal file
|
@ -0,0 +1,152 @@
|
||||||
|
# Turns
|
||||||
|
#
|
||||||
|
# {
|
||||||
|
# "hello.aarch64-linux": "a",
|
||||||
|
# "hello.x86_64-linux": "b",
|
||||||
|
# "hello.aarch64-darwin": "c",
|
||||||
|
# "hello.x86_64-darwin": "d"
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# into
|
||||||
|
#
|
||||||
|
# {
|
||||||
|
# "hello": {
|
||||||
|
# "linux": {
|
||||||
|
# "aarch64": "a",
|
||||||
|
# "x86_64": "b"
|
||||||
|
# },
|
||||||
|
# "darwin": {
|
||||||
|
# "aarch64": "c",
|
||||||
|
# "x86_64": "d"
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# while filtering out any attribute paths that don't match this pattern
|
||||||
|
def expand_system:
|
||||||
|
to_entries
|
||||||
|
| map(
|
||||||
|
.key |= split(".")
|
||||||
|
| select(.key | length > 1)
|
||||||
|
| .double = (.key[-1] | split("-"))
|
||||||
|
| select(.double | length == 2)
|
||||||
|
)
|
||||||
|
| group_by(.key[0:-1])
|
||||||
|
| map(
|
||||||
|
{
|
||||||
|
key: .[0].key[0:-1] | join("."),
|
||||||
|
value:
|
||||||
|
group_by(.double[1])
|
||||||
|
| map(
|
||||||
|
{
|
||||||
|
key: .[0].double[1],
|
||||||
|
value: map(.key = .double[0]) | from_entries
|
||||||
|
}
|
||||||
|
)
|
||||||
|
| from_entries
|
||||||
|
})
|
||||||
|
| from_entries
|
||||||
|
;
|
||||||
|
|
||||||
|
# Transposes
|
||||||
|
#
|
||||||
|
# {
|
||||||
|
# "a": [ "x", "y" ],
|
||||||
|
# "b": [ "x" ],
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# into
|
||||||
|
#
|
||||||
|
# {
|
||||||
|
# "x": [ "a", "b" ],
|
||||||
|
# "y": [ "a" ]
|
||||||
|
# }
|
||||||
|
def transpose:
|
||||||
|
[
|
||||||
|
to_entries[]
|
||||||
|
| {
|
||||||
|
key: .key,
|
||||||
|
value: .value[]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
| group_by(.value)
|
||||||
|
| map({
|
||||||
|
key: .[0].value,
|
||||||
|
value: map(.key)
|
||||||
|
})
|
||||||
|
| from_entries
|
||||||
|
;
|
||||||
|
|
||||||
|
# Computes the key difference for two objects:
|
||||||
|
# {
|
||||||
|
# added: [ <keys only in the second object> ],
|
||||||
|
# removed: [ <keys only in the first object> ],
|
||||||
|
# changed: [ <keys with different values between the two objects> ],
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
def diff($before; $after):
|
||||||
|
{
|
||||||
|
added: $after | delpaths($before | keys | map([.])) | keys,
|
||||||
|
removed: $before | delpaths($after | keys | map([.])) | keys,
|
||||||
|
changed:
|
||||||
|
$before
|
||||||
|
| to_entries
|
||||||
|
| map(
|
||||||
|
$after."\(.key)" as $after2
|
||||||
|
| select(
|
||||||
|
# Filter out attributes that don't exist anymore
|
||||||
|
($after2 != null)
|
||||||
|
and
|
||||||
|
# Filter out attributes that are the same as the new value
|
||||||
|
(.value != $after2)
|
||||||
|
)
|
||||||
|
| .key
|
||||||
|
)
|
||||||
|
}
|
||||||
|
;
|
||||||
|
|
||||||
|
($before[0] | expand_system) as $before
|
||||||
|
| ($after[0] | expand_system) as $after
|
||||||
|
| .attrdiff = diff($before; $after)
|
||||||
|
| .rebuildsByKernel = (
|
||||||
|
.attrdiff.changed
|
||||||
|
| map({
|
||||||
|
key: .,
|
||||||
|
value: diff($before."\(.)"; $after."\(.)").changed
|
||||||
|
})
|
||||||
|
| from_entries
|
||||||
|
| transpose
|
||||||
|
)
|
||||||
|
| .rebuildCountByKernel = (
|
||||||
|
.rebuildsByKernel
|
||||||
|
| with_entries(.value |= length)
|
||||||
|
| pick(.linux, .darwin)
|
||||||
|
| {
|
||||||
|
linux: (.linux // 0),
|
||||||
|
darwin: (.darwin // 0),
|
||||||
|
}
|
||||||
|
)
|
||||||
|
| .labels = (
|
||||||
|
.rebuildCountByKernel
|
||||||
|
| to_entries
|
||||||
|
| map(
|
||||||
|
"10.rebuild-\(.key): " +
|
||||||
|
if .value == 0 then
|
||||||
|
"0"
|
||||||
|
elif .value <= 10 then
|
||||||
|
"1-10"
|
||||||
|
elif .value <= 100 then
|
||||||
|
"11-100"
|
||||||
|
elif .value <= 500 then
|
||||||
|
"101-500"
|
||||||
|
elif .value <= 1000 then
|
||||||
|
"501-1000"
|
||||||
|
elif .value <= 2500 then
|
||||||
|
"1001-2500"
|
||||||
|
elif .value <= 5000 then
|
||||||
|
"2501-5000"
|
||||||
|
else
|
||||||
|
"5000+"
|
||||||
|
end
|
||||||
|
)
|
||||||
|
)
|
|
@ -50,7 +50,11 @@ let
|
||||||
export GC_INITIAL_HEAP_SIZE=4g
|
export GC_INITIAL_HEAP_SIZE=4g
|
||||||
command time -v \
|
command time -v \
|
||||||
nix-instantiate --eval --strict --json --show-trace \
|
nix-instantiate --eval --strict --json --show-trace \
|
||||||
$src/pkgs/top-level/release-attrpaths-superset.nix -A paths \
|
"$src/pkgs/top-level/release-attrpaths-superset.nix" \
|
||||||
|
-A paths \
|
||||||
|
-I "$src" \
|
||||||
|
--option restrict-eval true \
|
||||||
|
--option allow-import-from-derivation false \
|
||||||
--arg enableWarnings false > $out/paths.json
|
--arg enableWarnings false > $out/paths.json
|
||||||
mv "$supportedSystemsPath" $out/systems.json
|
mv "$supportedSystemsPath" $out/systems.json
|
||||||
'';
|
'';
|
||||||
|
@ -84,6 +88,8 @@ let
|
||||||
set +e
|
set +e
|
||||||
command time -f "Chunk $myChunk on $system done [%MKB max resident, %Es elapsed] %C" \
|
command time -f "Chunk $myChunk on $system done [%MKB max resident, %Es elapsed] %C" \
|
||||||
nix-env -f "${nixpkgs}/pkgs/top-level/release-attrpaths-parallel.nix" \
|
nix-env -f "${nixpkgs}/pkgs/top-level/release-attrpaths-parallel.nix" \
|
||||||
|
--option restrict-eval true \
|
||||||
|
--option allow-import-from-derivation false \
|
||||||
--query --available \
|
--query --available \
|
||||||
--no-name --attr-path --out-path \
|
--no-name --attr-path --out-path \
|
||||||
--show-trace \
|
--show-trace \
|
||||||
|
@ -93,6 +99,8 @@ let
|
||||||
--arg systems "[ \"$system\" ]" \
|
--arg systems "[ \"$system\" ]" \
|
||||||
--arg checkMeta ${lib.boolToString checkMeta} \
|
--arg checkMeta ${lib.boolToString checkMeta} \
|
||||||
--arg includeBroken ${lib.boolToString includeBroken} \
|
--arg includeBroken ${lib.boolToString includeBroken} \
|
||||||
|
-I ${nixpkgs} \
|
||||||
|
-I ${attrpathFile} \
|
||||||
> "$outputDir/result/$myChunk"
|
> "$outputDir/result/$myChunk"
|
||||||
exitCode=$?
|
exitCode=$?
|
||||||
set -e
|
set -e
|
||||||
|
@ -238,6 +246,24 @@ let
|
||||||
jq -s from_entries > $out/stats.json
|
jq -s from_entries > $out/stats.json
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
compare =
|
||||||
|
{ beforeResultDir, afterResultDir }:
|
||||||
|
runCommand "compare"
|
||||||
|
{
|
||||||
|
nativeBuildInputs = [
|
||||||
|
jq
|
||||||
|
];
|
||||||
|
}
|
||||||
|
''
|
||||||
|
mkdir $out
|
||||||
|
jq -n -f ${./compare.jq} \
|
||||||
|
--slurpfile before ${beforeResultDir}/outpaths.json \
|
||||||
|
--slurpfile after ${afterResultDir}/outpaths.json \
|
||||||
|
> $out/changed-paths.json
|
||||||
|
|
||||||
|
# TODO: Compare eval stats
|
||||||
|
'';
|
||||||
|
|
||||||
full =
|
full =
|
||||||
{
|
{
|
||||||
# Whether to evaluate just a single system, by default all are evaluated
|
# Whether to evaluate just a single system, by default all are evaluated
|
||||||
|
@ -268,6 +294,7 @@ in
|
||||||
attrpathsSuperset
|
attrpathsSuperset
|
||||||
singleSystem
|
singleSystem
|
||||||
combine
|
combine
|
||||||
|
compare
|
||||||
# The above three are used by separate VMs in a GitHub workflow,
|
# The above three are used by separate VMs in a GitHub workflow,
|
||||||
# while the below is intended for testing on a single local machine
|
# while the below is intended for testing on a single local machine
|
||||||
full
|
full
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
# Trusted development branches:
|
# Trusted development branches:
|
||||||
# These generally require PRs to update and are built by Hydra.
|
# These generally require PRs to update and are built by Hydra.
|
||||||
|
# Keep this synced with the branches in .github/workflows/eval.yml
|
||||||
master
|
master
|
||||||
staging
|
staging
|
||||||
release-*
|
release-*
|
||||||
|
|
|
@ -6,9 +6,9 @@ let
|
||||||
filterAttrs
|
filterAttrs
|
||||||
foldl
|
foldl
|
||||||
hasInfix
|
hasInfix
|
||||||
|
isAttrs
|
||||||
isFunction
|
isFunction
|
||||||
isList
|
isList
|
||||||
isString
|
|
||||||
mapAttrs
|
mapAttrs
|
||||||
optional
|
optional
|
||||||
optionalAttrs
|
optionalAttrs
|
||||||
|
@ -55,24 +55,34 @@ let
|
||||||
*/
|
*/
|
||||||
flakeExposed = import ./flake-systems.nix { };
|
flakeExposed = import ./flake-systems.nix { };
|
||||||
|
|
||||||
|
# Turn localSystem or crossSystem, which could be system-string or attrset, into
|
||||||
|
# attrset.
|
||||||
|
systemToAttrs = systemOrArgs:
|
||||||
|
if isAttrs systemOrArgs then systemOrArgs else { system = systemOrArgs; };
|
||||||
|
|
||||||
# Elaborate a `localSystem` or `crossSystem` so that it contains everything
|
# Elaborate a `localSystem` or `crossSystem` so that it contains everything
|
||||||
# necessary.
|
# necessary.
|
||||||
#
|
#
|
||||||
# `parsed` is inferred from args, both because there are two options with one
|
# `parsed` is inferred from args, both because there are two options with one
|
||||||
# clearly preferred, and to prevent cycles. A simpler fixed point where the RHS
|
# clearly preferred, and to prevent cycles. A simpler fixed point where the RHS
|
||||||
# always just used `final.*` would fail on both counts.
|
# always just used `final.*` would fail on both counts.
|
||||||
elaborate = args': let
|
elaborate = systemOrArgs: let
|
||||||
args = if isString args' then { system = args'; }
|
allArgs = systemToAttrs systemOrArgs;
|
||||||
else args';
|
|
||||||
|
# Those two will always be derived from "config", if given, so they should NOT
|
||||||
|
# be overridden further down with "// args".
|
||||||
|
args = builtins.removeAttrs allArgs [ "parsed" "system" ];
|
||||||
|
|
||||||
# TODO: deprecate args.rustc in favour of args.rust after 23.05 is EOL.
|
# TODO: deprecate args.rustc in favour of args.rust after 23.05 is EOL.
|
||||||
rust = args.rust or args.rustc or {};
|
rust = args.rust or args.rustc or {};
|
||||||
|
|
||||||
final = {
|
final = {
|
||||||
# Prefer to parse `config` as it is strictly more informative.
|
# Prefer to parse `config` as it is strictly more informative.
|
||||||
parsed = parse.mkSystemFromString (if args ? config then args.config else args.system);
|
parsed = parse.mkSystemFromString (args.config or allArgs.system);
|
||||||
# Either of these can be losslessly-extracted from `parsed` iff parsing succeeds.
|
# This can be losslessly-extracted from `parsed` iff parsing succeeds.
|
||||||
system = parse.doubleFromSystem final.parsed;
|
system = parse.doubleFromSystem final.parsed;
|
||||||
|
# TODO: This currently can't be losslessly-extracted from `parsed`, for example
|
||||||
|
# because of -mingw32.
|
||||||
config = parse.tripleFromSystem final.parsed;
|
config = parse.tripleFromSystem final.parsed;
|
||||||
# Determine whether we can execute binaries built for the provided platform.
|
# Determine whether we can execute binaries built for the provided platform.
|
||||||
canExecute = platform:
|
canExecute = platform:
|
||||||
|
@ -435,5 +445,6 @@ in
|
||||||
inspect
|
inspect
|
||||||
parse
|
parse
|
||||||
platforms
|
platforms
|
||||||
|
systemToAttrs
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
|
@ -78,6 +78,18 @@ lib.runTests (
|
||||||
expr = toLosslessStringMaybe (lib.systems.elaborate "x86_64-linux" // { something = "extra"; });
|
expr = toLosslessStringMaybe (lib.systems.elaborate "x86_64-linux" // { something = "extra"; });
|
||||||
expected = null;
|
expected = null;
|
||||||
};
|
};
|
||||||
|
test_elaborate_config_over_system = {
|
||||||
|
expr = (lib.systems.elaborate { config = "i686-unknown-linux-gnu"; system = "x86_64-linux"; }).system;
|
||||||
|
expected = "i686-linux";
|
||||||
|
};
|
||||||
|
test_elaborate_config_over_parsed = {
|
||||||
|
expr = (lib.systems.elaborate { config = "i686-unknown-linux-gnu"; parsed = (lib.systems.elaborate "x86_64-linux").parsed; }).parsed.cpu.arch;
|
||||||
|
expected = "i686";
|
||||||
|
};
|
||||||
|
test_elaborate_system_over_parsed = {
|
||||||
|
expr = (lib.systems.elaborate { system = "i686-linux"; parsed = (lib.systems.elaborate "x86_64-linux").parsed; }).parsed.cpu.arch;
|
||||||
|
expected = "i686";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
# Generate test cases to assert that a change in any non-function attribute makes a platform unequal
|
# Generate test cases to assert that a change in any non-function attribute makes a platform unequal
|
||||||
|
|
|
@ -1871,6 +1871,18 @@
|
||||||
"sec-release-24.11-wiki": [
|
"sec-release-24.11-wiki": [
|
||||||
"release-notes.html#sec-release-24.11-wiki"
|
"release-notes.html#sec-release-24.11-wiki"
|
||||||
],
|
],
|
||||||
|
"sec-release-24.11-lib": [
|
||||||
|
"release-notes.html#sec-release-24.11-lib"
|
||||||
|
],
|
||||||
|
"sec-release-24.11-lib-breaking": [
|
||||||
|
"release-notes.html#sec-release-24.11-lib-breaking"
|
||||||
|
],
|
||||||
|
"sec-release-24.11-lib-additions-improvements": [
|
||||||
|
"release-notes.html#sec-release-24.11-lib-additions-improvements"
|
||||||
|
],
|
||||||
|
"sec-release-24.11-lib-deprecations": [
|
||||||
|
"release-notes.html#sec-release-24.11-lib-deprecations"
|
||||||
|
],
|
||||||
"sec-release-24.05": [
|
"sec-release-24.05": [
|
||||||
"release-notes.html#sec-release-24.05"
|
"release-notes.html#sec-release-24.05"
|
||||||
],
|
],
|
||||||
|
|
|
@ -797,10 +797,6 @@
|
||||||
not the `hare` package, should be added to `nativeBuildInputs` when building
|
not the `hare` package, should be added to `nativeBuildInputs` when building
|
||||||
Hare programs.
|
Hare programs.
|
||||||
|
|
||||||
- [`lib.options.mkPackageOptionMD`](https://nixos.org/manual/nixpkgs/unstable#function-library-lib.options.mkPackageOptionMD) is now obsolete; use the identical [`lib.options.mkPackageOption`](https://nixos.org/manual/nixpkgs/unstable#function-library-lib.options.mkPackageOption) instead.
|
|
||||||
|
|
||||||
- `lib.misc.mapAttrsFlatten` is now formally deprecated and will be removed in future releases; use the identical [`lib.attrsets.mapAttrsToList`](https://nixos.org/manual/nixpkgs/unstable#function-library-lib.attrsets.mapAttrsToList) instead.
|
|
||||||
|
|
||||||
- `virtualisation.docker.liveRestore` has been renamed to `virtualisation.docker.daemon.settings."live-restore"` and turned off by default for state versions of at least 24.11.
|
- `virtualisation.docker.liveRestore` has been renamed to `virtualisation.docker.daemon.settings."live-restore"` and turned off by default for state versions of at least 24.11.
|
||||||
|
|
||||||
- Tailscale's `authKeyFile` can now have its corresponding parameters set through `config.services.tailscale.authKeyParameters`, allowing for non-ephemeral unsupervised deployment and more.
|
- Tailscale's `authKeyFile` can now have its corresponding parameters set through `config.services.tailscale.authKeyParameters`, allowing for non-ephemeral unsupervised deployment and more.
|
||||||
|
@ -977,6 +973,57 @@ To provide some examples:
|
||||||
|
|
||||||
Note that this also allows writing overlays that explicitly apply to multiple boards.
|
Note that this also allows writing overlays that explicitly apply to multiple boards.
|
||||||
|
|
||||||
|
## Nixpkgs Library {#sec-release-24.11-lib}
|
||||||
|
|
||||||
|
### Breaking changes {#sec-release-24.11-lib-breaking}
|
||||||
|
|
||||||
|
- [`lib.escapeShellArg`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.strings.escapeShellArg) and [`lib.escapeShellArgs`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.strings.escapeShellArgs): Arguments that don't need to be escaped won't be anymore, which is not breaking according to the functions documentation, but it can cause breakages if used for the non-intended use cases.
|
||||||
|
- [`lib.warn msg val`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.trivial.warn) (and its relatives [`lib.warnIf`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.trivial.warnIf) and [`lib.warnIfNot`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.trivial.warnIfNot)) now require `msg` to be a string to match the behavior of the new [`builtins.warn`](https://nix.dev/manual/nix/2.25/language/builtins.html?highlight=warn#builtins-warn).
|
||||||
|
- `lib.mdDoc`: Removed after deprecation in the previous release.
|
||||||
|
|
||||||
|
### Additions and Improvements {#sec-release-24.11-lib-additions-improvements}
|
||||||
|
|
||||||
|
New and extended interfaces:
|
||||||
|
- [`lib.fromHexString`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.trivial.fromHexString): Convert a hexadecimal string to it's integer representation.
|
||||||
|
- `lib.network.ipv6.fromString`: Parse an IPv6 address.
|
||||||
|
- [`lib.getLicenseFromSpdxIdOr`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.meta.getLicenseFromSpdxIdOr): Get the corresponding attribute in `lib.licenses` from an SPDX ID or fall back to the given default value.
|
||||||
|
- [`lib.licensesSpdx`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.meta.licensesSpdx): Mapping of SPDX ID to the attributes in `lib.licenses`.
|
||||||
|
- [`lib.getFirstOutput`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.attrsets.getFirstOutput): Like `getOutput` but with a list of fallback output names.
|
||||||
|
- [`lib.getInclude`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.attrsets.getInclude) and [`lib.getStatic`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.attrsets.getStatic): Get a package’s `include`/`static` output.
|
||||||
|
- [`lib.trim`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.strings.trim) and [`lib.trimWith`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.strings.trimWith): Remove leading and trailing whitespace from a string.
|
||||||
|
- [`lib.meta.defaultPriority`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.meta.defaultPriority): The default priority of packages in Nix.
|
||||||
|
- [`lib.toExtension`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.fixedPoints.toExtension): Convert to an extending function (overlay).
|
||||||
|
- `lib.fetchers.normalizeHash`: Convert an attrset containing one of `hash`, `sha256` or `sha512` into one containing `outputHash{,Algo}` as accepted by `mkDerivation`.
|
||||||
|
- `lib.fetchers.withNormalizedHash`: Wraps a function which accepts `outputHash{,Algo}` into one which accepts `hash`, `sha256` or `sha512`.
|
||||||
|
- Various builtins are now reexported in a more standard way:
|
||||||
|
- `lib.map` -> `lib.lists.map` -> `builtins.map`
|
||||||
|
- `lib.intersectAttrs` -> `lib.attrsets.intersectAttrs` -> `builtins.intersectAttrs`
|
||||||
|
- `lib.removeAttrs` -> `lib.attrsets.removeAttrs` -> `builtins.removeAttrs`
|
||||||
|
- `lib.match` -> `lib.strings.match` -> `builtins.match`
|
||||||
|
- `lib.split` -> `lib.strings.split` -> `builtins.split`
|
||||||
|
- `lib.typeOf` -> `builtins.typeOf`
|
||||||
|
- `lib.unsafeGetAttrPos` -> `builtins.unsafeGetAttrPos`
|
||||||
|
- [`lib.cli.toGNUCommandLine`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.cli.toGNUCommandLine) now supports the `optionValueSeparator` argument attribute to control the key-value separator for arguments.
|
||||||
|
|
||||||
|
Documentation improvements:
|
||||||
|
- Much of the documentation has been migrated to the [standard doc-comment format](https://github.com/NixOS/rfcs/pull/145), including [`lib.derivations`](https://nixos.org/manual/nixpkgs/unstable/#sec-functions-library-derivations), [`lib.fixedPoints`](https://nixos.org/manual/nixpkgs/unstable/#sec-functions-library-fixedPoints), [`lib.gvariant`](https://nixos.org/manual/nixpkgs/unstable/#sec-functions-library-gvariant), [`lib.filesystem`](https://nixos.org/manual/nixpkgs/unstable/#sec-functions-library-filesystem), [`lib.strings`](https://nixos.org/manual/nixpkgs/unstable/#sec-functions-library-strings), [`lib.meta`](https://nixos.org/manual/nixpkgs/unstable/#sec-functions-library-meta).
|
||||||
|
- [`lib.generators` documentation](https://nixos.org/manual/nixpkgs/unstable/#sec-functions-library-generators) is now improved and rendered in the manual.
|
||||||
|
- [`lib.cli` documentation](https://nixos.org/manual/nixpkgs/unstable/#sec-functions-library-cli) is now improved and rendered in the manual.
|
||||||
|
- [`lib.composeExtensions`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.fixedPoints.composeExtensions) and [`lib.composeManyExtensions`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.fixedPoints.composeManyExtensions) documentation is now improved.
|
||||||
|
- [`lib.importTOML`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.trivial.importTOML) and [`lib.importJSON`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.trivial.importJSON)'s documentation now have an example.
|
||||||
|
|
||||||
|
Module System:
|
||||||
|
- `lib.importApply`: New function, imports a Nix expression file much like the module system would, after passing an extra positional argument to the function in the file.
|
||||||
|
- Improve error message when accessing an option that isn't defined.
|
||||||
|
- `lib.types.anything`: Don't fail to merge when specifying the same list multiple times.
|
||||||
|
- Improve error when loading a flake as a module.
|
||||||
|
|
||||||
|
### Deprecations {#sec-release-24.11-lib-deprecations}
|
||||||
|
|
||||||
|
- [`lib.options.mkPackageOptionMD`](https://nixos.org/manual/nixpkgs/unstable#function-library-lib.options.mkPackageOptionMD) is now obsolete; use the identical [`lib.options.mkPackageOption`](https://nixos.org/manual/nixpkgs/unstable#function-library-lib.options.mkPackageOption) instead.
|
||||||
|
- `lib.misc.mapAttrsFlatten` is now formally deprecated and will be removed in future releases; use the identical [`lib.attrsets.mapAttrsToList`](https://nixos.org/manual/nixpkgs/unstable#function-library-lib.attrsets.mapAttrsToList) instead.
|
||||||
|
- `lib.isInOldestRelease`: Renamed to [`oldestSupportedReleaseIsAtLeast`](https://nixos.org/manual/nixpkgs/unstable/#function-library-lib.trivial.oldestSupportedReleaseIsAtLeast) and deprecated.
|
||||||
|
|
||||||
## NixOS Wiki {#sec-release-24.11-wiki}
|
## NixOS Wiki {#sec-release-24.11-wiki}
|
||||||
|
|
||||||
The official NixOS Wiki at [wiki.nixos.org](https://wiki.nixos.org/) was launched in April 2024, featuring
|
The official NixOS Wiki at [wiki.nixos.org](https://wiki.nixos.org/) was launched in April 2024, featuring
|
||||||
|
|
|
@ -8,7 +8,21 @@
|
||||||
let
|
let
|
||||||
inherit (lib) types;
|
inherit (lib) types;
|
||||||
|
|
||||||
imageModules = { };
|
imageModules = {
|
||||||
|
azure = [ ../virtualisation/azure-image.nix ];
|
||||||
|
digital-ocean = [ ../virtualisation/digital-ocean-image.nix ];
|
||||||
|
google-compute = [ ../virtualisation/google-compute-image.nix ];
|
||||||
|
hyperv = [ ../virtualisation/hyperv-image.nix ];
|
||||||
|
linode = [ ../virtualisation/linode-image.nix ];
|
||||||
|
lxc = [ ../virtualisation/lxc-container.nix ];
|
||||||
|
lxc-metadata = [ ../virtualisation/lxc-image-metadata.nix ];
|
||||||
|
oci = [ ../virtualisation/oci-image.nix ];
|
||||||
|
proxmox = [ ../virtualisation/proxmox-image.nix ];
|
||||||
|
kubevirt = [ ../virtualisation/kubevirt.nix ];
|
||||||
|
vagrant-virtualbox = [ ../virtualisation/vagrant-virtualbox-image.nix ];
|
||||||
|
virtualbox = [ ../virtualisation/virtualbox-image.nix ];
|
||||||
|
vmware = [ ../virtualisation/vmware-image.nix ];
|
||||||
|
};
|
||||||
imageConfigs = lib.mapAttrs (
|
imageConfigs = lib.mapAttrs (
|
||||||
name: modules:
|
name: modules:
|
||||||
extendModules {
|
extendModules {
|
||||||
|
|
|
@ -36,14 +36,13 @@ let
|
||||||
DOCUMENTATION_URL = optionalString isNixos "https://nixos.org/learn.html";
|
DOCUMENTATION_URL = optionalString isNixos "https://nixos.org/learn.html";
|
||||||
SUPPORT_URL = optionalString isNixos "https://nixos.org/community.html";
|
SUPPORT_URL = optionalString isNixos "https://nixos.org/community.html";
|
||||||
BUG_REPORT_URL = optionalString isNixos "https://github.com/NixOS/nixpkgs/issues";
|
BUG_REPORT_URL = optionalString isNixos "https://github.com/NixOS/nixpkgs/issues";
|
||||||
ANSI_COLOR = optionalString isNixos "1;34";
|
ANSI_COLOR = optionalString isNixos "0;38;2;126;186;228";
|
||||||
IMAGE_ID = optionalString (config.system.image.id != null) config.system.image.id;
|
IMAGE_ID = optionalString (config.system.image.id != null) config.system.image.id;
|
||||||
IMAGE_VERSION = optionalString (config.system.image.version != null) config.system.image.version;
|
IMAGE_VERSION = optionalString (config.system.image.version != null) config.system.image.version;
|
||||||
VARIANT = optionalString (cfg.variantName != null) cfg.variantName;
|
VARIANT = optionalString (cfg.variantName != null) cfg.variantName;
|
||||||
VARIANT_ID = optionalString (cfg.variant_id != null) cfg.variant_id;
|
VARIANT_ID = optionalString (cfg.variant_id != null) cfg.variant_id;
|
||||||
DEFAULT_HOSTNAME = config.networking.fqdnOrHostName;
|
DEFAULT_HOSTNAME = config.system.nixos.distroId;
|
||||||
SUPPORT_END = "2025-06-30";
|
} // cfg.extraOSReleaseArgs;
|
||||||
};
|
|
||||||
|
|
||||||
initrdReleaseContents = (removeAttrs osReleaseContents [ "BUILD_ID" ]) // {
|
initrdReleaseContents = (removeAttrs osReleaseContents [ "BUILD_ID" ]) // {
|
||||||
PRETTY_NAME = "${osReleaseContents.PRETTY_NAME} (Initrd)";
|
PRETTY_NAME = "${osReleaseContents.PRETTY_NAME} (Initrd)";
|
||||||
|
@ -143,6 +142,26 @@ in
|
||||||
default = "NixOS";
|
default = "NixOS";
|
||||||
description = "The name of the operating system vendor";
|
description = "The name of the operating system vendor";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraOSReleaseArgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
type = types.attrsOf types.str;
|
||||||
|
default = { };
|
||||||
|
description = "Additional attributes to be merged with the /etc/os-release generator.";
|
||||||
|
example = {
|
||||||
|
ANSI_COLOR = "1;31";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraLSBReleaseArgs = mkOption {
|
||||||
|
internal = true;
|
||||||
|
type = types.attrsOf types.str;
|
||||||
|
default = { };
|
||||||
|
description = "Additional attributes to be merged with the /etc/lsb-release generator.";
|
||||||
|
example = {
|
||||||
|
LSB_VERSION = "1.0";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
image = {
|
image = {
|
||||||
|
@ -237,13 +256,13 @@ in
|
||||||
# https://www.freedesktop.org/software/systemd/man/os-release.html for the
|
# https://www.freedesktop.org/software/systemd/man/os-release.html for the
|
||||||
# format.
|
# format.
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
"lsb-release".text = attrsToText {
|
"lsb-release".text = attrsToText ({
|
||||||
LSB_VERSION = "${cfg.release} (${cfg.codeName})";
|
LSB_VERSION = "${cfg.release} (${cfg.codeName})";
|
||||||
DISTRIB_ID = "${cfg.distroId}";
|
DISTRIB_ID = "${cfg.distroId}";
|
||||||
DISTRIB_RELEASE = cfg.release;
|
DISTRIB_RELEASE = cfg.release;
|
||||||
DISTRIB_CODENAME = toLower cfg.codeName;
|
DISTRIB_CODENAME = toLower cfg.codeName;
|
||||||
DISTRIB_DESCRIPTION = "${cfg.distroName} ${cfg.release} (${cfg.codeName})";
|
DISTRIB_DESCRIPTION = "${cfg.distroName} ${cfg.release} (${cfg.codeName})";
|
||||||
};
|
} // cfg.extraLSBReleaseArgs);
|
||||||
|
|
||||||
"os-release".text = attrsToText osReleaseContents;
|
"os-release".text = attrsToText osReleaseContents;
|
||||||
};
|
};
|
||||||
|
|
|
@ -314,7 +314,7 @@ in
|
||||||
binlog-ignore-db = [ "information_schema" "performance_schema" "mysql" ];
|
binlog-ignore-db = [ "information_schema" "performance_schema" "mysql" ];
|
||||||
})
|
})
|
||||||
(lib.mkIf (!isMariaDB) {
|
(lib.mkIf (!isMariaDB) {
|
||||||
plugin-load-add = "auth_socket.so";
|
plugin-load-add = [ "auth_socket.so" ];
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -89,7 +89,6 @@ let
|
||||||
"surfboard"
|
"surfboard"
|
||||||
"systemd"
|
"systemd"
|
||||||
"unbound"
|
"unbound"
|
||||||
"unifi"
|
|
||||||
"unpoller"
|
"unpoller"
|
||||||
"v2ray"
|
"v2ray"
|
||||||
"varnish"
|
"varnish"
|
||||||
|
|
|
@ -1,71 +0,0 @@
|
||||||
{ config, lib, pkgs, options, ... }:
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.services.prometheus.exporters.unifi;
|
|
||||||
inherit (lib)
|
|
||||||
mkOption
|
|
||||||
types
|
|
||||||
escapeShellArg
|
|
||||||
optionalString
|
|
||||||
concatStringsSep
|
|
||||||
;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
port = 9130;
|
|
||||||
extraOpts = {
|
|
||||||
unifiAddress = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
example = "https://10.0.0.1:8443";
|
|
||||||
description = ''
|
|
||||||
URL of the UniFi Controller API.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
unifiInsecure = mkOption {
|
|
||||||
type = types.bool;
|
|
||||||
default = false;
|
|
||||||
description = ''
|
|
||||||
If enabled skip the verification of the TLS certificate of the UniFi Controller API.
|
|
||||||
Use with caution.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
unifiUsername = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
example = "ReadOnlyUser";
|
|
||||||
description = ''
|
|
||||||
username for authentication against UniFi Controller API.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
unifiPassword = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
description = ''
|
|
||||||
Password for authentication against UniFi Controller API.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
unifiTimeout = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "5s";
|
|
||||||
example = "2m";
|
|
||||||
description = ''
|
|
||||||
Timeout including unit for UniFi Controller API requests.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
serviceOpts = {
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = ''
|
|
||||||
${pkgs.prometheus-unifi-exporter}/bin/unifi_exporter \
|
|
||||||
-telemetry.addr ${cfg.listenAddress}:${toString cfg.port} \
|
|
||||||
-unifi.addr ${cfg.unifiAddress} \
|
|
||||||
-unifi.username ${escapeShellArg cfg.unifiUsername} \
|
|
||||||
-unifi.password ${escapeShellArg cfg.unifiPassword} \
|
|
||||||
-unifi.timeout ${cfg.unifiTimeout} \
|
|
||||||
${optionalString cfg.unifiInsecure "-unifi.insecure" } \
|
|
||||||
${concatStringsSep " \\\n " cfg.extraFlags}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -13,6 +13,7 @@ in
|
||||||
imports = [
|
imports = [
|
||||||
./azure-common.nix
|
./azure-common.nix
|
||||||
./disk-size-option.nix
|
./disk-size-option.nix
|
||||||
|
../image/file-options.nix
|
||||||
(lib.mkRenamedOptionModuleWith {
|
(lib.mkRenamedOptionModuleWith {
|
||||||
sinceRelease = 2411;
|
sinceRelease = 2411;
|
||||||
from = [
|
from = [
|
||||||
|
@ -61,10 +62,14 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
image.extension = "vhd";
|
||||||
|
system.nixos.tags = [ "azure" ];
|
||||||
|
system.build.image = config.system.build.azureImage;
|
||||||
system.build.azureImage = import ../../lib/make-disk-image.nix {
|
system.build.azureImage = import ../../lib/make-disk-image.nix {
|
||||||
name = "azure-image";
|
name = "azure-image";
|
||||||
|
inherit (config.image) baseName;
|
||||||
postVM = ''
|
postVM = ''
|
||||||
${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o subformat=fixed,force_size -O vpc $diskImage $out/disk.vhd
|
${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o subformat=fixed,force_size -O vpc $diskImage $out/${config.image.fileName}
|
||||||
rm $diskImage
|
rm $diskImage
|
||||||
'';
|
'';
|
||||||
configFile = ./azure-config-user.nix;
|
configFile = ./azure-config-user.nix;
|
||||||
|
|
|
@ -14,6 +14,7 @@ in
|
||||||
imports = [
|
imports = [
|
||||||
./digital-ocean-config.nix
|
./digital-ocean-config.nix
|
||||||
./disk-size-option.nix
|
./disk-size-option.nix
|
||||||
|
../image/file-options.nix
|
||||||
(lib.mkRenamedOptionModuleWith {
|
(lib.mkRenamedOptionModuleWith {
|
||||||
sinceRelease = 2411;
|
sinceRelease = 2411;
|
||||||
from = [
|
from = [
|
||||||
|
@ -57,10 +58,33 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
#### implementation
|
#### implementation
|
||||||
config = {
|
config =
|
||||||
|
let
|
||||||
|
format = "qcow2";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
image.extension = lib.concatStringsSep "." [
|
||||||
|
format
|
||||||
|
(
|
||||||
|
{
|
||||||
|
"gzip" = "gz";
|
||||||
|
"bzip2" = "bz2";
|
||||||
|
}
|
||||||
|
.${cfg.compressionMethod}
|
||||||
|
)
|
||||||
|
];
|
||||||
|
system.nixos.tags = [ "digital-ocean" ];
|
||||||
|
system.build.image = config.system.build.digitalOceanImage;
|
||||||
system.build.digitalOceanImage = import ../../lib/make-disk-image.nix {
|
system.build.digitalOceanImage = import ../../lib/make-disk-image.nix {
|
||||||
name = "digital-ocean-image";
|
name = "digital-ocean-image";
|
||||||
format = "qcow2";
|
inherit (config.image) baseName;
|
||||||
|
inherit (config.virtualisation) diskSize;
|
||||||
|
inherit
|
||||||
|
config
|
||||||
|
lib
|
||||||
|
pkgs
|
||||||
|
format
|
||||||
|
;
|
||||||
postVM =
|
postVM =
|
||||||
let
|
let
|
||||||
compress =
|
compress =
|
||||||
|
@ -78,8 +102,6 @@ in
|
||||||
config.virtualisation.digitalOcean.defaultConfigFile
|
config.virtualisation.digitalOcean.defaultConfigFile
|
||||||
else
|
else
|
||||||
cfg.configFile;
|
cfg.configFile;
|
||||||
inherit (config.virtualisation) diskSize;
|
|
||||||
inherit config lib pkgs;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -22,6 +22,7 @@ in
|
||||||
imports = [
|
imports = [
|
||||||
./google-compute-config.nix
|
./google-compute-config.nix
|
||||||
./disk-size-option.nix
|
./disk-size-option.nix
|
||||||
|
../image/file-options.nix
|
||||||
(lib.mkRenamedOptionModuleWith {
|
(lib.mkRenamedOptionModuleWith {
|
||||||
sinceRelease = 2411;
|
sinceRelease = 2411;
|
||||||
from = [
|
from = [
|
||||||
|
@ -72,8 +73,12 @@ in
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
system.nixos.tags = [ "google-compute" ];
|
||||||
|
image.extension = "raw.tar.gz";
|
||||||
|
system.build.image = config.system.build.googleComputeImage;
|
||||||
system.build.googleComputeImage = import ../../lib/make-disk-image.nix {
|
system.build.googleComputeImage = import ../../lib/make-disk-image.nix {
|
||||||
name = "google-compute-image";
|
name = "google-compute-image";
|
||||||
|
inherit (config.image) baseName;
|
||||||
postVM = ''
|
postVM = ''
|
||||||
PATH=$PATH:${
|
PATH=$PATH:${
|
||||||
with pkgs;
|
with pkgs;
|
||||||
|
@ -83,10 +88,9 @@ in
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
pushd $out
|
pushd $out
|
||||||
mv $diskImage disk.raw
|
tar -Sc $diskImage | gzip -${toString cfg.compressionLevel} > \
|
||||||
tar -Sc disk.raw | gzip -${toString cfg.compressionLevel} > \
|
${config.image.fileName}
|
||||||
nixos-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.raw.tar.gz
|
rm $diskImage
|
||||||
rm $out/disk.raw
|
|
||||||
popd
|
popd
|
||||||
'';
|
'';
|
||||||
format = "raw";
|
format = "raw";
|
||||||
|
|
|
@ -14,6 +14,7 @@ in
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
./disk-size-option.nix
|
./disk-size-option.nix
|
||||||
|
../image/file-options.nix
|
||||||
(lib.mkRenamedOptionModuleWith {
|
(lib.mkRenamedOptionModuleWith {
|
||||||
sinceRelease = 2411;
|
sinceRelease = 2411;
|
||||||
from = [
|
from = [
|
||||||
|
@ -25,6 +26,18 @@ in
|
||||||
"diskSize"
|
"diskSize"
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
|
(lib.mkRenamedOptionModuleWith {
|
||||||
|
sinceRelease = 2505;
|
||||||
|
from = [
|
||||||
|
"virtualisation"
|
||||||
|
"hyperv"
|
||||||
|
"vmFileName"
|
||||||
|
];
|
||||||
|
to = [
|
||||||
|
"image"
|
||||||
|
"fileName"
|
||||||
|
];
|
||||||
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
|
@ -36,13 +49,6 @@ in
|
||||||
The name of the derivation for the hyper-v appliance.
|
The name of the derivation for the hyper-v appliance.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
vmFileName = mkOption {
|
|
||||||
type = types.str;
|
|
||||||
default = "nixos-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.vhdx";
|
|
||||||
description = ''
|
|
||||||
The file name of the hyper-v appliance.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -51,10 +57,14 @@ in
|
||||||
# to avoid breaking existing configs using that.
|
# to avoid breaking existing configs using that.
|
||||||
virtualisation.diskSize = lib.mkOverride 1490 (4 * 1024);
|
virtualisation.diskSize = lib.mkOverride 1490 (4 * 1024);
|
||||||
|
|
||||||
|
system.nixos.tags = [ "hyperv" ];
|
||||||
|
image.extension = "vhdx";
|
||||||
|
system.build.image = config.system.build.hypervImage;
|
||||||
system.build.hypervImage = import ../../lib/make-disk-image.nix {
|
system.build.hypervImage = import ../../lib/make-disk-image.nix {
|
||||||
name = cfg.vmDerivationName;
|
name = cfg.vmDerivationName;
|
||||||
|
baseName = config.image.baseName;
|
||||||
postVM = ''
|
postVM = ''
|
||||||
${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o subformat=dynamic -O vhdx $diskImage $out/${cfg.vmFileName}
|
${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o subformat=dynamic -O vhdx $diskImage $out/${config.image.fileName}
|
||||||
rm $diskImage
|
rm $diskImage
|
||||||
'';
|
'';
|
||||||
format = "raw";
|
format = "raw";
|
||||||
|
|
|
@ -1,8 +1,14 @@
|
||||||
{ config, lib, pkgs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../profiles/qemu-guest.nix
|
../profiles/qemu-guest.nix
|
||||||
|
../image/file-options.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
@ -22,8 +28,12 @@
|
||||||
services.cloud-init.enable = true;
|
services.cloud-init.enable = true;
|
||||||
systemd.services."serial-getty@ttyS0".enable = true;
|
systemd.services."serial-getty@ttyS0".enable = true;
|
||||||
|
|
||||||
|
system.nixos.tags = [ "kubevirt" ];
|
||||||
|
image.extension = "qcow2";
|
||||||
|
system.build.image = config.system.build.kubevirtImage;
|
||||||
system.build.kubevirtImage = import ../../lib/make-disk-image.nix {
|
system.build.kubevirtImage = import ../../lib/make-disk-image.nix {
|
||||||
inherit lib config pkgs;
|
inherit lib config pkgs;
|
||||||
|
inherit (config.image) baseName;
|
||||||
format = "qcow2";
|
format = "qcow2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -20,6 +20,7 @@ in
|
||||||
imports = [
|
imports = [
|
||||||
./linode-config.nix
|
./linode-config.nix
|
||||||
./disk-size-option.nix
|
./disk-size-option.nix
|
||||||
|
../image/file-options.nix
|
||||||
(lib.mkRenamedOptionModuleWith {
|
(lib.mkRenamedOptionModuleWith {
|
||||||
sinceRelease = 2411;
|
sinceRelease = 2411;
|
||||||
from = [
|
from = [
|
||||||
|
@ -57,13 +58,17 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
system.nixos.tags = [ "linode" ];
|
||||||
|
image.extension = "img.gz";
|
||||||
|
system.build.image = config.system.build.linodeImage;
|
||||||
system.build.linodeImage = import ../../lib/make-disk-image.nix {
|
system.build.linodeImage = import ../../lib/make-disk-image.nix {
|
||||||
name = "linode-image";
|
name = "linode-image";
|
||||||
|
baseName = config.image.baseName;
|
||||||
# NOTE: Linode specifically requires images to be `gzip`-ed prior to upload
|
# NOTE: Linode specifically requires images to be `gzip`-ed prior to upload
|
||||||
# See: https://www.linode.com/docs/products/tools/images/guides/upload-an-image/#requirements-and-considerations
|
# See: https://www.linode.com/docs/products/tools/images/guides/upload-an-image/#requirements-and-considerations
|
||||||
postVM = ''
|
postVM = ''
|
||||||
${pkgs.gzip}/bin/gzip -${toString cfg.compressionLevel} -c -- $diskImage > \
|
${pkgs.gzip}/bin/gzip -${toString cfg.compressionLevel} -c -- $diskImage > \
|
||||||
$out/nixos-image-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.img.gz
|
$out/${config.image.fileName}
|
||||||
rm $diskImage
|
rm $diskImage
|
||||||
'';
|
'';
|
||||||
format = "raw";
|
format = "raw";
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ lib, config, pkgs, ... }:
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -8,18 +13,27 @@
|
||||||
imports = [
|
imports = [
|
||||||
./lxc-instance-common.nix
|
./lxc-instance-common.nix
|
||||||
|
|
||||||
(lib.mkRemovedOptionModule [ "virtualisation" "lxc" "nestedContainer" ] "")
|
(lib.mkRemovedOptionModule [
|
||||||
(lib.mkRemovedOptionModule [ "virtualisation" "lxc" "privilegedContainer" ] "")
|
"virtualisation"
|
||||||
|
"lxc"
|
||||||
|
"nestedContainer"
|
||||||
|
] "")
|
||||||
|
(lib.mkRemovedOptionModule [
|
||||||
|
"virtualisation"
|
||||||
|
"lxc"
|
||||||
|
"privilegedContainer"
|
||||||
|
] "")
|
||||||
];
|
];
|
||||||
|
|
||||||
options = { };
|
options = { };
|
||||||
|
|
||||||
config = let
|
config =
|
||||||
|
let
|
||||||
initScript = if config.boot.initrd.systemd.enable then "prepare-root" else "init";
|
initScript = if config.boot.initrd.systemd.enable then "prepare-root" else "init";
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
boot.isContainer = true;
|
boot.isContainer = true;
|
||||||
boot.postBootCommands =
|
boot.postBootCommands = ''
|
||||||
''
|
|
||||||
# After booting, register the contents of the Nix store in the Nix
|
# After booting, register the contents of the Nix store in the Nix
|
||||||
# database.
|
# database.
|
||||||
if [ -f /nix-path-registration ]; then
|
if [ -f /nix-path-registration ]; then
|
||||||
|
@ -47,7 +61,13 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
system.nixos.tags = lib.mkOverride 99 [ "lxc" ];
|
||||||
|
image.extension = "tar.xz";
|
||||||
|
image.filePath = "tarball/${config.image.fileName}";
|
||||||
|
system.build.image = lib.mkOverride 99 config.system.build.tarball;
|
||||||
|
|
||||||
system.build.tarball = pkgs.callPackage ../../lib/make-system-tarball.nix {
|
system.build.tarball = pkgs.callPackage ../../lib/make-system-tarball.nix {
|
||||||
|
fileName = config.image.baseName;
|
||||||
extraArgs = "--owner=0";
|
extraArgs = "--owner=0";
|
||||||
|
|
||||||
storeContents = [
|
storeContents = [
|
||||||
|
@ -80,7 +100,7 @@
|
||||||
noStrip = true; # keep directory structure
|
noStrip = true; # keep directory structure
|
||||||
comp = "zstd -Xcompression-level 6";
|
comp = "zstd -Xcompression-level 6";
|
||||||
|
|
||||||
storeContents = [config.system.build.toplevel];
|
storeContents = [ config.system.build.toplevel ];
|
||||||
|
|
||||||
pseudoFiles = [
|
pseudoFiles = [
|
||||||
"/sbin d 0755 0 0"
|
"/sbin d 0755 0 0"
|
||||||
|
@ -97,7 +117,7 @@
|
||||||
'';
|
'';
|
||||||
|
|
||||||
# networkd depends on this, but systemd module disables this for containers
|
# networkd depends on this, but systemd module disables this for containers
|
||||||
systemd.additionalUpstreamSystemUnits = ["systemd-udev-trigger.service"];
|
systemd.additionalUpstreamSystemUnits = [ "systemd-udev-trigger.service" ];
|
||||||
|
|
||||||
systemd.packages = [ pkgs.distrobuilder.generator ];
|
systemd.packages = [ pkgs.distrobuilder.generator ];
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,10 @@ let
|
||||||
else { files = []; properties = {}; };
|
else { files = []; properties = {}; };
|
||||||
|
|
||||||
in {
|
in {
|
||||||
|
imports = [
|
||||||
|
../image/file-options.nix
|
||||||
|
];
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
maintainers = lib.teams.lxc.members;
|
maintainers = lib.teams.lxc.members;
|
||||||
};
|
};
|
||||||
|
@ -87,7 +91,12 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
system.nixos.tags = [ "lxc" "metadata" ];
|
||||||
|
image.extension = "tar.xz";
|
||||||
|
image.filePath = "tarball/${config.image.fileName}";
|
||||||
|
system.build.image = config.system.build.metadata;
|
||||||
system.build.metadata = pkgs.callPackage ../../lib/make-system-tarball.nix {
|
system.build.metadata = pkgs.callPackage ../../lib/make-system-tarball.nix {
|
||||||
|
fileName = config.image.baseName;
|
||||||
contents = [
|
contents = [
|
||||||
{
|
{
|
||||||
source = toYAML "metadata.yaml" {
|
source = toYAML "metadata.yaml" {
|
||||||
|
|
|
@ -9,7 +9,10 @@ let
|
||||||
cfg = config.oci;
|
cfg = config.oci;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [ ./oci-common.nix ];
|
imports = [
|
||||||
|
./oci-common.nix
|
||||||
|
../image/file-options.nix
|
||||||
|
];
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
# Use a priority just below mkOptionDefault (1500) instead of lib.mkDefault
|
# Use a priority just below mkOptionDefault (1500) instead of lib.mkDefault
|
||||||
|
@ -17,10 +20,14 @@ in
|
||||||
virtualisation.diskSize = lib.mkOverride 1490 (8 * 1024);
|
virtualisation.diskSize = lib.mkOverride 1490 (8 * 1024);
|
||||||
virtualisation.diskSizeAutoSupported = false;
|
virtualisation.diskSizeAutoSupported = false;
|
||||||
|
|
||||||
|
system.nixos.tags = [ "oci" ];
|
||||||
|
image.extension = "qcow2";
|
||||||
|
system.build.image = config.system.build.OCIImage;
|
||||||
system.build.OCIImage = import ../../lib/make-disk-image.nix {
|
system.build.OCIImage = import ../../lib/make-disk-image.nix {
|
||||||
inherit config lib pkgs;
|
inherit config lib pkgs;
|
||||||
inherit (config.virtualisation) diskSize;
|
inherit (config.virtualisation) diskSize;
|
||||||
name = "oci-image";
|
name = "oci-image";
|
||||||
|
baseName = config.image.baseName;
|
||||||
configFile = ./oci-config-user.nix;
|
configFile = ./oci-config-user.nix;
|
||||||
format = "qcow2";
|
format = "qcow2";
|
||||||
partitionTableType = if cfg.efi then "efi" else "legacy";
|
partitionTableType = if cfg.efi then "efi" else "legacy";
|
||||||
|
|
|
@ -9,6 +9,7 @@ with lib;
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./disk-size-option.nix
|
./disk-size-option.nix
|
||||||
|
../image/file-options.nix
|
||||||
(lib.mkRenamedOptionModuleWith {
|
(lib.mkRenamedOptionModuleWith {
|
||||||
sinceRelease = 2411;
|
sinceRelease = 2411;
|
||||||
from = [
|
from = [
|
||||||
|
@ -250,8 +251,12 @@ with lib;
|
||||||
message = "'legacy+gpt' disk partitioning requires 'seabios' bios";
|
message = "'legacy+gpt' disk partitioning requires 'seabios' bios";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
image.baseName = lib.mkDefault "vzdump-qemu-${cfg.filenameSuffix}";
|
||||||
|
image.extension = "vma.zst";
|
||||||
|
system.build.image = config.system.build.VMA;
|
||||||
system.build.VMA = import ../../lib/make-disk-image.nix {
|
system.build.VMA = import ../../lib/make-disk-image.nix {
|
||||||
name = "proxmox-${cfg.filenameSuffix}";
|
name = "proxmox-${cfg.filenameSuffix}";
|
||||||
|
baseName = config.image.baseName;
|
||||||
inherit (cfg) partitionTableType;
|
inherit (cfg) partitionTableType;
|
||||||
postVM =
|
postVM =
|
||||||
let
|
let
|
||||||
|
@ -299,16 +304,16 @@ with lib;
|
||||||
});
|
});
|
||||||
in
|
in
|
||||||
''
|
''
|
||||||
${vma}/bin/vma create "vzdump-qemu-${cfg.filenameSuffix}.vma" \
|
${vma}/bin/vma create "${config.image.baseName}.vma" \
|
||||||
-c ${
|
-c ${
|
||||||
cfgFile "qemu-server.conf" (cfg.qemuConf // cfg.qemuExtraConf)
|
cfgFile "qemu-server.conf" (cfg.qemuConf // cfg.qemuExtraConf)
|
||||||
}/qemu-server.conf drive-virtio0=$diskImage
|
}/qemu-server.conf drive-virtio0=$diskImage
|
||||||
rm $diskImage
|
rm $diskImage
|
||||||
${pkgs.zstd}/bin/zstd "vzdump-qemu-${cfg.filenameSuffix}.vma"
|
${pkgs.zstd}/bin/zstd "${config.image.baseName}.vma"
|
||||||
mv "vzdump-qemu-${cfg.filenameSuffix}.vma.zst" $out/
|
mv "${config.image.fileName}" $out/
|
||||||
|
|
||||||
mkdir -p $out/nix-support
|
mkdir -p $out/nix-support
|
||||||
echo "file vma $out/vzdump-qemu-${cfg.filenameSuffix}.vma.zst" > $out/nix-support/hydra-build-products
|
echo "file vma $out/${config.image.fileName}" > $out/nix-support/hydra-build-products
|
||||||
'';
|
'';
|
||||||
inherit (cfg.qemuConf) additionalSpace bootSize;
|
inherit (cfg.qemuConf) additionalSpace bootSize;
|
||||||
inherit (config.virtualisation) diskSize;
|
inherit (config.virtualisation) diskSize;
|
||||||
|
|
|
@ -8,6 +8,10 @@
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
{
|
{
|
||||||
|
imports = [
|
||||||
|
../image/file-options.nix
|
||||||
|
];
|
||||||
|
|
||||||
options.proxmoxLXC = {
|
options.proxmoxLXC = {
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
default = true;
|
default = true;
|
||||||
|
@ -46,7 +50,15 @@ with lib;
|
||||||
cfg = config.proxmoxLXC;
|
cfg = config.proxmoxLXC;
|
||||||
in
|
in
|
||||||
mkIf cfg.enable {
|
mkIf cfg.enable {
|
||||||
|
system.nixos.tags = [
|
||||||
|
"proxmox"
|
||||||
|
"lxc"
|
||||||
|
];
|
||||||
|
image.extension = "tar.xz";
|
||||||
|
image.filePath = "tarball/${config.image.fileName}";
|
||||||
|
system.build.image = config.system.build.tarball;
|
||||||
system.build.tarball = pkgs.callPackage ../../lib/make-system-tarball.nix {
|
system.build.tarball = pkgs.callPackage ../../lib/make-system-tarball.nix {
|
||||||
|
fileName = config.image.baseName;
|
||||||
storeContents = [
|
storeContents = [
|
||||||
{
|
{
|
||||||
object = config.system.build.toplevel;
|
object = config.system.build.toplevel;
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Vagrant + VirtualBox
|
# Vagrant + VirtualBox
|
||||||
|
|
||||||
{ config, pkgs, ... }:
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
|
@ -22,8 +22,11 @@
|
||||||
|
|
||||||
# generate the box v1 format which is much easier to generate
|
# generate the box v1 format which is much easier to generate
|
||||||
# https://www.vagrantup.com/docs/boxes/format.html
|
# https://www.vagrantup.com/docs/boxes/format.html
|
||||||
|
image.extension = lib.mkOverride 999 "${config.image.baseName}.box";
|
||||||
|
system.nixos.tags = [ "vagrant"];
|
||||||
|
system.build.image = lib.mkOverride 999 config.system.build.vagrantVirtualbox;
|
||||||
system.build.vagrantVirtualbox = pkgs.runCommand
|
system.build.vagrantVirtualbox = pkgs.runCommand
|
||||||
"virtualbox-vagrant.box"
|
config.image.fileName
|
||||||
{}
|
{}
|
||||||
''
|
''
|
||||||
mkdir workdir
|
mkdir workdir
|
||||||
|
|
|
@ -11,6 +11,7 @@ in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./disk-size-option.nix
|
./disk-size-option.nix
|
||||||
|
../image/file-options.nix
|
||||||
(lib.mkRenamedOptionModuleWith {
|
(lib.mkRenamedOptionModuleWith {
|
||||||
sinceRelease = 2411;
|
sinceRelease = 2411;
|
||||||
from = [
|
from = [
|
||||||
|
@ -22,6 +23,18 @@ in
|
||||||
"diskSize"
|
"diskSize"
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
|
(lib.mkRenamedOptionModuleWith {
|
||||||
|
sinceRelease = 2505;
|
||||||
|
from = [
|
||||||
|
"virtualisation"
|
||||||
|
"virtualbox"
|
||||||
|
"vmFileName"
|
||||||
|
];
|
||||||
|
to = [
|
||||||
|
"image"
|
||||||
|
"fileName"
|
||||||
|
];
|
||||||
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
|
@ -54,13 +67,6 @@ in
|
||||||
The name of the VirtualBox appliance.
|
The name of the VirtualBox appliance.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
vmFileName = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "nixos-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.ova";
|
|
||||||
description = ''
|
|
||||||
The file name of the VirtualBox appliance.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
params = lib.mkOption {
|
params = lib.mkOption {
|
||||||
type =
|
type =
|
||||||
with lib.types;
|
with lib.types;
|
||||||
|
@ -207,8 +213,12 @@ in
|
||||||
(lib.mkIf (pkgs.stdenv.hostPlatform.system == "i686-linux") { pae = "on"; })
|
(lib.mkIf (pkgs.stdenv.hostPlatform.system == "i686-linux") { pae = "on"; })
|
||||||
];
|
];
|
||||||
|
|
||||||
|
system.nixos.tags = [ "virtualbox" ];
|
||||||
|
image.extension = "ova";
|
||||||
|
system.build.image = lib.mkDefault config.system.build.virtualBoxOVA;
|
||||||
system.build.virtualBoxOVA = import ../../lib/make-disk-image.nix {
|
system.build.virtualBoxOVA = import ../../lib/make-disk-image.nix {
|
||||||
name = cfg.vmDerivationName;
|
name = cfg.vmDerivationName;
|
||||||
|
baseName = config.image.baseName;
|
||||||
|
|
||||||
inherit pkgs lib config;
|
inherit pkgs lib config;
|
||||||
partitionTableType = "legacy";
|
partitionTableType = "legacy";
|
||||||
|
@ -253,7 +263,7 @@ in
|
||||||
|
|
||||||
echo "exporting VirtualBox VM..."
|
echo "exporting VirtualBox VM..."
|
||||||
mkdir -p $out
|
mkdir -p $out
|
||||||
fn="$out/${cfg.vmFileName}"
|
fn="$out/${config.image.fileName}"
|
||||||
VBoxManage export "$vmName" --output "$fn" --options manifest ${lib.escapeShellArgs cfg.exportParams}
|
VBoxManage export "$vmName" --output "$fn" --options manifest ${lib.escapeShellArgs cfg.exportParams}
|
||||||
${cfg.postExportCommands}
|
${cfg.postExportCommands}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,9 @@
|
||||||
{ config, pkgs, lib, ... }:
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
boolToStr = value: if value then "on" else "off";
|
boolToStr = value: if value then "on" else "off";
|
||||||
cfg = config.vmware;
|
cfg = config.vmware;
|
||||||
|
@ -12,6 +17,23 @@ let
|
||||||
];
|
];
|
||||||
|
|
||||||
in {
|
in {
|
||||||
|
imports = [
|
||||||
|
../image/file-options.nix
|
||||||
|
(lib.mkRenamedOptionModuleWith {
|
||||||
|
sinceRelease = 2505;
|
||||||
|
from = [
|
||||||
|
"virtualisation"
|
||||||
|
"vmware"
|
||||||
|
"vmFileName"
|
||||||
|
];
|
||||||
|
to = [
|
||||||
|
"image"
|
||||||
|
"fileName"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
vmware = {
|
vmware = {
|
||||||
baseImageSize = lib.mkOption {
|
baseImageSize = lib.mkOption {
|
||||||
|
@ -29,13 +51,6 @@ in {
|
||||||
The name of the derivation for the VMWare appliance.
|
The name of the derivation for the VMWare appliance.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
vmFileName = lib.mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
default = "nixos-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.vmdk";
|
|
||||||
description = ''
|
|
||||||
The file name of the VMWare appliance.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
vmSubformat = lib.mkOption {
|
vmSubformat = lib.mkOption {
|
||||||
type = lib.types.enum subformats;
|
type = lib.types.enum subformats;
|
||||||
default = "monolithicSparse";
|
default = "monolithicSparse";
|
||||||
|
@ -51,10 +66,14 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
|
system.nixos.tags = [ "vmware" ];
|
||||||
|
image.extension = "vmdk";
|
||||||
|
system.build.image = config.system.build.vmwareImage;
|
||||||
system.build.vmwareImage = import ../../lib/make-disk-image.nix {
|
system.build.vmwareImage = import ../../lib/make-disk-image.nix {
|
||||||
name = cfg.vmDerivationName;
|
name = cfg.vmDerivationName;
|
||||||
|
baseName = config.image.baseName;
|
||||||
postVM = ''
|
postVM = ''
|
||||||
${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o compat6=${boolToStr cfg.vmCompat6},subformat=${cfg.vmSubformat} -O vmdk $diskImage $out/${cfg.vmFileName}
|
${pkgs.vmTools.qemu}/bin/qemu-img convert -f raw -o compat6=${boolToStr cfg.vmCompat6},subformat=${cfg.vmSubformat} -O vmdk $diskImage $out/${config.image.fileName}
|
||||||
rm $diskImage
|
rm $diskImage
|
||||||
'';
|
'';
|
||||||
format = "raw";
|
format = "raw";
|
||||||
|
|
|
@ -130,7 +130,8 @@ let
|
||||||
# (e.g. `mksdcard`) have `/lib/ld-linux.so.2` set as the interpreter. An FHS
|
# (e.g. `mksdcard`) have `/lib/ld-linux.so.2` set as the interpreter. An FHS
|
||||||
# environment is used as a work around for that.
|
# environment is used as a work around for that.
|
||||||
fhsEnv = buildFHSEnv {
|
fhsEnv = buildFHSEnv {
|
||||||
name = "${drvName}-fhs-env";
|
pname = "${drvName}-fhs-env";
|
||||||
|
inherit version;
|
||||||
multiPkgs = pkgs: [
|
multiPkgs = pkgs: [
|
||||||
zlib
|
zlib
|
||||||
ncurses5
|
ncurses5
|
||||||
|
|
|
@ -208,7 +208,8 @@ let
|
||||||
# (e.g. `mksdcard`) have `/lib/ld-linux.so.2` set as the interpreter. An FHS
|
# (e.g. `mksdcard`) have `/lib/ld-linux.so.2` set as the interpreter. An FHS
|
||||||
# environment is used as a work around for that.
|
# environment is used as a work around for that.
|
||||||
fhsEnv = buildFHSEnv {
|
fhsEnv = buildFHSEnv {
|
||||||
name = "${drvName}-fhs-env";
|
pname = "${drvName}-fhs-env";
|
||||||
|
inherit version;
|
||||||
multiPkgs = pkgs: [
|
multiPkgs = pkgs: [
|
||||||
ncurses5
|
ncurses5
|
||||||
|
|
||||||
|
|
|
@ -28,11 +28,12 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
|
|
||||||
superposition = stdenv.mkDerivation rec{
|
|
||||||
pname = "unigine-superposition";
|
pname = "unigine-superposition";
|
||||||
version = "1.1";
|
version = "1.1";
|
||||||
|
|
||||||
|
superposition = stdenv.mkDerivation rec{
|
||||||
|
inherit pname version;
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://assets.unigine.com/d/Unigine_Superposition-${version}.run";
|
url = "https://assets.unigine.com/d/Unigine_Superposition-${version}.run";
|
||||||
sha256 = "12hzlz792pf8pvxf13fww3qhahqzwzkxq9q3mq20hbhvaphbg7nd";
|
sha256 = "12hzlz792pf8pvxf13fww3qhahqzwzkxq9q3mq20hbhvaphbg7nd";
|
||||||
|
@ -97,7 +98,7 @@ in
|
||||||
# For that we need use a buildFHSEnv.
|
# For that we need use a buildFHSEnv.
|
||||||
|
|
||||||
buildFHSEnv {
|
buildFHSEnv {
|
||||||
name = "Superposition";
|
inherit pname version;
|
||||||
|
|
||||||
targetPkgs = pkgs: [
|
targetPkgs = pkgs: [
|
||||||
superposition
|
superposition
|
||||||
|
|
|
@ -1,137 +0,0 @@
|
||||||
{ stdenv
|
|
||||||
, lib
|
|
||||||
, fetchurl
|
|
||||||
, rpmextract
|
|
||||||
, libnotify
|
|
||||||
, libuuid
|
|
||||||
, cairo
|
|
||||||
, cups
|
|
||||||
, pango
|
|
||||||
, fontconfig
|
|
||||||
, udev
|
|
||||||
, dbus
|
|
||||||
, gtk3
|
|
||||||
, atk
|
|
||||||
, at-spi2-atk
|
|
||||||
, expat
|
|
||||||
, gdk-pixbuf
|
|
||||||
, freetype
|
|
||||||
, nspr
|
|
||||||
, glib
|
|
||||||
, nss
|
|
||||||
, libX11
|
|
||||||
, libXrandr
|
|
||||||
, libXrender
|
|
||||||
, libXtst
|
|
||||||
, libXdamage
|
|
||||||
, libxcb
|
|
||||||
, libXcursor
|
|
||||||
, libXi
|
|
||||||
, libXext
|
|
||||||
, libXfixes
|
|
||||||
, libXft
|
|
||||||
, libXcomposite
|
|
||||||
, libXScrnSaver
|
|
||||||
, alsa-lib
|
|
||||||
, pulseaudio
|
|
||||||
, makeWrapper
|
|
||||||
, xdg-utils
|
|
||||||
}:
|
|
||||||
|
|
||||||
let
|
|
||||||
getFirst = n: v: builtins.concatStringsSep "." (lib.take n (lib.splitString "." v));
|
|
||||||
in
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
pname = "bluejeans";
|
|
||||||
version = "2.32.1.3";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://swdl.bluejeans.com/desktop-app/linux/${getFirst 3 version}/BlueJeans_${version}.rpm";
|
|
||||||
sha256 = "sha256-lsUS7JymCMOa5wlWJOwLFm4KRnAYixi9Kk5CYHB17Ac=";
|
|
||||||
};
|
|
||||||
|
|
||||||
nativeBuildInputs = [ rpmextract makeWrapper ];
|
|
||||||
|
|
||||||
libPath =
|
|
||||||
lib.makeLibraryPath
|
|
||||||
[
|
|
||||||
libnotify
|
|
||||||
libuuid
|
|
||||||
cairo
|
|
||||||
cups
|
|
||||||
pango
|
|
||||||
fontconfig
|
|
||||||
gtk3
|
|
||||||
atk
|
|
||||||
at-spi2-atk
|
|
||||||
expat
|
|
||||||
gdk-pixbuf
|
|
||||||
dbus
|
|
||||||
(lib.getLib udev)
|
|
||||||
freetype
|
|
||||||
nspr
|
|
||||||
glib
|
|
||||||
stdenv.cc.cc
|
|
||||||
nss
|
|
||||||
libX11
|
|
||||||
libXrandr
|
|
||||||
libXrender
|
|
||||||
libXtst
|
|
||||||
libXdamage
|
|
||||||
libxcb
|
|
||||||
libXcursor
|
|
||||||
libXi
|
|
||||||
libXext
|
|
||||||
libXfixes
|
|
||||||
libXft
|
|
||||||
libXcomposite
|
|
||||||
libXScrnSaver
|
|
||||||
alsa-lib
|
|
||||||
pulseaudio
|
|
||||||
];
|
|
||||||
|
|
||||||
localtime64_stub = ./localtime64_stub.c;
|
|
||||||
|
|
||||||
buildCommand = ''
|
|
||||||
mkdir -p $out/bin/
|
|
||||||
cd $out
|
|
||||||
rpmextract $src
|
|
||||||
mv usr/share share
|
|
||||||
rmdir usr
|
|
||||||
|
|
||||||
patchelf \
|
|
||||||
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
|
|
||||||
--replace-needed libudev.so.0 libudev.so.1 \
|
|
||||||
opt/BlueJeans/bluejeans-v2
|
|
||||||
|
|
||||||
patchelf \
|
|
||||||
--set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
|
|
||||||
opt/BlueJeans/resources/BluejeansHelper
|
|
||||||
|
|
||||||
cc $localtime64_stub -shared -o "${placeholder "out"}"/opt/BlueJeans/liblocaltime64_stub.so
|
|
||||||
|
|
||||||
# make xdg-open overrideable at runtime
|
|
||||||
makeWrapper $out/opt/BlueJeans/bluejeans-v2 $out/bin/bluejeans \
|
|
||||||
--set LD_LIBRARY_PATH "${libPath}":"${placeholder "out"}"/opt/BlueJeans \
|
|
||||||
--set LD_PRELOAD "$out"/opt/BlueJeans/liblocaltime64_stub.so \
|
|
||||||
--suffix PATH : ${lib.makeBinPath [ xdg-utils ]}
|
|
||||||
|
|
||||||
substituteInPlace "$out"/share/applications/bluejeans-v2.desktop \
|
|
||||||
--replace "/opt/BlueJeans/bluejeans-v2" "$out/bin/bluejeans"
|
|
||||||
|
|
||||||
patchShebangs "$out"
|
|
||||||
'';
|
|
||||||
|
|
||||||
passthru.updateScript = ./update.sh;
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Video, audio, and web conferencing that works together with the collaboration tools you use every day";
|
|
||||||
homepage = "https://www.bluejeans.com";
|
|
||||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
|
||||||
license = licenses.unfree;
|
|
||||||
maintainers = [ ];
|
|
||||||
platforms = [ "x86_64-linux" ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
|
|
||||||
void *localtime64() {
|
|
||||||
fprintf(stderr, "nixpkgs: call into localtime64_r\n");
|
|
||||||
abort();
|
|
||||||
}
|
|
||||||
|
|
||||||
void *localtime64_r() {
|
|
||||||
fprintf(stderr, "nixpkgs: call into localtime64_r\n");
|
|
||||||
abort();
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
#!/usr/bin/env nix-shell
|
|
||||||
#!nix-shell -i bash -p curl pup common-updater-scripts
|
|
||||||
|
|
||||||
set -eu -o pipefail
|
|
||||||
|
|
||||||
version="$(curl -Ls https://www.bluejeans.com/downloads | \
|
|
||||||
pup 'a[href$=".rpm"] attr{href}' | \
|
|
||||||
# output contains app and events
|
|
||||||
grep "desktop-app" | \
|
|
||||||
awk -F'[ ._ ]' '{printf $6"."$7"."$8"."$9"\n"}')"
|
|
||||||
|
|
||||||
update-source-version bluejeans-gui "$version"
|
|
58
pkgs/applications/video/mpv/scripts/mpv-image-viewer.nix
Normal file
58
pkgs/applications/video/mpv/scripts/mpv-image-viewer.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{
|
||||||
|
buildLua,
|
||||||
|
fetchFromGitHub,
|
||||||
|
lib,
|
||||||
|
unstableGitUpdater,
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
mkScript =
|
||||||
|
pname: args:
|
||||||
|
let
|
||||||
|
self = {
|
||||||
|
inherit pname;
|
||||||
|
version = "0-unstable-2023-03-03";
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "occivink";
|
||||||
|
repo = "mpv-image-viewer";
|
||||||
|
rev = "efc82147cba4809f22e9afae6ed7a41ad9794ffd";
|
||||||
|
hash = "sha256-H7uBwrIb5uNEr3m+rHED/hO2CHypGu7hbcRpC30am2Q=";
|
||||||
|
};
|
||||||
|
|
||||||
|
sourceRoot = "source/scripts";
|
||||||
|
|
||||||
|
passthru = {
|
||||||
|
updateScript = unstableGitUpdater { };
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Configuration, scripts and tips for using mpv as an image viewer";
|
||||||
|
longDescription = ''
|
||||||
|
${pname} is a component of mpv-image-viewer.
|
||||||
|
|
||||||
|
mpv-image-viewer aggregates configurations, scripts and tips for using
|
||||||
|
mpv as an image viewer. The affectionate nickname mvi is given to mpv in
|
||||||
|
such case.
|
||||||
|
|
||||||
|
Each mpv-image-viewer script can be used on its own without depending on
|
||||||
|
any of the others. Refer to the README and script-opts/ directory for
|
||||||
|
additional configuration tips or examples.
|
||||||
|
'';
|
||||||
|
homepage = "https://github.com/occivink/mpv-image-viewer";
|
||||||
|
license = lib.licenses.unlicense;
|
||||||
|
maintainers = with lib.maintainers; [ colinsane ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
buildLua (lib.attrsets.recursiveUpdate self args);
|
||||||
|
in
|
||||||
|
lib.recurseIntoAttrs (
|
||||||
|
lib.mapAttrs (name: lib.makeOverridable (mkScript name)) {
|
||||||
|
detect-image.meta.description = "Allows you to run specific commands when images are being displayed. Does not do anything by default, needs to be configured through detect_image.conf";
|
||||||
|
equalizer = { };
|
||||||
|
freeze-window.meta.description = "By default, mpv automatically resizes the window when the current file changes to fit its size. This script freezes the window so that this does not happen. There is no configuration";
|
||||||
|
image-positioning.meta.description = "Adds several high-level commands to zoom and pan";
|
||||||
|
minimap.meta.description = "Adds a minimap that displays the position of the image relative to the view";
|
||||||
|
ruler.meta.description = "Adds a ruler command that lets you measure positions, distances and angles in the image. Can be configured through ruler.conf";
|
||||||
|
status-line.meta.description = "Adds a status line that can show different properties in the corner of the window. By default it shows filename [positon/total] in the bottom left";
|
||||||
|
}
|
||||||
|
)
|
|
@ -94,15 +94,11 @@ if stdenv.hostPlatform.isLinux then
|
||||||
# toolchains from the internet that have their interpreters pointed at
|
# toolchains from the internet that have their interpreters pointed at
|
||||||
# /lib64/ld-linux-x86-64.so.2
|
# /lib64/ld-linux-x86-64.so.2
|
||||||
buildFHSEnv {
|
buildFHSEnv {
|
||||||
inherit (pkg) name meta;
|
inherit (pkg) pname version meta;
|
||||||
|
|
||||||
runScript = "${pkg.outPath}/bin/arduino-cli";
|
runScript = "${pkg.outPath}/bin/arduino-cli";
|
||||||
|
|
||||||
extraInstallCommands =
|
extraInstallCommands = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
|
||||||
''
|
|
||||||
mv $out/bin/$name $out/bin/arduino-cli
|
|
||||||
''
|
|
||||||
+ lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
|
|
||||||
cp -r ${pkg.outPath}/share $out/share
|
cp -r ${pkg.outPath}/share $out/share
|
||||||
'';
|
'';
|
||||||
passthru.pureGoPkg = pkg;
|
passthru.pureGoPkg = pkg;
|
||||||
|
|
|
@ -15,13 +15,13 @@
|
||||||
SDL2
|
SDL2
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "emulationstation-de";
|
pname = "emulationstation-de";
|
||||||
version = "2.2.1";
|
version = "3.0.2";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
url = "https://gitlab.com/es-de/emulationstation-de/-/archive/v2.2.1/emulationstation-de-v2.2.1.tar.gz";
|
url = "https://gitlab.com/es-de/emulationstation-de/-/archive/v${finalAttrs.version}/emulationstation-de-v${finalAttrs.version}.tar.gz";
|
||||||
hash = "sha256:1kp9p3fndnx4mapgfvy742zwisyf0y5k57xkqkis0kxyibx0z8i6";
|
hash = "sha256:RGlXFybbXYx66Hpjp2N3ovK4T5VyS4w0DWRGNvbwugs=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [ ./001-add-nixpkgs-retroarch-cores.patch ];
|
patches = [ ./001-add-nixpkgs-retroarch-cores.patch ];
|
||||||
|
@ -44,8 +44,25 @@ stdenv.mkDerivation {
|
||||||
];
|
];
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
install -D ../emulationstation $out/bin/emulationstation
|
# Binary
|
||||||
cp -r ../resources/ $out/bin/resources/
|
install -D ../es-de $out/bin/es-de
|
||||||
|
|
||||||
|
# Resources
|
||||||
|
mkdir -p $out/share/es-de/
|
||||||
|
cp -r ../resources/ $out/share/es-de/resources/
|
||||||
|
|
||||||
|
# Desktop file
|
||||||
|
mkdir -p $out/share/applications
|
||||||
|
cp ../es-app/assets/org.es_de.frontend.desktop $out/share/applications/
|
||||||
|
|
||||||
|
# Icon
|
||||||
|
mkdir -p $out/share/icons/hicolor/scalable/apps
|
||||||
|
cp ../es-app/assets/org.es_de.frontend.svg $out/share/icons/hicolor/scalable/apps/
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
substituteInPlace $out/share/applications/org.es_de.frontend.desktop \
|
||||||
|
--replace "Exec=es-de" "Exec=$out/bin/es-de"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -54,6 +71,6 @@ stdenv.mkDerivation {
|
||||||
maintainers = with lib.maintainers; [ ivarmedi ];
|
maintainers = with lib.maintainers; [ ivarmedi ];
|
||||||
license = lib.licenses.mit;
|
license = lib.licenses.mit;
|
||||||
platforms = lib.platforms.linux;
|
platforms = lib.platforms.linux;
|
||||||
mainProgram = "emulationstation";
|
mainProgram = "es-de";
|
||||||
};
|
};
|
||||||
}
|
})
|
||||||
|
|
|
@ -265,6 +265,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||||
changelog = "https://github.com/flatpak/flatpak/releases/tag/${finalAttrs.version}";
|
changelog = "https://github.com/flatpak/flatpak/releases/tag/${finalAttrs.version}";
|
||||||
license = lib.licenses.lgpl21Plus;
|
license = lib.licenses.lgpl21Plus;
|
||||||
maintainers = with lib.maintainers; [ getchoo ];
|
maintainers = with lib.maintainers; [ getchoo ];
|
||||||
|
mainProgram = "flatpak";
|
||||||
platforms = lib.platforms.linux;
|
platforms = lib.platforms.linux;
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
|
@ -12,16 +12,16 @@
|
||||||
|
|
||||||
rustPlatform.buildRustPackage rec {
|
rustPlatform.buildRustPackage rec {
|
||||||
pname = "hyprgui";
|
pname = "hyprgui";
|
||||||
version = "0.1.8";
|
version = "0.1.9";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "hyprutils";
|
owner = "hyprutils";
|
||||||
repo = "hyprgui";
|
repo = "hyprgui";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-Bg1S/FhduRSSXc3Yd7SkyrmMKff7oh0jw781jTB0J60=";
|
hash = "sha256-VP+6qWu4nv8h9LLjTnl8Mh1aAlIA+zuufRYoouxl2Tc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoHash = "sha256-bhtmU0vGptUYrPN/BbbSvSa27Ykma8UI6TS17eiQkyU=";
|
cargoHash = "sha256-t0HqraCA4q7K4EEtPS8J0ZmnhBB+Zf0aX+yXSUdKJzo=";
|
||||||
|
|
||||||
strictDeps = true;
|
strictDeps = true;
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@ rustPlatform.buildRustPackage rec {
|
||||||
pkg-config
|
pkg-config
|
||||||
wrapGAppsHook4
|
wrapGAppsHook4
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
glib
|
glib
|
||||||
cairo
|
cairo
|
||||||
|
@ -36,9 +37,15 @@ rustPlatform.buildRustPackage rec {
|
||||||
gtk4
|
gtk4
|
||||||
];
|
];
|
||||||
|
|
||||||
|
prePatch = ''
|
||||||
|
substituteInPlace hyprgui.desktop \
|
||||||
|
--replace-fail "/usr/bin/" ""
|
||||||
|
'';
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
install -Dm644 -t $out/usr/share/icons hyprgui.png
|
install -Dm644 -t $out/usr/share/icons hyprgui.png
|
||||||
install -Dm644 -t $out/usr/share/applications hyprgui.desktop
|
install -Dm644 -t $out/usr/share/applications hyprgui.desktop
|
||||||
|
install -Dm644 -t $out/usr/share/licenses/${pname} LICENSE
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{ lib, stdenv, fetchurl, fetchpatch, ncurses, which, perl
|
{ lib, stdenv, fetchurl, fetchpatch, ncurses, which, perl
|
||||||
, gdbm ? null
|
, gdbm
|
||||||
, openssl ? null
|
, openssl
|
||||||
, cyrus_sasl ? null
|
, cyrus_sasl
|
||||||
, gnupg ? null
|
, gnupg
|
||||||
, gpgme ? null
|
, gpgme
|
||||||
, libkrb5 ? null
|
, libkrb5
|
||||||
, headerCache ? true
|
, headerCache ? true
|
||||||
, sslSupport ? true
|
, sslSupport ? true
|
||||||
, saslSupport ? true
|
, saslSupport ? true
|
||||||
|
|
|
@ -2,16 +2,16 @@
|
||||||
|
|
||||||
buildGo123Module rec {
|
buildGo123Module rec {
|
||||||
pname = "webdav";
|
pname = "webdav";
|
||||||
version = "5.4.3";
|
version = "5.4.4";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "hacdias";
|
owner = "hacdias";
|
||||||
repo = "webdav";
|
repo = "webdav";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-ASc+ioVBpCFESEryI0EwKYZln1JzPCOKLJJWmh7L8oA=";
|
sha256 = "sha256-8T/CRIVB4jW9kJ26om6fcm/khfzqdYCWbhJIIRZlMC0=";
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorHash = "sha256-d8WauJ1i429dr79iHgrbFRZCmx+W6OobSINy8aNGG6w=";
|
vendorHash = "sha256-f/Og0FkuaeUJ4bjqeUXVacIWnp6uiod7s146iKDSMgU=";
|
||||||
|
|
||||||
__darwinAllowLocalNetworking = true;
|
__darwinAllowLocalNetworking = true;
|
||||||
|
|
||||||
|
|
|
@ -18,14 +18,14 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "huggingface-hub";
|
pname = "huggingface-hub";
|
||||||
version = "0.26.2";
|
version = "0.26.3";
|
||||||
pyproject = true;
|
pyproject = true;
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "huggingface";
|
owner = "huggingface";
|
||||||
repo = "huggingface_hub";
|
repo = "huggingface_hub";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
hash = "sha256-F2E8P0Hq3Ee+RXUEN4t2JtfBtK36aMsHQCnid9VWdLk=";
|
hash = "sha256-GTxtz9UuyvT1C5sba1Nz58xfTsIczEVe9X8gkpztRvQ=";
|
||||||
};
|
};
|
||||||
|
|
||||||
build-system = [ setuptools ];
|
build-system = [ setuptools ];
|
||||||
|
|
|
@ -7,14 +7,14 @@
|
||||||
|
|
||||||
buildPythonPackage rec {
|
buildPythonPackage rec {
|
||||||
pname = "rmsd";
|
pname = "rmsd";
|
||||||
version = "1.5.1";
|
version = "1.6.0";
|
||||||
format = "setuptools";
|
format = "setuptools";
|
||||||
|
|
||||||
propagatedBuildInputs = [ scipy ];
|
propagatedBuildInputs = [ scipy ];
|
||||||
|
|
||||||
src = fetchPypi {
|
src = fetchPypi {
|
||||||
inherit pname version;
|
inherit pname version;
|
||||||
hash = "sha256-wDQoIUMqrBDpgImHeHWizYu/YkFjlxB22TaGpA8Q0Sc=";
|
hash = "sha256-9bALeHmdw6OJGxp3aabkDfCxo4fGv2etKzpBDhmZOrI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
pythonImportsCheck = [ "rmsd" ];
|
pythonImportsCheck = [ "rmsd" ];
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
buildFreebsd,
|
buildFreebsd,
|
||||||
patchesRoot,
|
patchesRoot,
|
||||||
writeText,
|
writeText,
|
||||||
|
buildPackages,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
self:
|
self:
|
||||||
|
@ -64,16 +65,32 @@ lib.packagesFromDirectoryRecursive {
|
||||||
inherit (self) libmd libnetbsd;
|
inherit (self) libmd libnetbsd;
|
||||||
};
|
};
|
||||||
|
|
||||||
libc = self.callPackage ./pkgs/libc/package.nix {
|
libcMinimal = self.callPackage ./pkgs/libcMinimal.nix {
|
||||||
inherit (buildFreebsd)
|
inherit (buildFreebsd)
|
||||||
makeMinimal
|
|
||||||
install
|
|
||||||
gencat
|
|
||||||
rpcgen
|
rpcgen
|
||||||
mkcsmapper
|
gencat
|
||||||
mkesdb
|
|
||||||
;
|
;
|
||||||
inherit (self) csu include;
|
inherit (buildPackages)
|
||||||
|
flex
|
||||||
|
byacc
|
||||||
|
;
|
||||||
|
};
|
||||||
|
|
||||||
|
libc = self.callPackage ./pkgs/libc/package.nix {
|
||||||
|
inherit (self) libcMinimal librpcsvc libelf;
|
||||||
|
};
|
||||||
|
|
||||||
|
librpcsvc = self.callPackage ./pkgs/librpcsvc.nix {
|
||||||
|
inherit (buildFreebsd) rpcgen;
|
||||||
|
};
|
||||||
|
|
||||||
|
i18n = self.callPackage ./pkgs/i18n.nix { inherit (buildFreebsd) mkcsmapper mkesdb; };
|
||||||
|
|
||||||
|
libelf = self.callPackage ./pkgs/libelf.nix { inherit (buildPackages) m4; };
|
||||||
|
|
||||||
|
rtld-elf = self.callPackage ./pkgs/rtld-elf.nix {
|
||||||
|
inherit (buildFreebsd) rpcgen;
|
||||||
|
inherit (buildPackages) flex byacc;
|
||||||
};
|
};
|
||||||
|
|
||||||
libnetbsd = self.callPackage ./pkgs/libnetbsd/package.nix { inherit (buildFreebsd) makeMinimal; };
|
libnetbsd = self.callPackage ./pkgs/libnetbsd/package.nix { inherit (buildFreebsd) makeMinimal; };
|
||||||
|
|
|
@ -1,81 +0,0 @@
|
||||||
From 197b10de54b53a089ad549f2e00787b4fa719210 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Artemis Tosini <me@artem.ist>
|
|
||||||
Date: Sat, 2 Nov 2024 07:50:13 +0000
|
|
||||||
Subject: [PATCH] HACK: bsd.lib.mk: Treat empty SHLIB_NAME as nonexistant
|
|
||||||
|
|
||||||
Unsetting SHLIB_NAME in nix package definitions is a pain
|
|
||||||
but we can easily set it to be empty. This is useful when
|
|
||||||
building static libraries without unneeded static libraries.
|
|
||||||
---
|
|
||||||
share/mk/bsd.lib.mk | 14 +++++++-------
|
|
||||||
1 file changed, 7 insertions(+), 7 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
|
|
||||||
index 5f328d5378ca..89d16dc6fa41 100644
|
|
||||||
--- a/share/mk/bsd.lib.mk
|
|
||||||
+++ b/share/mk/bsd.lib.mk
|
|
||||||
@@ -242,7 +242,7 @@ PO_FLAG=-pg
|
|
||||||
_LIBDIR:=${LIBDIR}
|
|
||||||
_SHLIBDIR:=${SHLIBDIR}
|
|
||||||
|
|
||||||
-.if defined(SHLIB_NAME)
|
|
||||||
+.if defined(SHLIB_NAME) && !empty(SHLIB_NAME)
|
|
||||||
.if ${MK_DEBUG_FILES} != "no"
|
|
||||||
SHLIB_NAME_FULL=${SHLIB_NAME}.full
|
|
||||||
# Use ${DEBUGDIR} for base system debug files, else .debug subdirectory
|
|
||||||
@@ -277,7 +277,7 @@ LDFLAGS+= -Wl,--undefined-version
|
|
||||||
.endif
|
|
||||||
.endif
|
|
||||||
|
|
||||||
-.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
|
|
||||||
+.if defined(LIB) && !empty(LIB) || (defined(SHLIB_NAME) && !empty(SHLIB_NAME))
|
|
||||||
OBJS+= ${SRCS:N*.h:${OBJS_SRCS_FILTER:ts:}:S/$/.o/}
|
|
||||||
BCOBJS+= ${SRCS:N*.[hsS]:N*.asm:${OBJS_SRCS_FILTER:ts:}:S/$/.bco/g}
|
|
||||||
LLOBJS+= ${SRCS:N*.[hsS]:N*.asm:${OBJS_SRCS_FILTER:ts:}:S/$/.llo/g}
|
|
||||||
@@ -320,14 +320,14 @@ lib${LIB_PRIVATE}${LIB}.ll: ${LLOBJS}
|
|
||||||
CLEANFILES+= lib${LIB_PRIVATE}${LIB}.bc lib${LIB_PRIVATE}${LIB}.ll
|
|
||||||
.endif
|
|
||||||
|
|
||||||
-.if defined(SHLIB_NAME) || \
|
|
||||||
+.if (defined(SHLIB_NAME) && !empty(SHLIB_NAME)) || \
|
|
||||||
defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
|
|
||||||
SOBJS+= ${OBJS:.o=.pico}
|
|
||||||
DEPENDOBJS+= ${SOBJS}
|
|
||||||
CLEANFILES+= ${SOBJS}
|
|
||||||
.endif
|
|
||||||
|
|
||||||
-.if defined(SHLIB_NAME)
|
|
||||||
+.if defined(SHLIB_NAME) && !empty(SHLIB_NAME)
|
|
||||||
_LIBS+= ${SHLIB_NAME}
|
|
||||||
|
|
||||||
SOLINKOPTS+= -shared -Wl,-x
|
|
||||||
@@ -435,7 +435,7 @@ all: all-man
|
|
||||||
CLEANFILES+= ${_LIBS}
|
|
||||||
|
|
||||||
_EXTRADEPEND:
|
|
||||||
-.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME)
|
|
||||||
+.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME) && !empty(SHLIB_NAME)
|
|
||||||
.if defined(DPADD) && !empty(DPADD)
|
|
||||||
echo ${SHLIB_NAME_FULL}: ${DPADD} >> ${DEPENDFILE}
|
|
||||||
.endif
|
|
||||||
@@ -501,7 +501,7 @@ _libinstall:
|
|
||||||
${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}_p.a ${DESTDIR}${_LIBDIR}/
|
|
||||||
.endif
|
|
||||||
.endif
|
|
||||||
-.if defined(SHLIB_NAME)
|
|
||||||
+.if defined(SHLIB_NAME) && !empty(SHLIB_NAME)
|
|
||||||
${INSTALL} ${TAG_ARGS} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
|
||||||
${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
|
|
||||||
${SHLIB_NAME} ${DESTDIR}${_SHLIBDIR}/
|
|
||||||
@@ -588,7 +588,7 @@ OBJS_DEPEND_GUESS+= ${SRCS:M*.h}
|
|
||||||
OBJS_DEPEND_GUESS.${_S:${OBJS_SRCS_FILTER:ts:}}.po+= ${_S}
|
|
||||||
.endfor
|
|
||||||
.endif
|
|
||||||
-.if defined(SHLIB_NAME) || \
|
|
||||||
+.if (defined(SHLIB_NAME) && !empty(SHLIB_NAME)) || \
|
|
||||||
defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
|
|
||||||
.for _S in ${SRCS:N*.[hly]}
|
|
||||||
OBJS_DEPEND_GUESS.${_S:${OBJS_SRCS_FILTER:ts:}}.pico+= ${_S}
|
|
||||||
--
|
|
||||||
2.46.1
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/lib/libelf/Makefile b/lib/libelf/Makefile
|
||||||
|
index c15ce2798a91..d6d8754e2b4f 100644
|
||||||
|
--- a/lib/libelf/Makefile
|
||||||
|
+++ b/lib/libelf/Makefile
|
||||||
|
@@ -80,7 +80,7 @@ INCS= libelf.h gelf.h
|
||||||
|
SRCS+= sys/elf32.h sys/elf64.h sys/elf_common.h
|
||||||
|
|
||||||
|
# Allow bootstrapping elftoolchain on Linux:
|
||||||
|
-.if defined(BOOTSTRAPPING) && ${.MAKE.OS} == "Linux"
|
||||||
|
+.if defined(BOOTSTRAPPING)
|
||||||
|
native-elf-format.h:
|
||||||
|
${ELFTCDIR}/common/native-elf-format > ${.TARGET} || rm ${.TARGET}
|
||||||
|
SRCS+= native-elf-format.h
|
154
pkgs/os-specific/bsd/freebsd/patches/14.1/mk.patch
Normal file
154
pkgs/os-specific/bsd/freebsd/patches/14.1/mk.patch
Normal file
|
@ -0,0 +1,154 @@
|
||||||
|
diff --git a/share/mk/bsd.incs.mk b/share/mk/bsd.incs.mk
|
||||||
|
index df4cf4641141..a87c7f9db03a 100644
|
||||||
|
--- a/share/mk/bsd.incs.mk
|
||||||
|
+++ b/share/mk/bsd.incs.mk
|
||||||
|
@@ -63,8 +63,8 @@ stage_includes: stage_as.${header:T}
|
||||||
|
|
||||||
|
installincludes: _${group}INS_${header:T}
|
||||||
|
_${group}INS_${header:T}: ${header}
|
||||||
|
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -C -o ${${group}OWN_${.ALLSRC:T}} \
|
||||||
|
- -g ${${group}GRP_${.ALLSRC:T}} -m ${${group}MODE_${.ALLSRC:T}} \
|
||||||
|
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -C \
|
||||||
|
+ -m ${${group}MODE_${.ALLSRC:T}} \
|
||||||
|
${.ALLSRC} \
|
||||||
|
${DESTDIR}${${group}DIR_${.ALLSRC:T}}/${${group}NAME_${.ALLSRC:T}}
|
||||||
|
.else
|
||||||
|
@@ -78,10 +78,10 @@ stage_includes: stage_files.${group}
|
||||||
|
installincludes: _${group}INS
|
||||||
|
_${group}INS: ${_${group}INCS}
|
||||||
|
.if defined(${group}NAME)
|
||||||
|
- ${INSTALL} ${${group}TAG_ARGS} -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \
|
||||||
|
+ ${INSTALL} ${${group}TAG_ARGS} -C -m ${${group}MODE} \
|
||||||
|
${.ALLSRC} ${DESTDIR}${${group}DIR}/${${group}NAME}
|
||||||
|
.else
|
||||||
|
- ${INSTALL} ${${group}TAG_ARGS} -C -o ${${group}OWN} -g ${${group}GRP} -m ${${group}MODE} \
|
||||||
|
+ ${INSTALL} ${${group}TAG_ARGS} -C -m ${${group}MODE} \
|
||||||
|
${.ALLSRC} ${DESTDIR}${${group}DIR}/
|
||||||
|
.endif
|
||||||
|
.endif # !empty(_${group}INCS)
|
||||||
|
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk
|
||||||
|
index 5f328d5378ca..264bbcc84ffb 100644
|
||||||
|
--- a/share/mk/bsd.lib.mk
|
||||||
|
+++ b/share/mk/bsd.lib.mk
|
||||||
|
@@ -242,7 +242,7 @@ PO_FLAG=-pg
|
||||||
|
_LIBDIR:=${LIBDIR}
|
||||||
|
_SHLIBDIR:=${SHLIBDIR}
|
||||||
|
|
||||||
|
-.if defined(SHLIB_NAME)
|
||||||
|
+.if defined(SHLIB_NAME) && !empty(SHLIB_NAME)
|
||||||
|
.if ${MK_DEBUG_FILES} != "no"
|
||||||
|
SHLIB_NAME_FULL=${SHLIB_NAME}.full
|
||||||
|
# Use ${DEBUGDIR} for base system debug files, else .debug subdirectory
|
||||||
|
@@ -277,7 +277,7 @@ LDFLAGS+= -Wl,--undefined-version
|
||||||
|
.endif
|
||||||
|
.endif
|
||||||
|
|
||||||
|
-.if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)
|
||||||
|
+.if defined(LIB) && !empty(LIB) || (defined(SHLIB_NAME) && !empty(SHLIB_NAME))
|
||||||
|
OBJS+= ${SRCS:N*.h:${OBJS_SRCS_FILTER:ts:}:S/$/.o/}
|
||||||
|
BCOBJS+= ${SRCS:N*.[hsS]:N*.asm:${OBJS_SRCS_FILTER:ts:}:S/$/.bco/g}
|
||||||
|
LLOBJS+= ${SRCS:N*.[hsS]:N*.asm:${OBJS_SRCS_FILTER:ts:}:S/$/.llo/g}
|
||||||
|
@@ -320,14 +320,14 @@ lib${LIB_PRIVATE}${LIB}.ll: ${LLOBJS}
|
||||||
|
CLEANFILES+= lib${LIB_PRIVATE}${LIB}.bc lib${LIB_PRIVATE}${LIB}.ll
|
||||||
|
.endif
|
||||||
|
|
||||||
|
-.if defined(SHLIB_NAME) || \
|
||||||
|
+.if (defined(SHLIB_NAME) && !empty(SHLIB_NAME)) || \
|
||||||
|
defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
|
||||||
|
SOBJS+= ${OBJS:.o=.pico}
|
||||||
|
DEPENDOBJS+= ${SOBJS}
|
||||||
|
CLEANFILES+= ${SOBJS}
|
||||||
|
.endif
|
||||||
|
|
||||||
|
-.if defined(SHLIB_NAME)
|
||||||
|
+.if defined(SHLIB_NAME) && !empty(SHLIB_NAME)
|
||||||
|
_LIBS+= ${SHLIB_NAME}
|
||||||
|
|
||||||
|
SOLINKOPTS+= -shared -Wl,-x
|
||||||
|
@@ -435,7 +435,7 @@ all: all-man
|
||||||
|
CLEANFILES+= ${_LIBS}
|
||||||
|
|
||||||
|
_EXTRADEPEND:
|
||||||
|
-.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME)
|
||||||
|
+.if !defined(NO_EXTRADEPEND) && defined(SHLIB_NAME) && !empty(SHLIB_NAME)
|
||||||
|
.if defined(DPADD) && !empty(DPADD)
|
||||||
|
echo ${SHLIB_NAME_FULL}: ${DPADD} >> ${DEPENDFILE}
|
||||||
|
.endif
|
||||||
|
@@ -482,7 +482,7 @@ _SHLINSTALLFLAGS:= ${_SHLINSTALLFLAGS${ie}}
|
||||||
|
installpcfiles: installpcfiles-${pcfile}
|
||||||
|
|
||||||
|
installpcfiles-${pcfile}: ${pcfile}
|
||||||
|
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
||||||
|
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -m ${LIBMODE} \
|
||||||
|
${_INSTALLFLAGS} \
|
||||||
|
${.ALLSRC} ${DESTDIR}${LIBDATADIR}/pkgconfig/
|
||||||
|
.endfor
|
||||||
|
@@ -494,28 +494,28 @@ realinstall: _libinstall installpcfiles
|
||||||
|
.ORDER: beforeinstall _libinstall
|
||||||
|
_libinstall:
|
||||||
|
.if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no"
|
||||||
|
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
||||||
|
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -m ${LIBMODE} \
|
||||||
|
${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}${_STATICLIB_SUFFIX}.a ${DESTDIR}${_LIBDIR}/
|
||||||
|
.if ${MK_PROFILE} != "no"
|
||||||
|
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
||||||
|
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -m ${LIBMODE} \
|
||||||
|
${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}_p.a ${DESTDIR}${_LIBDIR}/
|
||||||
|
.endif
|
||||||
|
.endif
|
||||||
|
-.if defined(SHLIB_NAME)
|
||||||
|
- ${INSTALL} ${TAG_ARGS} ${STRIP} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
||||||
|
+.if defined(SHLIB_NAME) && !empty(SHLIB_NAME)
|
||||||
|
+ ${INSTALL} ${TAG_ARGS} ${STRIP} -m ${LIBMODE} \
|
||||||
|
${_INSTALLFLAGS} ${_SHLINSTALLFLAGS} \
|
||||||
|
${SHLIB_NAME} ${DESTDIR}${_SHLIBDIR}/
|
||||||
|
.if ${MK_DEBUG_FILES} != "no"
|
||||||
|
.if defined(DEBUGMKDIR)
|
||||||
|
${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -d ${DESTDIR}${DEBUGFILEDIR}/
|
||||||
|
.endif
|
||||||
|
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -o ${LIBOWN} -g ${LIBGRP} -m ${DEBUGMODE} \
|
||||||
|
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dbg} -m ${DEBUGMODE} \
|
||||||
|
${_INSTALLFLAGS} \
|
||||||
|
${SHLIB_NAME}.debug ${DESTDIR}${DEBUGFILEDIR}/
|
||||||
|
.endif
|
||||||
|
.if defined(SHLIB_LINK)
|
||||||
|
.if commands(${SHLIB_LINK:R}.ld)
|
||||||
|
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -S -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
||||||
|
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -S -m ${LIBMODE} \
|
||||||
|
${_INSTALLFLAGS} ${SHLIB_LINK:R}.ld \
|
||||||
|
${DESTDIR}${_LIBDIR}/${SHLIB_LINK}
|
||||||
|
.for _SHLIB_LINK_LINK in ${SHLIB_LDSCRIPT_LINKS}
|
||||||
|
@@ -548,7 +548,7 @@ _libinstall:
|
||||||
|
.endif # SHLIB_LINK
|
||||||
|
.endif # SHIB_NAME
|
||||||
|
.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
|
||||||
|
- ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
||||||
|
+ ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -m ${LIBMODE} \
|
||||||
|
${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${_LIBDIR}/
|
||||||
|
.endif
|
||||||
|
.endif # !defined(INTERNALLIB)
|
||||||
|
@@ -588,7 +588,7 @@ OBJS_DEPEND_GUESS+= ${SRCS:M*.h}
|
||||||
|
OBJS_DEPEND_GUESS.${_S:${OBJS_SRCS_FILTER:ts:}}.po+= ${_S}
|
||||||
|
.endfor
|
||||||
|
.endif
|
||||||
|
-.if defined(SHLIB_NAME) || \
|
||||||
|
+.if (defined(SHLIB_NAME) && !empty(SHLIB_NAME)) || \
|
||||||
|
defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB)
|
||||||
|
.for _S in ${SRCS:N*.[hly]}
|
||||||
|
OBJS_DEPEND_GUESS.${_S:${OBJS_SRCS_FILTER:ts:}}.pico+= ${_S}
|
||||||
|
diff --git a/share/mk/bsd.man.mk b/share/mk/bsd.man.mk
|
||||||
|
index 04316c46b705..9ad3c8ce70e7 100644
|
||||||
|
--- a/share/mk/bsd.man.mk
|
||||||
|
+++ b/share/mk/bsd.man.mk
|
||||||
|
@@ -50,9 +50,9 @@
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.if ${MK_MANSPLITPKG} == "no"
|
||||||
|
-MINSTALL?= ${INSTALL} ${TAG_ARGS} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
|
||||||
|
+MINSTALL?= ${INSTALL} ${TAG_ARGS} -m ${MANMODE}
|
||||||
|
.else
|
||||||
|
-MINSTALL?= ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},man} -o ${MANOWN} -g ${MANGRP} -m ${MANMODE}
|
||||||
|
+MINSTALL?= ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},man} -m ${MANMODE}
|
||||||
|
.endif
|
||||||
|
|
||||||
|
CATDIR= ${MANDIR:H:S/$/\/cat/}
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/libexec/rtld-elf/Makefile b/libexec/rtld-elf/Makefile
|
||||||
|
index 0dbd2b8aa935..241d7a78e208 100644
|
||||||
|
--- a/libexec/rtld-elf/Makefile
|
||||||
|
+++ b/libexec/rtld-elf/Makefile
|
||||||
|
@@ -54,7 +54,7 @@ NO_WCAST_ALIGN= yes
|
||||||
|
INSTALLFLAGS= -C -b
|
||||||
|
PRECIOUSPROG=
|
||||||
|
BINDIR= /libexec
|
||||||
|
-SYMLINKS= ../..${BINDIR}/${PROG} ${LIBEXECDIR}/${PROG}
|
||||||
|
+SYMLINKS= ${BINDIR}/${PROG} ${LIBEXECDIR}/${PROG}
|
||||||
|
MLINKS?= rtld.1 ld-elf.so.1.1 \
|
||||||
|
rtld.1 ld.so.1
|
||||||
|
|
|
@ -2,11 +2,9 @@
|
||||||
mkDerivation,
|
mkDerivation,
|
||||||
pkgsBuildBuild,
|
pkgsBuildBuild,
|
||||||
libjail,
|
libjail,
|
||||||
libmd,
|
|
||||||
libnetbsd,
|
libnetbsd,
|
||||||
libcapsicum,
|
libcapsicum,
|
||||||
libcasper,
|
libcasper,
|
||||||
libelf,
|
|
||||||
libxo,
|
libxo,
|
||||||
libncurses-tinfo,
|
libncurses-tinfo,
|
||||||
libedit,
|
libedit,
|
||||||
|
@ -36,11 +34,9 @@ mkDerivation {
|
||||||
];
|
];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libjail
|
libjail
|
||||||
libmd
|
|
||||||
libnetbsd
|
libnetbsd
|
||||||
libcapsicum
|
libcapsicum
|
||||||
libcasper
|
libcasper
|
||||||
libelf
|
|
||||||
libxo
|
libxo
|
||||||
libncurses-tinfo
|
libncurses-tinfo
|
||||||
libedit
|
libedit
|
||||||
|
|
|
@ -174,4 +174,6 @@ mkDerivation {
|
||||||
# build build-time dependencies for building FreeBSD packages). It is
|
# build build-time dependencies for building FreeBSD packages). It is
|
||||||
# not needed when building for FreeBSD.
|
# not needed when building for FreeBSD.
|
||||||
meta.broken = stdenv.hostPlatform.isFreeBSD;
|
meta.broken = stdenv.hostPlatform.isFreeBSD;
|
||||||
|
|
||||||
|
alwaysKeepStatic = true;
|
||||||
}
|
}
|
||||||
|
|
20
pkgs/os-specific/bsd/freebsd/pkgs/i18n.nix
Normal file
20
pkgs/os-specific/bsd/freebsd/pkgs/i18n.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
mkcsmapper,
|
||||||
|
mkesdb,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "share/i18n";
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
extraNativeBuildInputs = [
|
||||||
|
mkcsmapper
|
||||||
|
mkesdb
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export makeFlags="$makeFlags ESDBDIR=$out/share/i18n/esdb CSMAPPERDIR=$out/share/i18n/csmapper"
|
||||||
|
'';
|
||||||
|
}
|
|
@ -1,5 +1,4 @@
|
||||||
{
|
{
|
||||||
stdenv,
|
|
||||||
lib,
|
lib,
|
||||||
mkDerivation,
|
mkDerivation,
|
||||||
buildPackages,
|
buildPackages,
|
||||||
|
|
|
@ -26,6 +26,9 @@ let
|
||||||
@out@/bin/xinstall "''${args[@]}"
|
@out@/bin/xinstall "''${args[@]}"
|
||||||
''
|
''
|
||||||
);
|
);
|
||||||
|
libmd' = libmd.override {
|
||||||
|
bootstrapInstallation = true;
|
||||||
|
};
|
||||||
in
|
in
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
path = "usr.bin/xinstall";
|
path = "usr.bin/xinstall";
|
||||||
|
@ -39,8 +42,12 @@ mkDerivation {
|
||||||
(if stdenv.hostPlatform == stdenv.buildPlatform then boot-install else install)
|
(if stdenv.hostPlatform == stdenv.buildPlatform then boot-install else install)
|
||||||
];
|
];
|
||||||
skipIncludesPhase = true;
|
skipIncludesPhase = true;
|
||||||
buildInputs = compatIfNeeded ++ [
|
buildInputs =
|
||||||
libmd
|
compatIfNeeded
|
||||||
|
++ lib.optionals (!stdenv.hostPlatform.isFreeBSD) [
|
||||||
|
libmd'
|
||||||
|
]
|
||||||
|
++ [
|
||||||
libnetbsd
|
libnetbsd
|
||||||
];
|
];
|
||||||
makeFlags =
|
makeFlags =
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
mkDerivation,
|
mkDerivation,
|
||||||
libelf,
|
|
||||||
compatIfNeeded,
|
compatIfNeeded,
|
||||||
|
libelf,
|
||||||
}:
|
}:
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
path = "usr.sbin/kldxref";
|
path = "usr.sbin/kldxref";
|
||||||
|
|
||||||
buildInputs = [ libelf ] ++ compatIfNeeded;
|
buildInputs = lib.optionals (!stdenv.hostPlatform.isFreeBSD) [ libelf ] ++ compatIfNeeded;
|
||||||
|
|
||||||
# We symlink in our modules, make it follow symlinks
|
# We symlink in our modules, make it follow symlinks
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
mkDerivation,
|
mkDerivation,
|
||||||
libelf,
|
|
||||||
}:
|
}:
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
path = "usr.bin/ldd";
|
path = "usr.bin/ldd";
|
||||||
|
@ -11,8 +10,6 @@ mkDerivation {
|
||||||
"contrib/elftoolchain/libelf"
|
"contrib/elftoolchain/libelf"
|
||||||
];
|
];
|
||||||
|
|
||||||
buildInputs = [ libelf ];
|
|
||||||
|
|
||||||
env = {
|
env = {
|
||||||
NIX_CFLAGS_COMPILE = "-D_RTLD_PATH=${lib.getLib stdenv.cc.libc}/libexec/ld-elf.so.1";
|
NIX_CFLAGS_COMPILE = "-D_RTLD_PATH=${lib.getLib stdenv.cc.libc}/libexec/ld-elf.so.1";
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,303 +1,56 @@
|
||||||
{
|
{
|
||||||
lib,
|
symlinkJoin,
|
||||||
buildPackages,
|
|
||||||
stdenv,
|
|
||||||
mkDerivation,
|
|
||||||
|
|
||||||
bsdSetupHook,
|
|
||||||
freebsdSetupHook,
|
|
||||||
makeMinimal,
|
|
||||||
install,
|
|
||||||
flex,
|
|
||||||
byacc,
|
|
||||||
gencat,
|
|
||||||
rpcgen,
|
|
||||||
mkcsmapper,
|
|
||||||
mkesdb,
|
|
||||||
|
|
||||||
csu,
|
|
||||||
include,
|
include,
|
||||||
versionData,
|
csu,
|
||||||
}:
|
libcMinimal,
|
||||||
|
libssp_nonshared,
|
||||||
mkDerivation {
|
libgcc,
|
||||||
noLibc = true;
|
libmd,
|
||||||
pname = "libc";
|
libthr,
|
||||||
path = "lib/libc";
|
msun,
|
||||||
extraPaths =
|
librpcsvc,
|
||||||
[
|
libutil,
|
||||||
"lib/libc_nonshared"
|
librt,
|
||||||
"etc/group"
|
libcrypt,
|
||||||
"etc/master.passwd"
|
libelf,
|
||||||
"etc/shells"
|
libexecinfo,
|
||||||
"lib/libmd"
|
libkvm,
|
||||||
"lib/libutil"
|
libmemstat,
|
||||||
"lib/msun"
|
libprocstat,
|
||||||
"sys/kern"
|
libdevstat,
|
||||||
"sys/libkern"
|
libiconvModules,
|
||||||
"sys/sys"
|
libdl,
|
||||||
"sys/crypto/chacha20"
|
i18n,
|
||||||
"include/rpcsvc"
|
rtld-elf,
|
||||||
"contrib/jemalloc"
|
baseModules ? [
|
||||||
"contrib/gdtoa"
|
|
||||||
"contrib/libc-pwcache"
|
|
||||||
"contrib/libc-vis"
|
|
||||||
]
|
|
||||||
++ lib.optionals (versionData.major == 13) [ "contrib/tzcode/stdtime" ]
|
|
||||||
++ lib.optionals (versionData.major >= 14) [ "contrib/tzcode" ]
|
|
||||||
++ [
|
|
||||||
|
|
||||||
# libthr
|
|
||||||
"lib/libthr"
|
|
||||||
"lib/libthread_db"
|
|
||||||
"libexec/rtld-elf"
|
|
||||||
"lib/csu/common/crtbrand.S"
|
|
||||||
"lib/csu/common/notes.h"
|
|
||||||
|
|
||||||
# librpcsvc
|
|
||||||
"lib/librpcsvc"
|
|
||||||
|
|
||||||
# librt
|
|
||||||
"lib/librt"
|
|
||||||
|
|
||||||
# libcrypt
|
|
||||||
"lib/libcrypt"
|
|
||||||
"lib/libmd"
|
|
||||||
"sys/crypto/sha2"
|
|
||||||
"sys/crypto/skein"
|
|
||||||
|
|
||||||
# libgcc and friends
|
|
||||||
"lib/libgcc_eh"
|
|
||||||
"lib/libgcc_s"
|
|
||||||
"lib/libcompiler_rt"
|
|
||||||
"contrib/llvm-project/libunwind"
|
|
||||||
"contrib/llvm-project/compiler-rt"
|
|
||||||
#"contrib/llvm-project/libcxx"
|
|
||||||
|
|
||||||
# terminfo
|
|
||||||
"lib/ncurses"
|
|
||||||
"contrib/ncurses"
|
|
||||||
"lib/Makefile.inc"
|
|
||||||
]
|
|
||||||
++ lib.optionals (stdenv.hostPlatform.isx86_32) [ "lib/libssp_nonshared" ]
|
|
||||||
++ [
|
|
||||||
"lib/libexecinfo"
|
|
||||||
"contrib/libexecinfo"
|
|
||||||
|
|
||||||
"lib/libkvm"
|
|
||||||
"sys" # ummmmmmmmmm libkvm wants arch-specific headers from the kernel tree
|
|
||||||
|
|
||||||
"lib/libmemstat"
|
|
||||||
|
|
||||||
"lib/libprocstat"
|
|
||||||
"sys/contrib/openzfs"
|
|
||||||
"sys/contrib/pcg-c"
|
|
||||||
"sys/opencrypto"
|
|
||||||
"sys/contrib/ck"
|
|
||||||
"sys/crypto"
|
|
||||||
|
|
||||||
"lib/libdevstat"
|
|
||||||
|
|
||||||
"lib/libelf"
|
|
||||||
"contrib/elftoolchain"
|
|
||||||
|
|
||||||
"lib/libiconv_modules"
|
|
||||||
"share/i18n"
|
|
||||||
"include/paths.h"
|
|
||||||
|
|
||||||
"lib/libdl"
|
|
||||||
|
|
||||||
# Used for aarch64-freebsd
|
|
||||||
"contrib/arm-optimized-routines"
|
|
||||||
];
|
|
||||||
|
|
||||||
postPatch = ''
|
|
||||||
substituteInPlace $COMPONENT_PATH/Makefile --replace '.include <src.opts.mk>' ""
|
|
||||||
|
|
||||||
substituteInPlace $BSDSRCDIR/include/paths.h \
|
|
||||||
--replace '/usr/lib/i18n' '${builtins.placeholder "out"}/lib/i18n' \
|
|
||||||
--replace '/usr/share/i18n' '${builtins.placeholder "out"}/share/i18n'
|
|
||||||
'';
|
|
||||||
|
|
||||||
# NIX_CFLAGS_LINK is empty at this point except when building static,
|
|
||||||
# in which case the stdenv adapter adds the `-static` flag.
|
|
||||||
# Building with `-static` set causes linker errors.
|
|
||||||
postConfigure = ''
|
|
||||||
export NIX_CFLAGS_LINK=
|
|
||||||
'';
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
bsdSetupHook
|
|
||||||
freebsdSetupHook
|
|
||||||
makeMinimal
|
|
||||||
install
|
|
||||||
|
|
||||||
flex
|
|
||||||
byacc
|
|
||||||
gencat
|
|
||||||
rpcgen
|
|
||||||
mkcsmapper
|
|
||||||
mkesdb
|
|
||||||
];
|
|
||||||
buildInputs = [
|
|
||||||
include
|
include
|
||||||
csu
|
csu
|
||||||
];
|
libcMinimal
|
||||||
env.NIX_CFLAGS_COMPILE = toString [
|
libssp_nonshared
|
||||||
"-B${csu}/lib"
|
libgcc
|
||||||
# These are supposed to have _RTLD_COMPAT_LIB_SUFFIX so we can get things like "lib32"
|
libmd
|
||||||
# but that's unnecessary
|
libthr
|
||||||
"-DSTANDARD_LIBRARY_PATH=\"${builtins.placeholder "out"}/lib\""
|
msun
|
||||||
"-D_PATH_RTLD=\"${builtins.placeholder "out"}/libexec/ld-elf.so.1\""
|
librpcsvc
|
||||||
];
|
libutil
|
||||||
|
librt
|
||||||
|
libcrypt
|
||||||
|
libelf
|
||||||
|
libexecinfo
|
||||||
|
libkvm
|
||||||
|
libmemstat
|
||||||
|
libprocstat
|
||||||
|
libdevstat
|
||||||
|
libiconvModules
|
||||||
|
libdl
|
||||||
|
i18n
|
||||||
|
rtld-elf
|
||||||
|
],
|
||||||
|
extraModules ? [ ],
|
||||||
|
}:
|
||||||
|
|
||||||
makeFlags = [
|
symlinkJoin {
|
||||||
"STRIP=-s" # flag to install, not command
|
pname = "libc";
|
||||||
# lib/libc/gen/getgrent.c has sketchy cast from `void *` to enum
|
inherit (libcMinimal) version;
|
||||||
"MK_WERROR=no"
|
paths = baseModules ++ extraModules;
|
||||||
];
|
|
||||||
|
|
||||||
MK_SYMVER = "yes";
|
|
||||||
MK_SSP = "yes";
|
|
||||||
MK_NLS = "yes";
|
|
||||||
MK_ICONV = "yes";
|
|
||||||
MK_NS_CACHING = "yes";
|
|
||||||
MK_INET6_SUPPORT = "yes";
|
|
||||||
MK_HESIOD = "yes";
|
|
||||||
MK_NIS = "yes";
|
|
||||||
MK_HYPERV = "yes";
|
|
||||||
MK_FP_LIBC = "yes";
|
|
||||||
|
|
||||||
MK_TCSH = "no";
|
|
||||||
MK_MALLOC_PRODUCTION = "yes";
|
|
||||||
|
|
||||||
MK_TESTS = "no";
|
|
||||||
MACHINE_ABI = "";
|
|
||||||
MK_DETECT_TZ_CHANGES = "no";
|
|
||||||
MK_MACHDEP_OPTIMIZATIONS = "yes";
|
|
||||||
MK_ASAN = "no";
|
|
||||||
MK_UBSAN = "no";
|
|
||||||
|
|
||||||
NO_FSCHG = "yes";
|
|
||||||
|
|
||||||
preBuild = lib.optionalString (stdenv.hostPlatform.isx86_32) ''
|
|
||||||
make -C $BSDSRCDIR/lib/libssp_nonshared $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libssp_nonshared $makeFlags install
|
|
||||||
'';
|
|
||||||
|
|
||||||
postInstall =
|
|
||||||
''
|
|
||||||
pushd ${include}
|
|
||||||
find . -type d -exec mkdir -p $out/\{} \;
|
|
||||||
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
|
|
||||||
popd
|
|
||||||
|
|
||||||
pushd ${csu}
|
|
||||||
find . -type d -exec mkdir -p $out/\{} \;
|
|
||||||
find . \( -type f -o -type l \) -exec cp -pr \{} $out/\{} \;
|
|
||||||
popd
|
|
||||||
|
|
||||||
mkdir $BSDSRCDIR/lib/libcompiler_rt/i386 $BSDSRCDIR/lib/libcompiler_rt/cpu_model
|
|
||||||
make -C $BSDSRCDIR/lib/libcompiler_rt $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libcompiler_rt $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libgcc_eh $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libgcc_eh $makeFlags install
|
|
||||||
|
|
||||||
ln -s $BSDSRCDIR/lib/libc/libc.so.7 $BSDSRCDIR/lib/libc/libc.so # otherwise these dynamic libraries try to link with libc.a
|
|
||||||
mkdir $BSDSRCDIR/lib/libgcc_s/i386 $BSDSRCDIR/lib/libgcc_s/cpu_model
|
|
||||||
make -C $BSDSRCDIR/lib/libgcc_s $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libgcc_s $makeFlags install
|
|
||||||
|
|
||||||
NIX_CFLAGS_COMPILE+=" -B$out/lib"
|
|
||||||
NIX_CFLAGS_COMPILE+=" -I$out/include"
|
|
||||||
NIX_LDFLAGS+=" -L$out/lib"
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libc_nonshared $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libc_nonshared $makeFlags install
|
|
||||||
|
|
||||||
mkdir $BSDSRCDIR/lib/libmd/sys
|
|
||||||
make -C $BSDSRCDIR/lib/libmd $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libmd $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libthr $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libthr $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/msun $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/msun $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/librpcsvc $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libutil $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libutil $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/librt $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/librt $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libcrypt $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libcrypt $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libelf $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libelf $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libexecinfo $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libexecinfo $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libkvm $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libkvm $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libmemstat $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libmemstat $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libprocstat $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libprocstat $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libdevstat $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libdevstat $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libiconv_modules $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libiconv_modules $makeFlags SHLIBDIR=${builtins.placeholder "out"}/lib/i18n install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/lib/libdl $makeFlags
|
|
||||||
make -C $BSDSRCDIR/lib/libdl $makeFlags install
|
|
||||||
|
|
||||||
make -C $BSDSRCDIR/share/i18n $makeFlags
|
|
||||||
make -C $BSDSRCDIR/share/i18n $makeFlags ESDBDIR=${builtins.placeholder "out"}/share/i18n/esdb CSMAPPERDIR=${builtins.placeholder "out"}/share/i18n/csmapper install
|
|
||||||
|
|
||||||
''
|
|
||||||
+ lib.optionalString stdenv.hostPlatform.isx86_32 ''
|
|
||||||
$CC -c $BSDSRCDIR/contrib/llvm-project/compiler-rt/lib/builtins/udivdi3.c -o $BSDSRCDIR/contrib/llvm-project/compiler-rt/lib/builtins/udivdi3.o
|
|
||||||
ORIG_NIX_LDFLAGS="$NIX_LDFLAGS"
|
|
||||||
NIX_LDFLAGS+=" $BSDSRCDIR/contrib/llvm-project/compiler-rt/lib/builtins/udivdi3.o"
|
|
||||||
''
|
|
||||||
+ ''
|
|
||||||
make -C $BSDSRCDIR/libexec/rtld-elf $makeFlags
|
|
||||||
make -C $BSDSRCDIR/libexec/rtld-elf $makeFlags install
|
|
||||||
rm -f $out/libexec/ld-elf.so.1
|
|
||||||
mv $out/bin/ld-elf.so.1 $out/libexec
|
|
||||||
''
|
|
||||||
+ lib.optionalString (!stdenv.hostPlatform.isStatic) ''
|
|
||||||
mkdir $out/lib/keep_static
|
|
||||||
mv $out/lib/*_nonshared.a $out/lib/libgcc*.a $out/lib/libcompiler_rt.a $out/lib/keep_static
|
|
||||||
rm $out/lib/*.a
|
|
||||||
mv $out/lib/keep_static/* $out/lib
|
|
||||||
rmdir $out/lib/keep_static
|
|
||||||
'';
|
|
||||||
|
|
||||||
# libc should not be allowed to refer to anything other than itself
|
|
||||||
postFixup = ''
|
|
||||||
find $out -type f | xargs -n1 ${buildPackages.patchelf}/bin/patchelf --shrink-rpath --allowed-rpath-prefixes $out || true
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta.platforms = lib.platforms.freebsd;
|
|
||||||
|
|
||||||
# definitely a bad idea to enable stack protection on the stack protection initializers
|
|
||||||
hardeningDisable = [ "stackprotector" ];
|
|
||||||
|
|
||||||
outputs = [
|
|
||||||
"out"
|
|
||||||
"man"
|
|
||||||
"debug"
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
92
pkgs/os-specific/bsd/freebsd/pkgs/libcMinimal.nix
Normal file
92
pkgs/os-specific/bsd/freebsd/pkgs/libcMinimal.nix
Normal file
|
@ -0,0 +1,92 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
rpcgen,
|
||||||
|
flex,
|
||||||
|
byacc,
|
||||||
|
gencat,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
pname = "libcMinimal";
|
||||||
|
path = "lib/libc";
|
||||||
|
extraPaths = [
|
||||||
|
"lib/libc_nonshared"
|
||||||
|
"lib/msun"
|
||||||
|
"lib/libmd"
|
||||||
|
"lib/libutil"
|
||||||
|
"libexec/rtld-elf"
|
||||||
|
"include/rpcsvc"
|
||||||
|
"contrib/libc-pwcache"
|
||||||
|
"contrib/libc-vis"
|
||||||
|
"contrib/tzcode"
|
||||||
|
"contrib/gdtoa"
|
||||||
|
"contrib/jemalloc"
|
||||||
|
"sys/sys"
|
||||||
|
"sys/kern"
|
||||||
|
"sys/libkern"
|
||||||
|
"sys/crypto"
|
||||||
|
"sys/opencrypto"
|
||||||
|
"etc/group"
|
||||||
|
"etc/master.passwd"
|
||||||
|
"etc/shells"
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
];
|
||||||
|
|
||||||
|
extraNativeBuildInputs = [
|
||||||
|
rpcgen
|
||||||
|
flex
|
||||||
|
byacc
|
||||||
|
gencat
|
||||||
|
];
|
||||||
|
|
||||||
|
# this target is only used in the rtld-elf derivation. build it there instead.
|
||||||
|
postPatch = ''
|
||||||
|
sed -E -i -e '/BUILD_NOSSP_PIC_ARCHIVE=/d' $BSDSRCDIR/lib/libc/Makefile
|
||||||
|
'';
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
make -C $BSDSRCDIR/lib/libc_nonshared $makeFlags
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
make -C $BSDSRCDIR/lib/libc_nonshared $makeFlags install
|
||||||
|
'';
|
||||||
|
|
||||||
|
alwaysKeepStatic = true;
|
||||||
|
|
||||||
|
env = {
|
||||||
|
MK_TESTS = "no";
|
||||||
|
MK_SYMVER = "yes";
|
||||||
|
MK_SSP = "yes";
|
||||||
|
MK_NLS = "yes";
|
||||||
|
MK_ICONV = "yes";
|
||||||
|
MK_NS_CACHING = "yes";
|
||||||
|
MK_INET6_SUPPORT = "yes";
|
||||||
|
MK_HESIOD = "yes";
|
||||||
|
MK_NIS = "yes";
|
||||||
|
MK_HYPERV = "yes";
|
||||||
|
MK_FP_LIBC = "yes";
|
||||||
|
MK_MALLOC_PRODUCTION = "yes";
|
||||||
|
MK_MACHDEP_OPTIMIZATIONS = "yes";
|
||||||
|
};
|
||||||
|
|
||||||
|
# definitely a bad idea to enable stack protection on the stack protection initializers
|
||||||
|
hardeningDisable = [ "stackprotector" ];
|
||||||
|
}
|
37
pkgs/os-specific/bsd/freebsd/pkgs/libcrypt.nix
Normal file
37
pkgs/os-specific/bsd/freebsd/pkgs/libcrypt.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libcMinimal,
|
||||||
|
libgcc,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/libcrypt";
|
||||||
|
extraPaths = [
|
||||||
|
"sys/kern"
|
||||||
|
"sys/crypto"
|
||||||
|
"lib/libmd"
|
||||||
|
"secure/lib/libcrypt"
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libcMinimal
|
||||||
|
libgcc
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
|
||||||
|
env.MK_TESTS = "no";
|
||||||
|
}
|
|
@ -12,14 +12,16 @@ mkDerivation {
|
||||||
pname = "libcxxrt";
|
pname = "libcxxrt";
|
||||||
path = "lib/libcxxrt";
|
path = "lib/libcxxrt";
|
||||||
extraPaths = [ "contrib/libcxxrt" ];
|
extraPaths = [ "contrib/libcxxrt" ];
|
||||||
outputs =
|
outputs = [
|
||||||
[
|
|
||||||
"out"
|
"out"
|
||||||
"dev"
|
"dev"
|
||||||
]
|
|
||||||
++ lib.optionals (!stdenv.hostPlatform.isStatic) [
|
|
||||||
"debug"
|
"debug"
|
||||||
];
|
];
|
||||||
noLibcxx = true;
|
noLibcxx = true;
|
||||||
libName = "cxxrt";
|
libName = "cxxrt";
|
||||||
|
|
||||||
|
# they already fixed the undefined symbols in the version map upstream. it'll be released probably in 15.0
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_LDFLAGS="$NIX_LDFLAGS --undefined-version"
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
44
pkgs/os-specific/bsd/freebsd/pkgs/libdevstat.nix
Normal file
44
pkgs/os-specific/bsd/freebsd/pkgs/libdevstat.nix
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libcMinimal,
|
||||||
|
libgcc,
|
||||||
|
libkvm,
|
||||||
|
libprocstat,
|
||||||
|
libutil,
|
||||||
|
libelf,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/libdevstat";
|
||||||
|
extraPaths = [
|
||||||
|
"lib/libc/Versions.def"
|
||||||
|
"sys/contrib/openzfs"
|
||||||
|
"sys/contrib/pcg-c"
|
||||||
|
"sys/opencrypto"
|
||||||
|
"sys/crypto"
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libcMinimal
|
||||||
|
libgcc
|
||||||
|
libkvm
|
||||||
|
libprocstat
|
||||||
|
libutil
|
||||||
|
libelf
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
}
|
|
@ -1,9 +1,34 @@
|
||||||
{ mkDerivation, ... }:
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libcMinimal,
|
||||||
|
libgcc,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
path = "lib/libdl";
|
path = "lib/libdl";
|
||||||
extraPaths = [
|
extraPaths = [
|
||||||
"lib/libc"
|
|
||||||
"libexec/rtld-elf"
|
"libexec/rtld-elf"
|
||||||
|
"lib/libc/gen"
|
||||||
|
"lib/libc/include"
|
||||||
|
"lib/libc/Versions.def"
|
||||||
];
|
];
|
||||||
buildInputs = [ ];
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libcMinimal
|
||||||
|
libgcc
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,26 +1,44 @@
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
mkDerivation,
|
mkDerivation,
|
||||||
bsdSetupHook,
|
|
||||||
freebsdSetupHook,
|
|
||||||
makeMinimal,
|
|
||||||
install,
|
|
||||||
m4,
|
m4,
|
||||||
|
include,
|
||||||
|
libcMinimal,
|
||||||
|
libgcc,
|
||||||
|
compatIfNeeded,
|
||||||
|
csu,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
path = "lib/libelf";
|
path = "lib/libelf";
|
||||||
extraPaths = [
|
extraPaths = [
|
||||||
"lib/libc"
|
"lib/libc"
|
||||||
"contrib/elftoolchain"
|
"contrib/elftoolchain"
|
||||||
"sys/sys/elf32.h"
|
"sys/sys"
|
||||||
"sys/sys/elf64.h"
|
|
||||||
"sys/sys/elf_common.h"
|
|
||||||
];
|
];
|
||||||
nativeBuildInputs = [
|
|
||||||
bsdSetupHook
|
outputs = [
|
||||||
freebsdSetupHook
|
"out"
|
||||||
makeMinimal
|
"man"
|
||||||
install
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = stdenv.hostPlatform.isFreeBSD;
|
||||||
|
|
||||||
|
buildInputs =
|
||||||
|
lib.optionals stdenv.hostPlatform.isFreeBSD [
|
||||||
|
include
|
||||||
|
libcMinimal
|
||||||
|
libgcc
|
||||||
|
]
|
||||||
|
++ compatIfNeeded;
|
||||||
|
|
||||||
|
extraNativeBuildInputs = [
|
||||||
m4
|
m4
|
||||||
];
|
];
|
||||||
|
|
||||||
|
preBuild = lib.optionalString stdenv.hostPlatform.isFreeBSD ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
}
|
}
|
||||||
|
|
36
pkgs/os-specific/bsd/freebsd/pkgs/libexecinfo.nix
Normal file
36
pkgs/os-specific/bsd/freebsd/pkgs/libexecinfo.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libelf,
|
||||||
|
libcMinimal,
|
||||||
|
libgcc,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/libexecinfo";
|
||||||
|
extraPaths = [
|
||||||
|
"contrib/libexecinfo"
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libelf
|
||||||
|
libcMinimal
|
||||||
|
libgcc
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
|
||||||
|
env.MK_TESTS = "no";
|
||||||
|
}
|
49
pkgs/os-specific/bsd/freebsd/pkgs/libgcc.nix
Normal file
49
pkgs/os-specific/bsd/freebsd/pkgs/libgcc.nix
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libcMinimal,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/libgcc_eh";
|
||||||
|
extraPaths = [
|
||||||
|
"lib/libgcc_s"
|
||||||
|
"lib/libcompiler_rt"
|
||||||
|
"lib/msun"
|
||||||
|
"lib/libc" # needs arch-specific fpmath files
|
||||||
|
"contrib/llvm-project/compiler-rt"
|
||||||
|
"contrib/llvm-project/libunwind"
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libcMinimal
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
|
||||||
|
postBuild = ''
|
||||||
|
mkdir $BSDSRCDIR/lib/libgcc_s/i386 $BSDSRCDIR/lib/libgcc_s/cpu_model
|
||||||
|
make -C $BSDSRCDIR/lib/libgcc_s $makeFlags
|
||||||
|
|
||||||
|
mkdir $BSDSRCDIR/lib/libcompiler_rt/i386 $BSDSRCDIR/lib/libcompiler_rt/cpu_model
|
||||||
|
make -C $BSDSRCDIR/lib/libcompiler_rt $makeFlags
|
||||||
|
'';
|
||||||
|
|
||||||
|
postInstall = ''
|
||||||
|
make -C $BSDSRCDIR/lib/libgcc_s $makeFlags install
|
||||||
|
make -C $BSDSRCDIR/lib/libcompiler_rt $makeFlags install
|
||||||
|
'';
|
||||||
|
|
||||||
|
alwaysKeepStatic = true;
|
||||||
|
}
|
32
pkgs/os-specific/bsd/freebsd/pkgs/libiconvModules.nix
Normal file
32
pkgs/os-specific/bsd/freebsd/pkgs/libiconvModules.nix
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libcMinimal,
|
||||||
|
libgcc,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/libiconv_modules";
|
||||||
|
extraPaths = [
|
||||||
|
"lib/libc/iconv"
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libcMinimal
|
||||||
|
libgcc
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
export makeFlags="$makeFlags SHLIBDIR=$out/lib/i18n"
|
||||||
|
'';
|
||||||
|
}
|
36
pkgs/os-specific/bsd/freebsd/pkgs/libkvm.nix
Normal file
36
pkgs/os-specific/bsd/freebsd/pkgs/libkvm.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libcMinimal,
|
||||||
|
libgcc,
|
||||||
|
libelf,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/libkvm";
|
||||||
|
extraPaths = [
|
||||||
|
"sys" # wants sys/${arch}
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libcMinimal
|
||||||
|
libgcc
|
||||||
|
libelf
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
|
||||||
|
env.MK_TESTS = "no";
|
||||||
|
}
|
|
@ -2,33 +2,56 @@
|
||||||
lib,
|
lib,
|
||||||
stdenv,
|
stdenv,
|
||||||
mkDerivation,
|
mkDerivation,
|
||||||
freebsdSetupHook,
|
libcMinimal,
|
||||||
bsdSetupHook,
|
include,
|
||||||
|
libgcc,
|
||||||
makeMinimal,
|
makeMinimal,
|
||||||
|
bsdSetupHook,
|
||||||
|
freebsdSetupHook,
|
||||||
|
compatIfNeeded,
|
||||||
|
csu,
|
||||||
|
# this is set to true when used as the dependency of install
|
||||||
|
# this is set to false when used as the dependency of libc
|
||||||
|
bootstrapInstallation ? false,
|
||||||
}:
|
}:
|
||||||
mkDerivation {
|
|
||||||
|
mkDerivation (
|
||||||
|
{
|
||||||
path = "lib/libmd";
|
path = "lib/libmd";
|
||||||
extraPaths = [
|
extraPaths = [
|
||||||
"sys/sys/md5.h"
|
"sys/crypto"
|
||||||
"sys/crypto/sha2"
|
"sys/sys"
|
||||||
"sys/crypto/skein"
|
|
||||||
];
|
|
||||||
nativeBuildInputs = [
|
|
||||||
makeMinimal
|
|
||||||
bsdSetupHook
|
|
||||||
freebsdSetupHook
|
|
||||||
];
|
];
|
||||||
|
|
||||||
makeFlags = [
|
outputs = [
|
||||||
"STRIP=-s" # flag to install, not command
|
"out"
|
||||||
"RELDIR=."
|
"man"
|
||||||
] ++ lib.optional (!stdenv.hostPlatform.isFreeBSD) "MK_WERROR=no";
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
preBuild = ''
|
noLibc = !bootstrapInstallation;
|
||||||
mkdir sys
|
|
||||||
|
buildInputs =
|
||||||
|
lib.optionals (!bootstrapInstallation) [
|
||||||
|
libcMinimal
|
||||||
|
include
|
||||||
|
libgcc
|
||||||
|
]
|
||||||
|
++ compatIfNeeded;
|
||||||
|
|
||||||
|
preBuild =
|
||||||
|
''
|
||||||
|
mkdir $BSDSRCDIR/lib/libmd/sys
|
||||||
|
''
|
||||||
|
+ lib.optionalString stdenv.hostPlatform.isFreeBSD ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase =
|
||||||
|
if (!bootstrapInstallation) then
|
||||||
|
null
|
||||||
|
else
|
||||||
|
''
|
||||||
# libmd is used by install. do it yourself!
|
# libmd is used by install. do it yourself!
|
||||||
mkdir -p $out/include $out/lib $man/share/man
|
mkdir -p $out/include $out/lib $man/share/man
|
||||||
cp libmd.a $out/lib/libmd.a
|
cp libmd.a $out/lib/libmd.a
|
||||||
|
@ -41,9 +64,12 @@ mkDerivation {
|
||||||
cp "$f" "$man/share/man/$f"
|
cp "$f" "$man/share/man/$f"
|
||||||
done
|
done
|
||||||
'';
|
'';
|
||||||
|
}
|
||||||
outputs = [
|
// lib.optionalAttrs bootstrapInstallation {
|
||||||
"out"
|
nativeBuildInputs = [
|
||||||
"man"
|
makeMinimal
|
||||||
|
bsdSetupHook
|
||||||
|
freebsdSetupHook
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
)
|
||||||
|
|
31
pkgs/os-specific/bsd/freebsd/pkgs/libmemstat.nix
Normal file
31
pkgs/os-specific/bsd/freebsd/pkgs/libmemstat.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libcMinimal,
|
||||||
|
libgcc,
|
||||||
|
libkvm,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/libmemstat";
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libcMinimal
|
||||||
|
libgcc
|
||||||
|
libkvm
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
}
|
|
@ -25,4 +25,6 @@ mkDerivation {
|
||||||
"STRIP=-s" # flag to install, not command
|
"STRIP=-s" # flag to install, not command
|
||||||
"MK_WERROR=no"
|
"MK_WERROR=no"
|
||||||
] ++ lib.optional (stdenv.hostPlatform == stdenv.buildPlatform) "INSTALL=boot-install";
|
] ++ lib.optional (stdenv.hostPlatform == stdenv.buildPlatform) "INSTALL=boot-install";
|
||||||
|
|
||||||
|
alwaysKeepStatic = true;
|
||||||
}
|
}
|
||||||
|
|
42
pkgs/os-specific/bsd/freebsd/pkgs/libprocstat.nix
Normal file
42
pkgs/os-specific/bsd/freebsd/pkgs/libprocstat.nix
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libcMinimal,
|
||||||
|
libgcc,
|
||||||
|
libkvm,
|
||||||
|
libutil,
|
||||||
|
libelf,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/libprocstat";
|
||||||
|
extraPaths = [
|
||||||
|
"lib/libc/Versions.def"
|
||||||
|
"sys/contrib/openzfs"
|
||||||
|
"sys/contrib/pcg-c"
|
||||||
|
"sys/opencrypto"
|
||||||
|
"sys/crypto"
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libcMinimal
|
||||||
|
libgcc
|
||||||
|
libkvm
|
||||||
|
libutil
|
||||||
|
libelf
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
}
|
|
@ -1,12 +1,10 @@
|
||||||
{
|
{
|
||||||
mkDerivation,
|
mkDerivation,
|
||||||
openssl,
|
openssl,
|
||||||
libmd,
|
|
||||||
}:
|
}:
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
path = "lib/libradius";
|
path = "lib/libradius";
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
libmd
|
|
||||||
openssl
|
openssl
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
30
pkgs/os-specific/bsd/freebsd/pkgs/librpcsvc.nix
Normal file
30
pkgs/os-specific/bsd/freebsd/pkgs/librpcsvc.nix
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
rpcgen,
|
||||||
|
include,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/librpcsvc";
|
||||||
|
extraPaths = [
|
||||||
|
"sys/nlm"
|
||||||
|
"include/rpcsvc"
|
||||||
|
];
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
extraNativeBuildInputs = [
|
||||||
|
rpcgen
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${include}/include/rpcsvc"
|
||||||
|
'';
|
||||||
|
|
||||||
|
alwaysKeepStatic = true;
|
||||||
|
}
|
36
pkgs/os-specific/bsd/freebsd/pkgs/librt.nix
Normal file
36
pkgs/os-specific/bsd/freebsd/pkgs/librt.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libcMinimal,
|
||||||
|
libgcc,
|
||||||
|
libthr,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/librt";
|
||||||
|
extraPaths = [
|
||||||
|
"lib/libc/include" # private headers
|
||||||
|
"lib/libc/Versions.def"
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libcMinimal
|
||||||
|
libgcc
|
||||||
|
libthr
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
|
||||||
|
env.MK_TESTS = "no";
|
||||||
|
}
|
|
@ -3,5 +3,5 @@
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
path = "lib/libsbuf";
|
path = "lib/libsbuf";
|
||||||
extraPaths = [ "sys/kern" ];
|
extraPaths = [ "sys/kern" ];
|
||||||
MK_TESTS = "no";
|
env.MK_TESTS = "no";
|
||||||
}
|
}
|
||||||
|
|
15
pkgs/os-specific/bsd/freebsd/pkgs/libssp_nonshared.nix
Normal file
15
pkgs/os-specific/bsd/freebsd/pkgs/libssp_nonshared.nix
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/libssp_nonshared";
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
];
|
||||||
|
|
||||||
|
alwaysKeepStatic = true;
|
||||||
|
}
|
36
pkgs/os-specific/bsd/freebsd/pkgs/libthr.nix
Normal file
36
pkgs/os-specific/bsd/freebsd/pkgs/libthr.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
libcMinimal,
|
||||||
|
include,
|
||||||
|
libgcc,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/libthr";
|
||||||
|
extraPaths = [
|
||||||
|
"lib/libthread_db"
|
||||||
|
"lib/libc" # needs /include + arch-specific files
|
||||||
|
"libexec/rtld-elf"
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
libcMinimal
|
||||||
|
include
|
||||||
|
libgcc
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
|
||||||
|
env.MK_TESTS = "no";
|
||||||
|
}
|
|
@ -1,6 +1,31 @@
|
||||||
{ mkDerivation }:
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libgcc,
|
||||||
|
libcMinimal,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
path = "lib/libutil";
|
path = "lib/libutil";
|
||||||
extraPaths = [ "lib/libc/gen" ];
|
extraPaths = [ "lib/libc/gen" ];
|
||||||
MK_TESTS = "no";
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libgcc
|
||||||
|
libcMinimal
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
|
||||||
|
env.MK_TESTS = "no";
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,6 +75,9 @@ lib.makeOverridable (
|
||||||
MACHINE_CPUARCH = freebsd-lib.mkBsdCpuArch stdenv';
|
MACHINE_CPUARCH = freebsd-lib.mkBsdCpuArch stdenv';
|
||||||
|
|
||||||
COMPONENT_PATH = attrs.path or null;
|
COMPONENT_PATH = attrs.path or null;
|
||||||
|
|
||||||
|
# don't set filesystem flags that require root
|
||||||
|
NO_FSCHG = "yes";
|
||||||
}
|
}
|
||||||
// lib.optionalAttrs stdenv'.hasCC {
|
// lib.optionalAttrs stdenv'.hasCC {
|
||||||
# TODO should CC wrapper set this?
|
# TODO should CC wrapper set this?
|
||||||
|
@ -129,5 +132,21 @@ lib.makeOverridable (
|
||||||
))
|
))
|
||||||
++ attrs.patches or [ ];
|
++ attrs.patches or [ ];
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
lib.optionalAttrs
|
||||||
|
(!stdenv.hostPlatform.isStatic && !attrs.alwaysKeepStatic or false && stdenv.hostPlatform.isFreeBSD)
|
||||||
|
{
|
||||||
|
postInstall =
|
||||||
|
(attrs.postInstall or "")
|
||||||
|
+ ''
|
||||||
|
rm -f $out/lib/*.a
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
//
|
||||||
|
lib.optionalAttrs
|
||||||
|
((stdenv.hostPlatform.isStatic || !stdenv.hostPlatform.isFreeBSD) && attrs ? outputs)
|
||||||
|
{
|
||||||
|
outputs = lib.lists.remove "debug" attrs.outputs;
|
||||||
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
34
pkgs/os-specific/bsd/freebsd/pkgs/msun.nix
Normal file
34
pkgs/os-specific/bsd/freebsd/pkgs/msun.nix
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
libcMinimal,
|
||||||
|
libgcc,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "lib/msun";
|
||||||
|
extraPaths = [
|
||||||
|
"lib/libc" # wants arch headers
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
libcMinimal
|
||||||
|
libgcc
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
'';
|
||||||
|
|
||||||
|
env.MK_TESTS = "no";
|
||||||
|
}
|
|
@ -4,21 +4,27 @@
|
||||||
mkDerivation,
|
mkDerivation,
|
||||||
compatIfNeeded,
|
compatIfNeeded,
|
||||||
compatIsNeeded,
|
compatIsNeeded,
|
||||||
libmd,
|
|
||||||
libnetbsd,
|
libnetbsd,
|
||||||
libutil,
|
libmd,
|
||||||
}:
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
libmd' = libmd.override {
|
||||||
|
bootstrapInstallation = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
in
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
path = "contrib/mtree";
|
path = "contrib/mtree";
|
||||||
extraPaths = [ "contrib/mknod" ];
|
extraPaths = [ "contrib/mknod" ];
|
||||||
buildInputs =
|
buildInputs =
|
||||||
compatIfNeeded
|
compatIfNeeded
|
||||||
++ [
|
++ lib.optionals (!stdenv.hostPlatform.isFreeBSD) [
|
||||||
libmd
|
libmd'
|
||||||
libnetbsd
|
|
||||||
]
|
]
|
||||||
++ lib.optional (stdenv.hostPlatform.isFreeBSD) libutil;
|
++ [
|
||||||
|
libnetbsd
|
||||||
|
];
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
ln -s $BSDSRCDIR/contrib/mknod/*.c $BSDSRCDIR/contrib/mknod/*.h $BSDSRCDIR/contrib/mtree
|
ln -s $BSDSRCDIR/contrib/mknod/*.c $BSDSRCDIR/contrib/mknod/*.h $BSDSRCDIR/contrib/mtree
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
lib,
|
lib,
|
||||||
mkDerivation,
|
mkDerivation,
|
||||||
stdenv,
|
stdenv,
|
||||||
patchesRoot,
|
|
||||||
}:
|
}:
|
||||||
|
|
||||||
mkDerivation {
|
mkDerivation {
|
||||||
|
|
58
pkgs/os-specific/bsd/freebsd/pkgs/rtld-elf.nix
Normal file
58
pkgs/os-specific/bsd/freebsd/pkgs/rtld-elf.nix
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
{
|
||||||
|
mkDerivation,
|
||||||
|
include,
|
||||||
|
rpcgen,
|
||||||
|
flex,
|
||||||
|
byacc,
|
||||||
|
csu,
|
||||||
|
}:
|
||||||
|
|
||||||
|
mkDerivation {
|
||||||
|
path = "libexec/rtld-elf";
|
||||||
|
extraPaths = [
|
||||||
|
"lib/csu"
|
||||||
|
"lib/libc"
|
||||||
|
"lib/libmd"
|
||||||
|
"lib/msun"
|
||||||
|
"lib/libutil"
|
||||||
|
"lib/libc_nonshared"
|
||||||
|
"include/rpcsvc"
|
||||||
|
"contrib/libc-pwcache"
|
||||||
|
"contrib/libc-vis"
|
||||||
|
"contrib/tzcode"
|
||||||
|
"contrib/gdtoa"
|
||||||
|
"contrib/jemalloc"
|
||||||
|
"sys/sys"
|
||||||
|
"sys/kern"
|
||||||
|
"sys/libkern"
|
||||||
|
"sys/crypto"
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs = [
|
||||||
|
"out"
|
||||||
|
"man"
|
||||||
|
"debug"
|
||||||
|
];
|
||||||
|
|
||||||
|
noLibc = true;
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
include
|
||||||
|
];
|
||||||
|
|
||||||
|
extraNativeBuildInputs = [
|
||||||
|
rpcgen
|
||||||
|
flex
|
||||||
|
byacc
|
||||||
|
];
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -B${csu}/lib"
|
||||||
|
make -C $BSDSRCDIR/lib/libc $makeFlags libc_nossp_pic.a
|
||||||
|
'';
|
||||||
|
|
||||||
|
# definitely a bad idea to enable stack protection on the stack protection initializers
|
||||||
|
hardeningDisable = [ "stackprotector" ];
|
||||||
|
|
||||||
|
env.MK_TESTS = "no";
|
||||||
|
}
|
|
@ -17,20 +17,20 @@ let
|
||||||
in
|
in
|
||||||
python3.pkgs.buildPythonApplication rec {
|
python3.pkgs.buildPythonApplication rec {
|
||||||
pname = "matrix-synapse";
|
pname = "matrix-synapse";
|
||||||
version = "1.119.0";
|
version = "1.120.0";
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "element-hq";
|
owner = "element-hq";
|
||||||
repo = "synapse";
|
repo = "synapse";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
hash = "sha256-+3FrxSfQteIga5uiRNzAlV+xNESB9PUX/UkkL6UMETQ=";
|
hash = "sha256-3gPeit2r3q1WF72WUINS7gD8X9/DGQBmZYlUnaU7mvc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||||
inherit src;
|
inherit src;
|
||||||
name = "${pname}-${version}";
|
name = "${pname}-${version}";
|
||||||
hash = "sha256-c/19RaBmtfKkFFQyDBwH+yqHp4YNQSqCu23WYbpOc98=";
|
hash = "sha256-ceIRDYHKpkw/H+ts5dXb5s4Eb8btbt/yHqOYqepWG/s=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|
|
@ -42,11 +42,11 @@
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "percona-server";
|
pname = "percona-server";
|
||||||
version = "8.0.37-29";
|
version = "8.0.39-30";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://www.percona.com/downloads/Percona-Server-8.0/Percona-Server-${finalAttrs.version}/source/tarball/percona-server-${finalAttrs.version}.tar.gz";
|
url = "https://www.percona.com/downloads/Percona-Server-8.0/Percona-Server-${finalAttrs.version}/source/tarball/percona-server-${finalAttrs.version}.tar.gz";
|
||||||
hash = "sha256-zZgq3AxCRYdte3dTUJiuMvVGdl9U01s8jxcAqDxZiNM=";
|
hash = "sha256-Ag+9tzmWpdF5vxWOFUsn65oJXIkb0HmoMbif7HcSoP8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -50,11 +50,11 @@ assert !(withJemalloc && withTcmalloc);
|
||||||
|
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "percona-server";
|
pname = "percona-server";
|
||||||
version = "8.4.0-1";
|
version = "8.4.2-2";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://downloads.percona.com/downloads/Percona-Server-${lib.versions.majorMinor finalAttrs.version}/Percona-Server-${finalAttrs.version}/source/tarball/percona-server-${finalAttrs.version}.tar.gz";
|
url = "https://downloads.percona.com/downloads/Percona-Server-${lib.versions.majorMinor finalAttrs.version}/Percona-Server-${finalAttrs.version}/source/tarball/percona-server-${finalAttrs.version}.tar.gz";
|
||||||
hash = "sha256-76PXXqTNBVsD7RX2vhp7RyESiFpJL0h0zG9ucNfy3uQ=";
|
hash = "sha256-KdaF2+vZfWf6fW8HWi+c97SHW+WqmlcpdPzUUgX94EY=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -13368,8 +13368,6 @@ with pkgs;
|
||||||
gtk = gtk3;
|
gtk = gtk3;
|
||||||
};
|
};
|
||||||
|
|
||||||
bluejeans-gui = callPackage ../applications/networking/instant-messengers/bluejeans { };
|
|
||||||
|
|
||||||
breezy = with python3Packages; toPythonApplication breezy;
|
breezy = with python3Packages; toPythonApplication breezy;
|
||||||
|
|
||||||
cage = callPackage ../applications/window-managers/cage {
|
cage = callPackage ../applications/window-managers/cage {
|
||||||
|
|
|
@ -246,7 +246,7 @@ let
|
||||||
})] ++ overlays;
|
})] ++ overlays;
|
||||||
${if stdenv.hostPlatform == stdenv.buildPlatform
|
${if stdenv.hostPlatform == stdenv.buildPlatform
|
||||||
then "localSystem" else "crossSystem"} = {
|
then "localSystem" else "crossSystem"} = {
|
||||||
parsed = makeMuslParsedPlatform stdenv.hostPlatform.parsed;
|
config = lib.systems.parse.tripleFromSystem (makeMuslParsedPlatform stdenv.hostPlatform.parsed);
|
||||||
};
|
};
|
||||||
} else throw "Musl libc only supports 64-bit Linux systems.";
|
} else throw "Musl libc only supports 64-bit Linux systems.";
|
||||||
|
|
||||||
|
@ -258,9 +258,9 @@ let
|
||||||
})] ++ overlays;
|
})] ++ overlays;
|
||||||
${if stdenv.hostPlatform == stdenv.buildPlatform
|
${if stdenv.hostPlatform == stdenv.buildPlatform
|
||||||
then "localSystem" else "crossSystem"} = {
|
then "localSystem" else "crossSystem"} = {
|
||||||
parsed = stdenv.hostPlatform.parsed // {
|
config = lib.systems.parse.tripleFromSystem (stdenv.hostPlatform.parsed // {
|
||||||
cpu = lib.systems.parse.cpuTypes.i686;
|
cpu = lib.systems.parse.cpuTypes.i686;
|
||||||
};
|
});
|
||||||
};
|
};
|
||||||
} else throw "i686 Linux package set can only be used with the x86 family.";
|
} else throw "i686 Linux package set can only be used with the x86 family.";
|
||||||
|
|
||||||
|
@ -270,9 +270,9 @@ let
|
||||||
pkgsx86_64Darwin = super';
|
pkgsx86_64Darwin = super';
|
||||||
})] ++ overlays;
|
})] ++ overlays;
|
||||||
localSystem = {
|
localSystem = {
|
||||||
parsed = stdenv.hostPlatform.parsed // {
|
config = lib.systems.parse.tripleFromSystem (stdenv.hostPlatform.parsed // {
|
||||||
cpu = lib.systems.parse.cpuTypes.x86_64;
|
cpu = lib.systems.parse.cpuTypes.x86_64;
|
||||||
};
|
});
|
||||||
};
|
};
|
||||||
} else throw "x86_64 Darwin package set can only be used on Darwin systems.";
|
} else throw "x86_64 Darwin package set can only be used on Darwin systems.";
|
||||||
|
|
||||||
|
@ -311,10 +311,11 @@ let
|
||||||
})] ++ overlays;
|
})] ++ overlays;
|
||||||
crossSystem = {
|
crossSystem = {
|
||||||
isStatic = true;
|
isStatic = true;
|
||||||
parsed =
|
config = lib.systems.parse.tripleFromSystem (
|
||||||
if stdenv.hostPlatform.isLinux
|
if stdenv.hostPlatform.isLinux
|
||||||
then makeMuslParsedPlatform stdenv.hostPlatform.parsed
|
then makeMuslParsedPlatform stdenv.hostPlatform.parsed
|
||||||
else stdenv.hostPlatform.parsed;
|
else stdenv.hostPlatform.parsed
|
||||||
|
);
|
||||||
gcc = lib.optionalAttrs (stdenv.hostPlatform.system == "powerpc64-linux") { abi = "elfv2"; } //
|
gcc = lib.optionalAttrs (stdenv.hostPlatform.system == "powerpc64-linux") { abi = "elfv2"; } //
|
||||||
stdenv.hostPlatform.gcc or {};
|
stdenv.hostPlatform.gcc or {};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue