forked from mirrors/nixpkgs
Merge master into haskell-updates
This commit is contained in:
commit
85bd0922b4
.github
doc
lib
maintainers/scripts
nixos
doc/manual
lib
modules
tests
pkgs
applications
backup/timeshift
blockchains
btcpayserver
nbxplorer
zcash
display-managers/lightdm-slick-greeter
editors
graphics/hugin
misc
HentaiAtHome
ausweisapp2
obsidian
oxker
procmail
stylish
tut
waylock
networking
cluster
feedreaders/newsboat
instant-messengers
irc/weechat
pjsip
seaweedfs
office
science
biology/ants
logic
math
version-management/subgit
video
virtualization
build-support
data
fonts/dina
icons/colloid-icon-theme
misc
desktops/cinnamon
cinnamon-control-center
cinnamon-desktop
cinnamon-screensaver
cinnamon-settings-daemon
mint-cursor-themes
muffin
nemo
xviewer
development
|
@ -2,7 +2,7 @@
|
|||
name: Unreproducible package
|
||||
about: A package that does not produce a bit-by-bit reproducible result each time it is built
|
||||
title: ''
|
||||
labels: '0.kind: enhancement', '6.topic: reproducible builds'
|
||||
labels: [ '0.kind: enhancement', '6.topic: reproducible builds' ]
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
|
5
.github/labeler.yml
vendored
5
.github/labeler.yml
vendored
|
@ -65,6 +65,11 @@
|
|||
- pkgs/development/lua-modules/**/*
|
||||
- pkgs/top-level/lua-packages.nix
|
||||
|
||||
"6.topic: mate":
|
||||
- nixos/modules/services/x11/desktop-managers/mate.nix
|
||||
- nixos/tests/mate.nix
|
||||
- pkgs/desktops/mate/**/*
|
||||
|
||||
"6.topic: nixos":
|
||||
- nixos/**/*
|
||||
- pkgs/os-specific/linux/nixos-rebuild/**/*
|
||||
|
|
2
.github/workflows/backport.yml
vendored
2
.github/workflows/backport.yml
vendored
|
@ -24,7 +24,7 @@ jobs:
|
|||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
- name: Create backport PRs
|
||||
uses: korthout/backport-action@v1.0.0
|
||||
uses: korthout/backport-action@v1.0.1
|
||||
with:
|
||||
# Config README: https://github.com/korthout/backport-action#backport-action
|
||||
pull_description: |-
|
||||
|
|
|
@ -11,7 +11,7 @@ pandoc_commonmark_enabled_extensions = +attributes+fenced_divs+footnotes+bracket
|
|||
pandoc_flags = --extract-media=$(pandoc_media_dir) \
|
||||
--lua-filter=$(PANDOC_LUA_FILTERS_DIR)/diagram-generator.lua \
|
||||
--lua-filter=build-aux/pandoc-filters/myst-reader/roles.lua \
|
||||
--lua-filter=build-aux/pandoc-filters/link-unix-man-references.lua \
|
||||
--lua-filter=$(PANDOC_LINK_MANPAGES_FILTER) \
|
||||
--lua-filter=build-aux/pandoc-filters/docbook-writer/rst-roles.lua \
|
||||
--lua-filter=build-aux/pandoc-filters/docbook-writer/labelless-link-is-xref.lua \
|
||||
-f commonmark$(pandoc_commonmark_enabled_extensions)+smart
|
||||
|
|
28
doc/build-aux/pandoc-filters/link-manpages.nix
Normal file
28
doc/build-aux/pandoc-filters/link-manpages.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ pkgs ? import ../../.. {} }:
|
||||
let
|
||||
inherit (pkgs) lib;
|
||||
manpageURLs = builtins.fromJSON (builtins.readFile (pkgs.path + "/doc/manpage-urls.json"));
|
||||
in pkgs.writeText "link-manpages.lua" ''
|
||||
--[[
|
||||
Adds links to known man pages that aren't already in a link.
|
||||
]]
|
||||
|
||||
local manpage_urls = {
|
||||
${lib.concatStringsSep "\n" (lib.mapAttrsToList (man: url:
|
||||
" [${builtins.toJSON man}] = ${builtins.toJSON url},") manpageURLs)}
|
||||
}
|
||||
|
||||
traverse = 'topdown'
|
||||
|
||||
-- Returning false as the second value aborts processing of child elements.
|
||||
function Link(elem)
|
||||
return elem, false
|
||||
end
|
||||
|
||||
function Code(elem)
|
||||
local is_man_role = elem.classes:includes('interpreted-text') and elem.attributes['role'] == 'manpage'
|
||||
if is_man_role and manpage_urls[elem.text] ~= nil then
|
||||
return pandoc.Link(elem, manpage_urls[elem.text]), false
|
||||
end
|
||||
end
|
||||
''
|
|
@ -1,38 +0,0 @@
|
|||
--[[
|
||||
Turns a manpage reference into a link, when a mapping is defined below.
|
||||
]]
|
||||
|
||||
local man_urls = {
|
||||
["nix.conf(5)"] = "https://nixos.org/manual/nix/stable/#sec-conf-file",
|
||||
|
||||
["journald.conf(5)"] = "https://www.freedesktop.org/software/systemd/man/journald.conf.html",
|
||||
["logind.conf(5)"] = "https://www.freedesktop.org/software/systemd/man/logind.conf.html",
|
||||
["networkd.conf(5)"] = "https://www.freedesktop.org/software/systemd/man/networkd.conf.html",
|
||||
["systemd.automount(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.automount.html",
|
||||
["systemd.exec(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.exec.html",
|
||||
["systemd.link(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.link.html",
|
||||
["systemd.mount(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.mount.html",
|
||||
["systemd.netdev(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.netdev.html",
|
||||
["systemd.network(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.network.html",
|
||||
["systemd.nspawn(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.nspawn.html",
|
||||
["systemd.path(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.path.html",
|
||||
["systemd.resource-control(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html",
|
||||
["systemd.scope(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.scope.html",
|
||||
["systemd.service(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.service.html",
|
||||
["systemd.slice(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.slice.html",
|
||||
["systemd.socket(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.socket.html",
|
||||
["systemd.timer(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.timer.html",
|
||||
["systemd.unit(5)"] = "https://www.freedesktop.org/software/systemd/man/systemd.unit.html",
|
||||
["timesyncd.conf(5)"] = "https://www.freedesktop.org/software/systemd/man/timesyncd.conf.html",
|
||||
["tmpfiles.d(5)"] = "https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html",
|
||||
["systemd.time(7)"] = "https://www.freedesktop.org/software/systemd/man/systemd.time.html",
|
||||
["systemd-fstab-generator(8)"] = "https://www.freedesktop.org/software/systemd/man/systemd-fstab-generator.html",
|
||||
["systemd-networkd-wait-online.service(8)"] = "https://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online.service.html",
|
||||
}
|
||||
|
||||
function Code(elem)
|
||||
local is_man_role = elem.classes:includes('interpreted-text') and elem.attributes['role'] == 'manpage'
|
||||
if is_man_role and man_urls[elem.text] ~= nil then
|
||||
return pandoc.Link(elem, man_urls[elem.text])
|
||||
end
|
||||
end
|
|
@ -53,7 +53,7 @@ Additional syntax extensions are available, though not all extensions can be use
|
|||
This syntax is taken from [MyST](https://myst-parser.readthedocs.io/en/latest/using/syntax.html#targets-and-cross-referencing).
|
||||
|
||||
- []{#ssec-contributing-markup-inline-roles}
|
||||
If you want to link to a man page, you can use `` {manpage}`nix.conf(5)` ``, which will turn into {manpage}`nix.conf(5)`. The references will turn into links when a mapping exists in {file}`doc/build-aux/pandoc-filters/link-unix-man-references.lua`.
|
||||
If you want to link to a man page, you can use `` {manpage}`nix.conf(5)` ``, which will turn into {manpage}`nix.conf(5)`. The references will turn into links when a mapping exists in {file}`doc/manpage-urls.json`.
|
||||
|
||||
A few markups for other kinds of literals are also available:
|
||||
|
||||
|
|
|
@ -36,4 +36,5 @@ in pkgs.stdenv.mkDerivation {
|
|||
|
||||
# Environment variables
|
||||
PANDOC_LUA_FILTERS_DIR = "${pkgs.pandoc-lua-filters}/share/pandoc/filters";
|
||||
PANDOC_LINK_MANPAGES_FILTER = import build-aux/pandoc-filters/link-manpages.nix { inherit pkgs; };
|
||||
}
|
||||
|
|
29
doc/manpage-urls.json
Normal file
29
doc/manpage-urls.json
Normal file
|
@ -0,0 +1,29 @@
|
|||
{
|
||||
"nix.conf(5)": "https://nixos.org/manual/nix/stable/#sec-conf-file",
|
||||
|
||||
"journald.conf(5)": "https://www.freedesktop.org/software/systemd/man/journald.conf.html",
|
||||
"logind.conf(5)": "https://www.freedesktop.org/software/systemd/man/logind.conf.html",
|
||||
"networkd.conf(5)": "https://www.freedesktop.org/software/systemd/man/networkd.conf.html",
|
||||
"systemd.automount(5)": "https://www.freedesktop.org/software/systemd/man/systemd.automount.html",
|
||||
"systemd.exec(5)": "https://www.freedesktop.org/software/systemd/man/systemd.exec.html",
|
||||
"systemd.link(5)": "https://www.freedesktop.org/software/systemd/man/systemd.link.html",
|
||||
"systemd.mount(5)": "https://www.freedesktop.org/software/systemd/man/systemd.mount.html",
|
||||
"systemd.netdev(5)": "https://www.freedesktop.org/software/systemd/man/systemd.netdev.html",
|
||||
"systemd.network(5)": "https://www.freedesktop.org/software/systemd/man/systemd.network.html",
|
||||
"systemd.nspawn(5)": "https://www.freedesktop.org/software/systemd/man/systemd.nspawn.html",
|
||||
"systemd.path(5)": "https://www.freedesktop.org/software/systemd/man/systemd.path.html",
|
||||
"systemd.resource-control(5)": "https://www.freedesktop.org/software/systemd/man/systemd.resource-control.html",
|
||||
"systemd.scope(5)": "https://www.freedesktop.org/software/systemd/man/systemd.scope.html",
|
||||
"systemd.service(5)": "https://www.freedesktop.org/software/systemd/man/systemd.service.html",
|
||||
"systemd.slice(5)": "https://www.freedesktop.org/software/systemd/man/systemd.slice.html",
|
||||
"systemd.socket(5)": "https://www.freedesktop.org/software/systemd/man/systemd.socket.html",
|
||||
"systemd.timer(5)": "https://www.freedesktop.org/software/systemd/man/systemd.timer.html",
|
||||
"systemd.unit(5)": "https://www.freedesktop.org/software/systemd/man/systemd.unit.html",
|
||||
"systemd-system.conf(5)": "https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html",
|
||||
"systemd-user.conf(5)": "https://www.freedesktop.org/software/systemd/man/systemd-user.conf.html",
|
||||
"timesyncd.conf(5)": "https://www.freedesktop.org/software/systemd/man/timesyncd.conf.html",
|
||||
"tmpfiles.d(5)": "https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html",
|
||||
"systemd.time(7)": "https://www.freedesktop.org/software/systemd/man/systemd.time.html",
|
||||
"systemd-fstab-generator(8)": "https://www.freedesktop.org/software/systemd/man/systemd-fstab-generator.html",
|
||||
"systemd-networkd-wait-online.service(8)": "https://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online.service.html"
|
||||
}
|
|
@ -66,7 +66,7 @@ For details, see [Licenses](#sec-meta-license).
|
|||
|
||||
### `maintainers` {#var-meta-maintainers}
|
||||
|
||||
A list of the maintainers of this Nix expression. Maintainers are defined in [`nixpkgs/maintainers/maintainer-list.nix`](https://github.com/NixOS/nixpkgs/blob/master/maintainers/maintainer-list.nix). There is no restriction to becoming a maintainer, just add yourself to that list in a separate commit titled “maintainers: add alice”, and reference maintainers with `maintainers = with lib.maintainers; [ alice bob ]`.
|
||||
A list of the maintainers of this Nix expression. Maintainers are defined in [`nixpkgs/maintainers/maintainer-list.nix`](https://github.com/NixOS/nixpkgs/blob/master/maintainers/maintainer-list.nix). There is no restriction to becoming a maintainer, just add yourself to that list in a separate commit titled “maintainers: add alice” in the same pull request, and reference maintainers with `maintainers = with lib.maintainers; [ alice bob ]`.
|
||||
|
||||
### `mainProgram` {#var-meta-mainProgram}
|
||||
|
||||
|
|
|
@ -1113,7 +1113,6 @@ rec {
|
|||
visible = true;
|
||||
warn = false;
|
||||
use = id;
|
||||
wrapDescription = lib.id;
|
||||
};
|
||||
|
||||
/* Transitional version of mkAliasOptionModule that uses MD docs. */
|
||||
|
@ -1122,6 +1121,7 @@ rec {
|
|||
visible = true;
|
||||
warn = false;
|
||||
use = id;
|
||||
markdown = true;
|
||||
};
|
||||
|
||||
/* mkDerivedConfig : Option a -> (a -> Definition b) -> Definition b
|
||||
|
@ -1144,7 +1144,7 @@ rec {
|
|||
(opt.highestPrio or defaultOverridePriority)
|
||||
(f opt.value);
|
||||
|
||||
doRename = { from, to, visible, warn, use, withPriority ? true, wrapDescription ? lib.mdDoc }:
|
||||
doRename = { from, to, visible, warn, use, withPriority ? true, markdown ? false }:
|
||||
{ config, options, ... }:
|
||||
let
|
||||
fromOpt = getAttrFromPath from options;
|
||||
|
@ -1155,7 +1155,9 @@ rec {
|
|||
{
|
||||
options = setAttrByPath from (mkOption {
|
||||
inherit visible;
|
||||
description = wrapDescription "Alias of {option}`${showOption to}`.";
|
||||
description = if markdown
|
||||
then lib.mdDoc "Alias of {option}`${showOption to}`."
|
||||
else "Alias of <option>${showOption to}</option>.";
|
||||
apply = x: use (toOf config);
|
||||
} // optionalAttrs (toType != null) {
|
||||
type = toType;
|
||||
|
|
|
@ -41,7 +41,7 @@ pandoc_flags=(
|
|||
# - diagram-generator.lua (we do not support that in NixOS manual to limit dependencies)
|
||||
# - media extraction (was only required for diagram generator)
|
||||
# - myst-reader/roles.lua (only relevant for MyST → DocBook)
|
||||
# - link-unix-man-references.lua (links should only be added to display output)
|
||||
# - link-manpages.lua (links should only be added to display output)
|
||||
# - docbook-writer/rst-roles.lua (only relevant for → DocBook)
|
||||
# - docbook-writer/labelless-link-is-xref.lua (only relevant for → DocBook)
|
||||
"--lua-filter=$DIR/../../doc/build-aux/pandoc-filters/docbook-reader/citerefentry-to-rst-role.lua"
|
||||
|
|
|
@ -8,6 +8,8 @@
|
|||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
|
||||
pushd "$DIR"
|
||||
|
||||
link_manpages_filter=$(nix-build --no-out-link "$DIR/../../../doc/build-aux/pandoc-filters/link-manpages.nix")
|
||||
|
||||
# NOTE: Keep in sync with Nixpkgs manual (/doc/Makefile).
|
||||
# TODO: Remove raw-attribute when we can get rid of DocBook altogether.
|
||||
pandoc_commonmark_enabled_extensions=+attributes+fenced_divs+footnotes+bracketed_spans+definition_lists+pipe_tables+raw_attribute
|
||||
|
@ -17,7 +19,7 @@ pandoc_flags=(
|
|||
# - media extraction (was only required for diagram generator)
|
||||
# - docbook-reader/citerefentry-to-rst-role.lua (only relevant for DocBook → MarkDown/rST/MyST)
|
||||
"--lua-filter=$DIR/../../../doc/build-aux/pandoc-filters/myst-reader/roles.lua"
|
||||
"--lua-filter=$DIR/../../../doc/build-aux/pandoc-filters/link-unix-man-references.lua"
|
||||
"--lua-filter=$link_manpages_filter"
|
||||
"--lua-filter=$DIR/../../../doc/build-aux/pandoc-filters/docbook-writer/rst-roles.lua"
|
||||
"--lua-filter=$DIR/../../../doc/build-aux/pandoc-filters/docbook-writer/html-elements.lua"
|
||||
"--lua-filter=$DIR/../../../doc/build-aux/pandoc-filters/docbook-writer/labelless-link-is-xref.lua"
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
# characteristics but (hopefully) indistinguishable output.
|
||||
, allowDocBook ? true
|
||||
# whether lib.mdDoc is required for descriptions to be read as markdown.
|
||||
# !!! when this is eventually flipped to true, `lib.doRename` should also default to emitting Markdown
|
||||
, markdownByDefault ? false
|
||||
}:
|
||||
|
||||
|
@ -130,6 +131,8 @@ in rec {
|
|||
if baseOptionsJSON == null
|
||||
then builtins.toFile "base.json" "{}"
|
||||
else baseOptionsJSON;
|
||||
|
||||
MANPAGE_URLS = pkgs.path + "/doc/manpage-urls.json";
|
||||
}
|
||||
''
|
||||
# Export list of options in different format.
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import collections
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
from typing import Any, Dict, List
|
||||
|
||||
|
@ -46,6 +47,8 @@ def unpivot(options: Dict[Key, Option]) -> Dict[str, JSON]:
|
|||
result[opt.name] = opt.value
|
||||
return result
|
||||
|
||||
manpage_urls = json.load(open(os.getenv('MANPAGE_URLS')))
|
||||
|
||||
admonitions = {
|
||||
'.warning': 'warning',
|
||||
'.important': 'important',
|
||||
|
@ -119,9 +122,14 @@ class Renderer(mistune.renderers.BaseRenderer):
|
|||
def env(self, text):
|
||||
return f"<envar>{escape(text)}</envar>"
|
||||
def manpage(self, page, section):
|
||||
man = f"{page}({section})"
|
||||
title = f"<refentrytitle>{escape(page)}</refentrytitle>"
|
||||
vol = f"<manvolnum>{escape(section)}</manvolnum>"
|
||||
return f"<citerefentry>{title}{vol}</citerefentry>"
|
||||
ref = f"<citerefentry>{title}{vol}</citerefentry>"
|
||||
if man in manpage_urls:
|
||||
return self.link(manpage_urls[man], text=ref)
|
||||
else:
|
||||
return ref
|
||||
|
||||
def finalize(self, data):
|
||||
return "".join(data)
|
||||
|
|
|
@ -60,7 +60,7 @@ in rec {
|
|||
`asDropin` creates a drop-in file named `overrides.conf`.
|
||||
Mainly needed to define instances for systemd template units (e.g. `systemd-nspawn@mycontainer.service`).
|
||||
|
||||
See also systemd.unit(1).
|
||||
See also {manpage}`systemd.unit(5)`.
|
||||
'';
|
||||
};
|
||||
|
||||
|
@ -86,7 +86,7 @@ in rec {
|
|||
|
||||
This option creates a `.wants` symlink in the given target that exists
|
||||
statelessly without the need for running `systemctl enable`.
|
||||
The in systemd.unit(5) manpage described `[Install]` section however is
|
||||
The `[Install]` section described in {manpage}`systemd.unit(5)` however is
|
||||
not supported because it is a stateful process that does not fit well
|
||||
into the NixOS design.
|
||||
'';
|
||||
|
|
5
nixos/modules/installer/tools/nixos-enter.sh
Normal file → Executable file
5
nixos/modules/installer/tools/nixos-enter.sh
Normal file → Executable file
|
@ -100,8 +100,9 @@ chroot_add_resolv_conf "$mountPoint" || echo "$0: failed to set up resolv.conf"
|
|||
# Run the activation script. Set $LOCALE_ARCHIVE to supress some Perl locale warnings.
|
||||
LOCALE_ARCHIVE="$system/sw/lib/locale/locale-archive" IN_NIXOS_ENTER=1 chroot "$mountPoint" "$system/activate" 1>&2 || true
|
||||
|
||||
# Create /tmp
|
||||
chroot "$mountPoint" "$system/sw/bin/systemd-tmpfiles" --create --remove --exclude-prefix=/dev 1>&2 || true
|
||||
# Create /tmp. This is needed for nix-build and the NixOS activation script to work.
|
||||
# Hide the unhelpful "failed to replace specifiers" errors caused by missing /etc/machine-id.
|
||||
chroot "$mountPoint" "$system/sw/bin/systemd-tmpfiles" --create --remove -E 2> /dev/null || true
|
||||
)
|
||||
|
||||
unset TMPDIR
|
||||
|
|
|
@ -1141,6 +1141,7 @@
|
|||
./services/web-apps/isso.nix
|
||||
./services/web-apps/jirafeau.nix
|
||||
./services/web-apps/jitsi-meet.nix
|
||||
./services/web-apps/kasmweb/default.nix
|
||||
./services/web-apps/keycloak.nix
|
||||
./services/web-apps/komga.nix
|
||||
./services/web-apps/lemmy.nix
|
||||
|
|
|
@ -12,14 +12,14 @@ in {
|
|||
type = types.package;
|
||||
default = pkgs.steam.override {
|
||||
extraLibraries = pkgs: with config.hardware.opengl;
|
||||
if pkgs.hostPlatform.is64bit
|
||||
if pkgs.stdenv.hostPlatform.is64bit
|
||||
then [ package ] ++ extraPackages
|
||||
else [ package32 ] ++ extraPackages32;
|
||||
};
|
||||
defaultText = literalExpression ''
|
||||
pkgs.steam.override {
|
||||
extraLibraries = pkgs: with config.hardware.opengl;
|
||||
if pkgs.hostPlatform.is64bit
|
||||
if pkgs.stdenv.hostPlatform.is64bit
|
||||
then [ package ] ++ extraPackages
|
||||
else [ package32 ] ++ extraPackages32;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ in {
|
|||
meta.maintainers = with maintainers; [ melling ];
|
||||
|
||||
options.programs.xastir = {
|
||||
enable = mkEnableOption (mdDoc "Enable Xastir Graphical APRS client");
|
||||
enable = mkEnableOption (mdDoc "Xastir Graphical APRS client");
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
|
|
@ -132,7 +132,7 @@ in
|
|||
OnCalendar = "daily";
|
||||
};
|
||||
description = lib.mdDoc ''
|
||||
When to run the backup. See man systemd.timer for details.
|
||||
When to run the backup. See {manpage}`systemd.timer(5)` for details.
|
||||
'';
|
||||
example = {
|
||||
OnCalendar = "00:05";
|
||||
|
|
|
@ -819,10 +819,10 @@ in
|
|||
|
||||
system-features = mkDefault (
|
||||
[ "nixos-test" "benchmark" "big-parallel" "kvm" ] ++
|
||||
optionals (pkgs.hostPlatform ? gcc.arch) (
|
||||
optionals (pkgs.stdenv.hostPlatform ? gcc.arch) (
|
||||
# a builder can run code for `gcc.arch` and inferior architectures
|
||||
[ "gccarch-${pkgs.hostPlatform.gcc.arch}" ] ++
|
||||
map (x: "gccarch-${x}") (systems.architectures.inferiors.${pkgs.hostPlatform.gcc.arch} or [])
|
||||
[ "gccarch-${pkgs.stdenv.hostPlatform.gcc.arch}" ] ++
|
||||
map (x: "gccarch-${x}") (systems.architectures.inferiors.${pkgs.stdenv.hostPlatform.gcc.arch} or [])
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ let
|
|||
provisionConfDir = pkgs.runCommand "grafana-provisioning" { nativeBuildInputs = [ pkgs.xorg.lndir ]; } ''
|
||||
mkdir -p $out/{datasources,dashboards,notifiers,alerting}
|
||||
${ln { src = datasourceFileOrDir; dir = "datasources"; filename = "datasource"; }}
|
||||
${ln { src = dashboardFileOrDir; dir = "dashboards"; filename = "dashbaord"; }}
|
||||
${ln { src = dashboardFileOrDir; dir = "dashboards"; filename = "dashboard"; }}
|
||||
${ln { src = notifierFileOrDir; dir = "notifiers"; filename = "notifier"; }}
|
||||
${ln { src = rulesFileOrDir; dir = "alerting"; filename = "rules"; }}
|
||||
${ln { src = contactPointsFileOrDir; dir = "alerting"; filename = "contactPoints"; }}
|
||||
|
|
|
@ -79,7 +79,7 @@ in {
|
|||
example = [ "53" ];
|
||||
description = lib.mdDoc ''
|
||||
What addresses and ports the server should listen on.
|
||||
For detailed syntax see ListenStream in man systemd.socket.
|
||||
For detailed syntax see ListenStream in {manpage}`systemd.socket(5)`.
|
||||
'';
|
||||
};
|
||||
listenTLS = mkOption {
|
||||
|
@ -88,7 +88,7 @@ in {
|
|||
example = [ "198.51.100.1:853" "[2001:db8::1]:853" "853" ];
|
||||
description = lib.mdDoc ''
|
||||
Addresses and ports on which kresd should provide DNS over TLS (see RFC 7858).
|
||||
For detailed syntax see ListenStream in man systemd.socket.
|
||||
For detailed syntax see ListenStream in {manpage}`systemd.socket(5)`.
|
||||
'';
|
||||
};
|
||||
listenDoH = mkOption {
|
||||
|
@ -97,7 +97,7 @@ in {
|
|||
example = [ "198.51.100.1:443" "[2001:db8::1]:443" "443" ];
|
||||
description = lib.mdDoc ''
|
||||
Addresses and ports on which kresd should provide DNS over HTTPS/2 (see RFC 8484).
|
||||
For detailed syntax see ListenStream in man systemd.socket.
|
||||
For detailed syntax see ListenStream in {manpage}`systemd.socket(5)`.
|
||||
'';
|
||||
};
|
||||
instances = mkOption {
|
||||
|
|
|
@ -62,11 +62,10 @@ in
|
|||
};
|
||||
|
||||
packageFirewall = mkOption {
|
||||
default = pkgs.iptables;
|
||||
defaultText = literalExpression "pkgs.iptables";
|
||||
default = config.networking.firewall.package;
|
||||
defaultText = literalExpression "config.networking.firewall.package";
|
||||
type = types.package;
|
||||
example = literalExpression "pkgs.nftables";
|
||||
description = lib.mdDoc "The firewall package used by fail2ban service.";
|
||||
description = lib.mdDoc "The firewall package used by fail2ban service. Defaults to the package for your firewall (iptables or nftables).";
|
||||
};
|
||||
|
||||
extraPackages = mkOption {
|
||||
|
@ -86,24 +85,24 @@ in
|
|||
};
|
||||
|
||||
banaction = mkOption {
|
||||
default = "iptables-multiport";
|
||||
default = if config.networking.nftables.enable then "nftables-multiport" else "iptables-multiport";
|
||||
defaultText = literalExpression '' if config.networking.nftables.enable then "nftables-multiport" else "iptables-multiport" '';
|
||||
type = types.str;
|
||||
example = "nftables-multiport";
|
||||
description = lib.mdDoc ''
|
||||
Default banning action (e.g. iptables, iptables-new, iptables-multiport,
|
||||
iptables-ipset-proto6-allports, shorewall, etc) It is used to
|
||||
iptables-ipset-proto6-allports, shorewall, etc). It is used to
|
||||
define action_* variables. Can be overridden globally or per
|
||||
section within jail.local file
|
||||
'';
|
||||
};
|
||||
|
||||
banaction-allports = mkOption {
|
||||
default = "iptables-allport";
|
||||
default = if config.networking.nftables.enable then "nftables-allport" else "iptables-allport";
|
||||
defaultText = literalExpression '' if config.networking.nftables.enable then "nftables-allport" else "iptables-allport" '';
|
||||
type = types.str;
|
||||
example = "nftables-allport";
|
||||
description = lib.mdDoc ''
|
||||
Default banning action (e.g. iptables, iptables-new, iptables-multiport,
|
||||
shorewall, etc) It is used to define action_* variables. Can be overridden
|
||||
shorewall, etc) for "allports" jails. It is used to define action_* variables. Can be overridden
|
||||
globally or per section within jail.local file
|
||||
'';
|
||||
};
|
||||
|
|
275
nixos/modules/services/web-apps/kasmweb/default.nix
Normal file
275
nixos/modules/services/web-apps/kasmweb/default.nix
Normal file
|
@ -0,0 +1,275 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.services.kasmweb;
|
||||
in
|
||||
{
|
||||
options.services.kasmweb = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc "kasmweb");
|
||||
|
||||
networkSubnet = lib.mkOption {
|
||||
default = "172.20.0.0/16";
|
||||
type = lib.types.str;
|
||||
description = lib.mdDoc ''
|
||||
The network subnet to use for the containers.
|
||||
'';
|
||||
};
|
||||
|
||||
postgres = {
|
||||
user = lib.mkOption {
|
||||
default = "kasmweb";
|
||||
type = lib.types.str;
|
||||
description = lib.mdDoc ''
|
||||
Username to use for the postgres database.
|
||||
'';
|
||||
};
|
||||
password = lib.mkOption {
|
||||
default = "kasmweb";
|
||||
type = lib.types.str;
|
||||
description = lib.mdDoc ''
|
||||
password to use for the postgres database.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
redisPassword = lib.mkOption {
|
||||
default = "kasmweb";
|
||||
type = lib.types.str;
|
||||
description = lib.mdDoc ''
|
||||
password to use for the redis cache.
|
||||
'';
|
||||
};
|
||||
|
||||
defaultAdminPassword = lib.mkOption {
|
||||
default = "kasmweb";
|
||||
type = lib.types.str;
|
||||
description = lib.mdDoc ''
|
||||
default admin password to use.
|
||||
'';
|
||||
};
|
||||
|
||||
defaultUserPassword = lib.mkOption {
|
||||
default = "kasmweb";
|
||||
type = lib.types.str;
|
||||
description = lib.mdDoc ''
|
||||
default user password to use.
|
||||
'';
|
||||
};
|
||||
|
||||
defaultManagerToken = lib.mkOption {
|
||||
default = "kasmweb";
|
||||
type = lib.types.str;
|
||||
description = lib.mdDoc ''
|
||||
default manager token to use.
|
||||
'';
|
||||
};
|
||||
|
||||
defaultGuacToken = lib.mkOption {
|
||||
default = "kasmweb";
|
||||
type = lib.types.str;
|
||||
description = lib.mdDoc ''
|
||||
default guac token to use.
|
||||
'';
|
||||
};
|
||||
|
||||
defaultRegistrationToken = lib.mkOption {
|
||||
default = "kasmweb";
|
||||
type = lib.types.str;
|
||||
description = lib.mdDoc ''
|
||||
default registration token to use.
|
||||
'';
|
||||
};
|
||||
|
||||
datastorePath = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/var/lib/kasmweb";
|
||||
description = lib.mdDoc ''
|
||||
The directory used to store all data for kasmweb.
|
||||
'';
|
||||
};
|
||||
|
||||
listenAddress = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "0.0.0.0";
|
||||
description = lib.mdDoc ''
|
||||
The address on which kasmweb should listen.
|
||||
'';
|
||||
};
|
||||
|
||||
listenPort = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
default = 443;
|
||||
description = lib.mdDoc ''
|
||||
The port on which kasmweb should listen.
|
||||
'';
|
||||
};
|
||||
|
||||
sslCertificate = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
description = lib.mdDoc ''
|
||||
The SSL certificate to be used for kasmweb.
|
||||
'';
|
||||
};
|
||||
|
||||
sslCertificateKey = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
description = lib.mdDoc ''
|
||||
The SSL certificate's key to be used for kasmweb. Make sure to specify
|
||||
this as a string and not a literal path, so that it is not accidentally
|
||||
included in your nixstore.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
systemd.services = {
|
||||
"init-kasmweb" = {
|
||||
wantedBy = [
|
||||
"docker-kasm_db.service"
|
||||
];
|
||||
before = [
|
||||
"docker-kasm_db.service"
|
||||
"docker-kasm_redis.service"
|
||||
"docker-kasm_db_init.service"
|
||||
"docker-kasm_api.service"
|
||||
"docker-kasm_agent.service"
|
||||
"docker-kasm_manager.service"
|
||||
"docker-kasm_share.service"
|
||||
"docker-kasm_guac.service"
|
||||
"docker-kasm_proxy.service"
|
||||
];
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = pkgs.substituteAll {
|
||||
src = ./initialize_kasmweb.sh;
|
||||
isExecutable = true;
|
||||
binPath = lib.makeBinPath [ pkgs.docker pkgs.openssl pkgs.gnused ];
|
||||
runtimeShell = pkgs.runtimeShell;
|
||||
kasmweb = pkgs.kasmweb;
|
||||
postgresUser = cfg.postgres.user;
|
||||
postgresPassword = cfg.postgres.password;
|
||||
inherit (cfg)
|
||||
datastorePath
|
||||
sslCertificate
|
||||
sslCertificateKey
|
||||
redisPassword
|
||||
defaultUserPassword
|
||||
defaultAdminPassword
|
||||
defaultManagerToken
|
||||
defaultRegistrationToken
|
||||
defaultGuacToken;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation = {
|
||||
oci-containers.containers = {
|
||||
kasm_db = {
|
||||
image = "postgres:12-alpine";
|
||||
environment = {
|
||||
POSTGRES_PASSWORD = cfg.postgres.password;
|
||||
POSTGRES_USER = cfg.postgres.user;
|
||||
POSTGRES_DB = "kasm";
|
||||
};
|
||||
volumes = [
|
||||
"${cfg.datastorePath}/conf/database/data.sql:/docker-entrypoint-initdb.d/data.sql"
|
||||
"${cfg.datastorePath}/conf/database/:/tmp/"
|
||||
"kasmweb_db:/var/lib/postgresql/data"
|
||||
];
|
||||
extraOptions = [ "--network=kasm_default_network" ];
|
||||
};
|
||||
kasm_db_init = {
|
||||
image = "kasmweb/api:${pkgs.kasmweb.version}";
|
||||
user = "root:root";
|
||||
volumes = [
|
||||
"${cfg.datastorePath}/:/opt/kasm/current/"
|
||||
"kasmweb_api_data:/tmp"
|
||||
];
|
||||
dependsOn = [ "kasm_db" ];
|
||||
entrypoint = "/bin/bash";
|
||||
cmd = [ "/opt/kasm/current/init_seeds.sh" ];
|
||||
extraOptions = [ "--network=kasm_default_network" "--userns=host" ];
|
||||
};
|
||||
kasm_redis = {
|
||||
image = "redis:5-alpine";
|
||||
entrypoint = "/bin/sh";
|
||||
cmd = [
|
||||
"-c"
|
||||
"redis-server --requirepass ${cfg.redisPassword}"
|
||||
];
|
||||
extraOptions = [ "--network=kasm_default_network" "--userns=host" ];
|
||||
};
|
||||
kasm_api = {
|
||||
image = "kasmweb/api:${pkgs.kasmweb.version}";
|
||||
user = "root:root";
|
||||
volumes = [
|
||||
"${cfg.datastorePath}/:/opt/kasm/current/"
|
||||
"kasmweb_api_data:/tmp"
|
||||
];
|
||||
dependsOn = [ "kasm_db_init" ];
|
||||
extraOptions = [ "--network=kasm_default_network" "--userns=host" ];
|
||||
};
|
||||
kasm_manager = {
|
||||
image = "kasmweb/manager:${pkgs.kasmweb.version}";
|
||||
user = "root:root";
|
||||
volumes = [
|
||||
"${cfg.datastorePath}/:/opt/kasm/current/"
|
||||
];
|
||||
dependsOn = [ "kasm_db" "kasm_api" ];
|
||||
extraOptions = [ "--network=kasm_default_network" "--userns=host" "--read-only"];
|
||||
};
|
||||
kasm_agent = {
|
||||
image = "kasmweb/agent:${pkgs.kasmweb.version}";
|
||||
user = "root:root";
|
||||
volumes = [
|
||||
"${cfg.datastorePath}/:/opt/kasm/current/"
|
||||
"/var/run/docker.sock:/var/run/docker.sock"
|
||||
"${pkgs.docker}/bin/docker:/usr/bin/docker"
|
||||
"${cfg.datastorePath}/conf/nginx:/etc/nginx/conf.d"
|
||||
];
|
||||
dependsOn = [ "kasm_manager" ];
|
||||
extraOptions = [ "--network=kasm_default_network" "--userns=host" "--read-only" ];
|
||||
};
|
||||
kasm_share = {
|
||||
image = "kasmweb/share:${pkgs.kasmweb.version}";
|
||||
user = "root:root";
|
||||
volumes = [
|
||||
"${cfg.datastorePath}/:/opt/kasm/current/"
|
||||
];
|
||||
dependsOn = [ "kasm_db" "kasm_redis" ];
|
||||
extraOptions = [ "--network=kasm_default_network" "--userns=host" "--read-only" ];
|
||||
};
|
||||
kasm_guac = {
|
||||
image = "kasmweb/kasm-guac:${pkgs.kasmweb.version}";
|
||||
user = "root:root";
|
||||
volumes = [
|
||||
"${cfg.datastorePath}/:/opt/kasm/current/"
|
||||
];
|
||||
dependsOn = [ "kasm_db" "kasm_redis" ];
|
||||
extraOptions = [ "--network=kasm_default_network" "--userns=host" "--read-only" ];
|
||||
};
|
||||
kasm_proxy = {
|
||||
image = "kasmweb/nginx:latest";
|
||||
ports = [ "${cfg.listenAddress}:${toString cfg.listenPort}:443" ];
|
||||
user = "root:root";
|
||||
volumes = [
|
||||
"${cfg.datastorePath}/conf/nginx:/etc/nginx/conf.d:ro"
|
||||
"${cfg.datastorePath}/certs/kasm_nginx.key:/etc/ssl/private/kasm_nginx.key"
|
||||
"${cfg.datastorePath}/certs/kasm_nginx.crt:/etc/ssl/certs/kasm_nginx.crt"
|
||||
"${cfg.datastorePath}/www:/srv/www:ro"
|
||||
"${cfg.datastorePath}/log/nginx:/var/log/external/nginx"
|
||||
"${cfg.datastorePath}/log/logrotate:/var/log/external/logrotate"
|
||||
];
|
||||
dependsOn = [ "kasm_manager" "kasm_api" "kasm_agent" "kasm_share"
|
||||
"kasm_guac" ];
|
||||
extraOptions = [ "--network=kasm_default_network" "--userns=host"
|
||||
"--network-alias=proxy"];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
114
nixos/modules/services/web-apps/kasmweb/initialize_kasmweb.sh
Normal file
114
nixos/modules/services/web-apps/kasmweb/initialize_kasmweb.sh
Normal file
|
@ -0,0 +1,114 @@
|
|||
#! @runtimeShell@
|
||||
export PATH=@binPath@:$PATH
|
||||
|
||||
mkdir -p @datastorePath@/log
|
||||
chmod -R a+rw @datastorePath@
|
||||
|
||||
ln -sf @kasmweb@/bin @datastorePath@
|
||||
rm -r @datastorePath@/conf
|
||||
cp -r @kasmweb@/conf @datastorePath@
|
||||
mkdir -p @datastorePath@/conf/nginx/containers.d
|
||||
chmod -R a+rw @datastorePath@/conf
|
||||
ln -sf @kasmweb@/www @datastorePath@
|
||||
|
||||
|
||||
docker network inspect kasm_default_network >/dev/null || docker network create kasm_default_network --subnet @networkSubnet@
|
||||
if docker volume inspect kasmweb_db >/dev/null; then
|
||||
source @datastorePath@/ids.env
|
||||
echo 'echo "skipping database init"' > @datastorePath@/init_seeds.sh
|
||||
echo 'while true; do sleep 10 ; done' >> @datastorePath@/init_seeds.sh
|
||||
else
|
||||
API_SERVER_ID=$(cat /proc/sys/kernel/random/uuid)
|
||||
MANAGER_ID=$(cat /proc/sys/kernel/random/uuid)
|
||||
SHARE_ID=$(cat /proc/sys/kernel/random/uuid)
|
||||
SERVER_ID=$(cat /proc/sys/kernel/random/uuid)
|
||||
echo "export API_SERVER_ID=$API_SERVER_ID" > @datastorePath@/ids.env
|
||||
echo "export MANAGER_ID=$MANAGER_ID" >> @datastorePath@/ids.env
|
||||
echo "export SHARE_ID=$SHARE_ID" >> @datastorePath@/ids.env
|
||||
echo "export SERVER_ID=$SERVER_ID" >> @datastorePath@/ids.env
|
||||
|
||||
mkdir -p @datastorePath@/certs
|
||||
openssl req -x509 -nodes -days 1825 -newkey rsa:2048 -keyout @datastorePath@/certs/kasm_nginx.key -out @datastorePath@/certs/kasm_nginx.crt -subj "/C=US/ST=VA/L=None/O=None/OU=DoFu/CN=$(hostname)/emailAddress=none@none.none" 2> /dev/null
|
||||
|
||||
docker volume create kasmweb_db
|
||||
rm @datastorePath@/.done_initing_data
|
||||
cat >@datastorePath@/init_seeds.sh <<EOF
|
||||
#!/bin/bash
|
||||
if [ ! -e /opt/kasm/current/.done_initing_data ]; then
|
||||
sleep 4
|
||||
/usr/bin/kasm_server.so --initialize-database --cfg \
|
||||
/opt/kasm/current/conf/app/api.app.config.yaml \
|
||||
--populate-production \
|
||||
--seed-file \
|
||||
/opt/kasm/current/conf/database/seed_data/default_properties.yaml \
|
||||
2>&1 | grep -v UserWarning
|
||||
/usr/bin/kasm_server.so --cfg \
|
||||
/opt/kasm/current/conf/app/api.app.config.yaml \
|
||||
--populate-production \
|
||||
--seed-file \
|
||||
/opt/kasm/current/conf/database/seed_data/default_agents.yaml \
|
||||
2>&1 | grep -v UserWarning
|
||||
/usr/bin/kasm_server.so --cfg \
|
||||
/opt/kasm/current/conf/app/api.app.config.yaml \
|
||||
--populate-production \
|
||||
--seed-file \
|
||||
/opt/kasm/current/conf/database/seed_data/default_connection_proxies.yaml \
|
||||
2>&1 | grep -v UserWarning
|
||||
/usr/bin/kasm_server.so --cfg \
|
||||
/opt/kasm/current/conf/app/api.app.config.yaml \
|
||||
--populate-production \
|
||||
--seed-file \
|
||||
/opt/kasm/current/conf/database/seed_data/default_images_amd64.yaml \
|
||||
2>&1 | grep -v UserWarning
|
||||
touch /opt/kasm/current/.done_initing_data
|
||||
while true; do sleep 10 ; done
|
||||
else
|
||||
echo "skipping database init"
|
||||
while true; do sleep 10 ; done
|
||||
fi
|
||||
EOF
|
||||
fi
|
||||
|
||||
chmod +x @datastorePath@/init_seeds.sh
|
||||
chmod a+w @datastorePath@/init_seeds.sh
|
||||
|
||||
if [ -e @sslCertificate@ ]; then
|
||||
cp @sslCertificate@ @datastorePath@/certs/kasm_nginx.crt
|
||||
cp @sslCertificateKey@ @datastorePath@/certs/kasm_nginx.key
|
||||
fi
|
||||
|
||||
sed -i -e "s/username.*/username: @postgresUser@/g" \
|
||||
-e "s/password.*/password: @postgresPassword@/g" \
|
||||
-e "s/host.*db/host: kasm_db/g" \
|
||||
-e "s/ssl: true/ssl: false/g" \
|
||||
-e "s/redisPassword.*/redisPassword: @redisPassword@/g" \
|
||||
-e "s/server_hostname.*/server_hostname: kasm_api/g" \
|
||||
-e "s/server_id.*/server_id: $API_SERVER_ID/g" \
|
||||
-e "s/manager_id.*/manager_id: $MANAGER_ID/g" \
|
||||
-e "s/share_id.*/share_id: $SHARE_ID/g" \
|
||||
@datastorePath@/conf/app/api.app.config.yaml
|
||||
|
||||
sed -i -e "s/ token:.*/ token: \"@defaultManagerToken@\"/g" \
|
||||
-e "s/hostnames: \['proxy.*/hostnames: \['kasm_proxy'\]/g" \
|
||||
-e "s/server_id.*/server_id: $SERVER_ID/g" \
|
||||
@datastorePath@/conf/app/agent.app.config.yaml
|
||||
|
||||
|
||||
sed -i -e "s/password: admin.*/password: \"@defaultAdminPassword@\"/g" \
|
||||
-e "s/password: user.*/password: \"@defaultUserPassword@\"/g" \
|
||||
-e "s/default-manager-token/@defaultManagerToken@/g" \
|
||||
-e "s/default-registration-token/@defaultRegistrationToken@/g" \
|
||||
-e "s/upstream_auth_address:.*/upstream_auth_address: 'proxy'/g" \
|
||||
@datastorePath@/conf/database/seed_data/default_properties.yaml
|
||||
|
||||
sed -i -e "s/GUACTOKEN/@defaultGuacToken@/g" \
|
||||
-e "s/APIHOSTNAME/proxy/g" \
|
||||
@datastorePath@/conf/app/kasmguac.app.config.yaml
|
||||
|
||||
sed -i -e "s/GUACTOKEN/@defaultGuacToken@/g" \
|
||||
-e "s/APIHOSTNAME/proxy/g" \
|
||||
@datastorePath@/conf/database/seed_data/default_connection_proxies.yaml
|
||||
|
||||
sed -i "s/00000000-0000-0000-0000-000000000000/$SERVER_ID/g" \
|
||||
@datastorePath@/conf/database/seed_data/default_agents.yaml
|
||||
|
|
@ -95,7 +95,6 @@ let
|
|||
) env))));
|
||||
|
||||
mastodonTootctl = pkgs.writeShellScriptBin "mastodon-tootctl" ''
|
||||
#! ${pkgs.runtimeShell}
|
||||
set -a
|
||||
export RAILS_ROOT="${cfg.package}"
|
||||
source "${envFile}"
|
||||
|
|
|
@ -46,7 +46,7 @@ in {
|
|||
type = types.lines;
|
||||
example = "DefaultCPUAccounting=yes";
|
||||
description = lib.mdDoc ''
|
||||
Extra config options for systemd user instances. See man systemd-user.conf for
|
||||
Extra config options for systemd user instances. See {manpage}`systemd-user.conf(5)` for
|
||||
available options.
|
||||
'';
|
||||
};
|
||||
|
|
|
@ -13,8 +13,12 @@ sub atomicSymlink {
|
|||
my $tmp = "$target.tmp";
|
||||
unlink $tmp;
|
||||
symlink $source, $tmp or return 0;
|
||||
rename $tmp, $target or return 0;
|
||||
return 1;
|
||||
if (rename $tmp, $target) {
|
||||
return 1;
|
||||
} else {
|
||||
unlink $tmp;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -87,6 +91,12 @@ my @copied;
|
|||
|
||||
sub link {
|
||||
my $fn = substr $File::Find::name, length($etc) + 1 or next;
|
||||
|
||||
# nixos-enter sets up /etc/resolv.conf as a bind mount, so skip it.
|
||||
if ($fn eq "resolv.conf" and $ENV{'IN_NIXOS_ENTER'}) {
|
||||
return;
|
||||
}
|
||||
|
||||
my $target = "/etc/$fn";
|
||||
File::Path::make_path(dirname $target);
|
||||
$created{$fn} = 1;
|
||||
|
@ -103,7 +113,7 @@ sub link {
|
|||
if (-e "$_.mode") {
|
||||
my $mode = read_file("$_.mode"); chomp $mode;
|
||||
if ($mode eq "direct-symlink") {
|
||||
atomicSymlink readlink("$static/$fn"), $target or warn;
|
||||
atomicSymlink readlink("$static/$fn"), $target or warn "could not create symlink $target";
|
||||
} else {
|
||||
my $uid = read_file("$_.uid"); chomp $uid;
|
||||
my $gid = read_file("$_.gid"); chomp $gid;
|
||||
|
@ -112,12 +122,15 @@ sub link {
|
|||
$gid = getgrnam $gid unless $gid =~ /^\+/;
|
||||
chown int($uid), int($gid), "$target.tmp" or warn;
|
||||
chmod oct($mode), "$target.tmp" or warn;
|
||||
rename "$target.tmp", $target or warn;
|
||||
unless (rename "$target.tmp", $target) {
|
||||
warn "could not create target $target";
|
||||
unlink "$target.tmp";
|
||||
}
|
||||
}
|
||||
push @copied, $fn;
|
||||
print CLEAN "$fn\n";
|
||||
} elsif (-l "$_") {
|
||||
atomicSymlink "$static/$fn", $target or warn;
|
||||
atomicSymlink "$static/$fn", $target or warn "could not create symlink $target";
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -377,6 +377,7 @@ in {
|
|||
man = handleTest ./man.nix {};
|
||||
mariadb-galera = handleTest ./mysql/mariadb-galera.nix {};
|
||||
mastodon = discoverTests (import ./web-apps/mastodon { inherit handleTestOn; });
|
||||
mate = handleTest ./mate.nix {};
|
||||
matomo = handleTest ./matomo.nix {};
|
||||
matrix-appservice-irc = handleTest ./matrix/appservice-irc.nix {};
|
||||
matrix-conduit = handleTest ./matrix/conduit.nix {};
|
||||
|
|
|
@ -88,7 +88,6 @@ import ./make-test-python.nix ({ pkgs, lib, ...} :
|
|||
with subtest("Check journal for errors"):
|
||||
_, output = machine.execute("journalctl -o cat -u evcc.service")
|
||||
assert "FATAL" not in output
|
||||
assert "ERROR" not in output
|
||||
|
||||
with subtest("Check systemd hardening"):
|
||||
_, output = machine.execute("systemd-analyze security evcc.service | grep -v '✓'")
|
||||
|
|
|
@ -49,6 +49,8 @@ let
|
|||
boot.loader.systemd-boot.enable = true;
|
||||
''}
|
||||
|
||||
boot.initrd.secrets."/etc/secret" = /etc/nixos/secret;
|
||||
|
||||
users.users.alice = {
|
||||
isNormalUser = true;
|
||||
home = "/home/alice";
|
||||
|
@ -124,6 +126,7 @@ let
|
|||
}",
|
||||
"/mnt/etc/nixos/configuration.nix",
|
||||
)
|
||||
machine.copy_from_host("${pkgs.writeText "secret" "secret"}", "/mnt/etc/nixos/secret")
|
||||
|
||||
with subtest("Perform the installation"):
|
||||
machine.succeed("nixos-install < /dev/null >&2")
|
||||
|
@ -131,6 +134,19 @@ let
|
|||
with subtest("Do it again to make sure it's idempotent"):
|
||||
machine.succeed("nixos-install < /dev/null >&2")
|
||||
|
||||
with subtest("Check that we can build things in nixos-enter"):
|
||||
machine.succeed(
|
||||
"""
|
||||
nixos-enter -- nix-build --option substitute false -E 'derivation {
|
||||
name = "t";
|
||||
builder = "/bin/sh";
|
||||
args = ["-c" "echo nixos-enter build > $out"];
|
||||
system = builtins.currentSystem;
|
||||
preferLocalBuild = true;
|
||||
}'
|
||||
"""
|
||||
)
|
||||
|
||||
with subtest("Shutdown system after installation"):
|
||||
machine.succeed("umount /mnt/boot || true")
|
||||
machine.succeed("umount /mnt")
|
||||
|
|
|
@ -21,7 +21,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
|||
};
|
||||
|
||||
testScript = let
|
||||
nixosInstallISO = (import ../release.nix {}).iso_minimal.${pkgs.hostPlatform.system};
|
||||
nixosInstallISO = (import ../release.nix {}).iso_minimal.${pkgs.stdenv.hostPlatform.system};
|
||||
virshShutdownCmd = if pkgs.stdenv.isx86_64 then "shutdown" else "destroy";
|
||||
in ''
|
||||
start_all()
|
||||
|
|
58
nixos/tests/mate.nix
Normal file
58
nixos/tests/mate.nix
Normal file
|
@ -0,0 +1,58 @@
|
|||
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
name = "mate";
|
||||
|
||||
meta = {
|
||||
maintainers = lib.teams.mate.members;
|
||||
};
|
||||
|
||||
nodes.machine = { ... }: {
|
||||
imports = [
|
||||
./common/user-account.nix
|
||||
];
|
||||
|
||||
services.xserver.enable = true;
|
||||
|
||||
services.xserver.displayManager = {
|
||||
lightdm.enable = true;
|
||||
autoLogin = {
|
||||
enable = true;
|
||||
user = "alice";
|
||||
};
|
||||
};
|
||||
|
||||
services.xserver.desktopManager.mate.enable = true;
|
||||
|
||||
# Silence log spam due to no sound drivers loaded:
|
||||
# ALSA lib confmisc.c:855:(parse_card) cannot find card '0'
|
||||
hardware.pulseaudio.enable = true;
|
||||
};
|
||||
|
||||
testScript = { nodes, ... }:
|
||||
let
|
||||
user = nodes.machine.users.users.alice;
|
||||
in
|
||||
''
|
||||
with subtest("Wait for login"):
|
||||
machine.wait_for_x()
|
||||
machine.wait_for_file("${user.home}/.Xauthority")
|
||||
machine.succeed("xauth merge ${user.home}/.Xauthority")
|
||||
|
||||
with subtest("Check that logging in has given the user ownership of devices"):
|
||||
machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}")
|
||||
|
||||
with subtest("Check if MATE session components actually start"):
|
||||
machine.wait_until_succeeds("pgrep marco")
|
||||
machine.wait_for_window("marco")
|
||||
machine.wait_until_succeeds("pgrep mate-panel")
|
||||
machine.wait_for_window("Top Panel")
|
||||
machine.wait_for_window("Bottom Panel")
|
||||
machine.wait_until_succeeds("pgrep caja")
|
||||
machine.wait_for_window("Caja")
|
||||
|
||||
with subtest("Open MATE terminal"):
|
||||
machine.succeed("su - ${user.name} -c 'DISPLAY=:0.0 mate-terminal >&2 &'")
|
||||
machine.wait_for_window("Terminal")
|
||||
machine.sleep(20)
|
||||
machine.screenshot("screen")
|
||||
'';
|
||||
})
|
|
@ -15,13 +15,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "timeshift";
|
||||
version = "22.11.1";
|
||||
version = "22.11.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = "timeshift";
|
||||
rev = version;
|
||||
sha256 = "JYYiqJzLszaCJSl7fDb9Oz8tdIYAnqEbJoRg4zw3wbg=";
|
||||
sha256 = "yZNERRoNZ1K7BRiAu7sqVQyhghsS/AeZSODMVSm46oY=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -6,13 +6,13 @@
|
|||
|
||||
buildDotnetModule rec {
|
||||
pname = "btcpayserver";
|
||||
version = "1.7.2";
|
||||
version = "1.7.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-EZ8gfpTBmTB/lGtexZYbD9x1F7rFXIEaEhhwS6gOEV4=";
|
||||
sha256 = "sha256-wjtiircPPQgWg1GGQsesEEeOF+h1+tc591YI0l/JlwQ=";
|
||||
};
|
||||
|
||||
projectFile = "BTCPayServer/BTCPayServer.csproj";
|
||||
|
|
19
pkgs/applications/blockchains/btcpayserver/deps.nix
generated
19
pkgs/applications/blockchains/btcpayserver/deps.nix
generated
|
@ -8,15 +8,15 @@
|
|||
(fetchNuGet { pname = "AWSSDK.S3"; version = "3.3.110.10"; sha256 = "1lf1hfbx792dpa1hxgn0a0jrrvldd16hgbxx229dk2qcz5qlnc38"; })
|
||||
(fetchNuGet { pname = "BIP78.Sender"; version = "0.2.2"; sha256 = "12pm2s35c0qzc06099q2z1pxwq94rq85n74yz8fs8gwvm2ksgp4p"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Hwi"; version = "2.0.2"; sha256 = "0lh3n1qncqs4kbrmx65xs271f0d9c7irrs9qnsa9q51cbbqbljh9"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.All"; version = "1.4.12"; sha256 = "1n7yv6q8fbk02d334a19zyicvlammjhfrg9rf18jyb3szj8g36k7"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.Charge"; version = "1.3.16"; sha256 = "050wh5gw3hgql8191z0yv7sj06wg5da6kvkbcg9hq3ildj0fdj67"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.CLightning"; version = "1.3.19"; sha256 = "1jx9233apry0kb54df7k0p7vrsp3hp27f5d0j2802gry04sihrl7"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.All"; version = "1.4.14"; sha256 = "1k5m6jc585hnkkl019diz2gycfnsv2kx4g4cfs4awlpr42k8s3ph"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.Charge"; version = "1.3.18"; sha256 = "0zpqi8dpk91sqg7njxbs64m9598fmmalcc1w97v60xlhp9afjmdb"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.CLightning"; version = "1.3.21"; sha256 = "0qq6ppr5vw4k8hjnz5xp29fc82z32vh6bc389dnr439gw7hmwkp9"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.Common"; version = "1.3.16"; sha256 = "1g37736b4k0ncpyy2qycbk4l85fqvgwac3k98nbdj0dvhfghp1dn"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.Common"; version = "1.3.17"; sha256 = "1bb8q57lnqnp3wijw41vvbwgz8rgg4g9pw8qhd4iiqi1w94q1bkz"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.Eclair"; version = "1.3.16"; sha256 = "1q109kmzj99axk35l68z3gi29ww1xd62zaxj1f39myvlcv9ncb41"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.LNBank"; version = "1.3.18"; sha256 = "166v6mhmy47fgny55c4mzqb2x7anqyxnd0g409vfgyg5fq4gc15v"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.LND"; version = "1.4.9"; sha256 = "0ya365w3i3sjv7wafm6wmasf9mpfsh0fcbhawsv5br7m7lpppwhh"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.LNDhub"; version = "1.0.12"; sha256 = "1gb61a5mdmyigy7ps2c8n4iig6i32rdsif9kwn35yxx25zbnmbk2"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.Common"; version = "1.3.19"; sha256 = "046vvlxlg8div4a2v6pnxz4iwji93s688jgnvav3hl6c22b9lvs0"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.Eclair"; version = "1.3.18"; sha256 = "04lp90rr61p7n39bfmia6jamgr0jjfns9987py64iazi236dl74g"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.LNBank"; version = "1.3.20"; sha256 = "1kwyh71zzfij07r6nvcf7k2gdpjdhh90imwh6s255ws13m1fj3sn"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.LND"; version = "1.4.11"; sha256 = "0zm0b45npacknir6b6a6v717kp3yz8hxv1qy2v65g2zp3ad2wij4"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.Lightning.LNDhub"; version = "1.0.14"; sha256 = "1hhznv07bd1f3rn9d1rpg61ln68vqfjg7ypxif9lx4l3vfcj5j04"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.NETCore.Plugins"; version = "1.4.4"; sha256 = "0rk0prmb0539ji5fd33cqy3yvw51i5i8m5hb43admr5z8960dd6l"; })
|
||||
(fetchNuGet { pname = "BTCPayServer.NETCore.Plugins.Mvc"; version = "1.4.4"; sha256 = "1kmmj5m7s41wc1akpqw1b1j7pp4c0vn6sqxb487980ibpj6hyisl"; })
|
||||
(fetchNuGet { pname = "CsvHelper"; version = "15.0.5"; sha256 = "01y8bhsnxghn3flz0pr11vj6wjrpmia8rpdrsp7kjfc1zmhqlgma"; })
|
||||
|
@ -125,7 +125,6 @@
|
|||
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "1.0.0"; sha256 = "1sh9bidmhy32gkz6fkli79mxv06546ybrzppfw5v2aq0bda1ghka"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "2.0.0"; sha256 = "1x5isi71z02khikzvm7vaschb006pqqrsv86ky1x08a4hir4s43h"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "2.1.0"; sha256 = "1gvgif1wcx4k6pv7gc00qv1hid945jdywy1s50s33q0hfd91hbnj"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "3.1.10"; sha256 = "1571q9iznbsmd7p87w420parmpdgi8zfjcs4kynmwv344dwdismz"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "3.1.5"; sha256 = "0lr22hlf52csrna9ly2lbz3y1agfgdlg7rvsqjg7ik488dhkmhji"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Logging.Abstractions"; version = "6.0.0"; sha256 = "0b75fmins171zi6bfdcq1kcvyrirs8n91mknjnxy4c3ygi1rrnj0"; })
|
||||
(fetchNuGet { pname = "Microsoft.Extensions.Options"; version = "2.0.0"; sha256 = "0g4zadlg73f507krilhaaa7h0jdga216syrzjlyf5fdk25gxmjqh"; })
|
||||
|
@ -158,7 +157,7 @@
|
|||
(fetchNuGet { pname = "NBitcoin"; version = "6.0.8"; sha256 = "1f90zyrd35fzx0vgvd83jhd6hczd4037h2k198xiyxj04l4m3wm5"; })
|
||||
(fetchNuGet { pname = "NBitcoin"; version = "7.0.1"; sha256 = "05kqpjyp3ckb2183g9vfsdv362y5xg5j21p36zls0x3b0jgrwxw7"; })
|
||||
(fetchNuGet { pname = "NBitcoin"; version = "7.0.18"; sha256 = "02kkgymdb80cidibrs6qpy1zjwcfbkwv9zqz9s0swf5zp7qvcakn"; })
|
||||
(fetchNuGet { pname = "NBitcoin"; version = "7.0.20"; sha256 = "0gl39v1mvnhdrqn8dmmslsyj4w4yc4l447zp62bfnwm5ppcwda9z"; })
|
||||
(fetchNuGet { pname = "NBitcoin"; version = "7.0.23"; sha256 = "10dy58gq644561svc67pm37rlb44mymbnlfz409dhclmfhmqmd5s"; })
|
||||
(fetchNuGet { pname = "NBitcoin.Altcoins"; version = "3.0.17"; sha256 = "1rqcfpcs3c7zqlw3fnvnyw3d3mmplg5nsaikm50lnzpl8z3cq936"; })
|
||||
(fetchNuGet { pname = "NBitpayClient"; version = "1.0.0.39"; sha256 = "1sgwradg7jnb4n3chwqfkximj1qhgl3r23p0sifmaa0kql2hlira"; })
|
||||
(fetchNuGet { pname = "NBXplorer.Client"; version = "4.2.2"; sha256 = "0a8zy9iasgmr7mqhjrbxa2shnygpp97pbg5qnk7ix50y01k9blyw"; })
|
||||
|
|
|
@ -8,5 +8,4 @@ echo "Updating nbxplorer"
|
|||
../nbxplorer/update.sh
|
||||
echo
|
||||
echo "Updating btcpayserver"
|
||||
# Include Razor SDK packages in deps.nix
|
||||
../nbxplorer/util/update-common.sh btcpayserver deps.nix '"/p:Configuration="Altcoins-Release" /p:RazorCompileOnBuild=false'
|
||||
../nbxplorer/util/update-common.sh btcpayserver deps.nix
|
||||
|
|
|
@ -3,4 +3,4 @@ set -euo pipefail
|
|||
|
||||
scriptDir=$(cd "${BASH_SOURCE[0]%/*}" && pwd)
|
||||
|
||||
getVersionFromTags=1 "$scriptDir"/util/update-common.sh nbxplorer "$scriptDir"/deps.nix ''
|
||||
getVersionFromTags=1 "$scriptDir"/util/update-common.sh nbxplorer "$scriptDir"/deps.nix
|
||||
|
|
|
@ -1,46 +0,0 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p dotnet-sdk_6
|
||||
set -euo pipefail
|
||||
|
||||
# Writes deps for dotnet package in $pkgSrc to $depsFile.
|
||||
# Expects $pkgSrc to contain a single .sln file.
|
||||
|
||||
pkgSrc=$1
|
||||
depsFile=$(realpath "$2")
|
||||
customFlags=$3
|
||||
|
||||
sln=$(cd "$pkgSrc"; find * -maxdepth 0 -name '*.sln' | head -1)
|
||||
[[ $sln ]] || { echo "No .sln file in $pkgSrc" ; exit 1; }
|
||||
|
||||
tmpdir=$(mktemp -d /tmp/$pkgName-src.XXX)
|
||||
echo "Using tmp dir: $tmpdir"
|
||||
cp -rT "$pkgSrc" "$tmpdir"
|
||||
chmod -R +w "$tmpdir"
|
||||
|
||||
pushd "$tmpdir" > /dev/null
|
||||
mkdir home
|
||||
echo "Running dotnet restore for $sln"
|
||||
HOME=home DOTNET_CLI_TELEMETRY_OPTOUT=1 \
|
||||
dotnet restore $customFlags -v normal --no-cache "$sln" > restore_log
|
||||
|
||||
echo "{ fetchNuGet }: [" > "$depsFile"
|
||||
while read pkgSpec; do
|
||||
{ read pname; read version; } < <(
|
||||
# Ignore build version part: 1.0.0-beta2+77df2220 -> 1.0.0-beta2
|
||||
sed -nE 's/.*<id>([^<]*).*/\1/p; s/.*<version>([^<+]*).*/\1/p' "$pkgSpec"
|
||||
)
|
||||
sha256=$(nix-hash --type sha256 --flat --base32 "$(dirname "$pkgSpec")"/*.nupkg)
|
||||
cat >> "$depsFile" <<EOF
|
||||
(fetchNuGet {
|
||||
pname = "$pname";
|
||||
version = "$version";
|
||||
sha256 = "$sha256";
|
||||
})
|
||||
EOF
|
||||
done < <(find home/.nuget/packages -name '*.nuspec' | LC_ALL=C sort)
|
||||
echo "]" >> "$depsFile"
|
||||
|
||||
echo "Created $depsFile"
|
||||
|
||||
popd > /dev/null
|
||||
rm -r $tmpdir
|
|
@ -10,7 +10,6 @@ trap 'echo "Error at ${BASH_SOURCE[0]}:$LINENO"' ERR
|
|||
|
||||
pkgName=$1
|
||||
depsFile=$2
|
||||
customFlags=$3
|
||||
|
||||
: ${getVersionFromTags:=}
|
||||
: ${refetch:=}
|
||||
|
@ -75,5 +74,4 @@ fi
|
|||
echo
|
||||
|
||||
# Create deps file
|
||||
storeSrc="$(nix-build "$nixpkgs" -A $pkgName.src --no-out-link)"
|
||||
. "$scriptDir"/create-deps.sh "$storeSrc" "$depsFile" "$customFlags"
|
||||
$(nix-build "$nixpkgs" -A $pkgName.fetch-deps --no-out-link) "$depsFile"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{ autoreconfHook, boost180, cargo, coreutils, curl, cxx-rs, db62, fetchFromGitHub
|
||||
, hexdump, hostPlatform, lib, libevent, libsodium, makeWrapper, rust, rustPlatform
|
||||
, hexdump, lib, libevent, libsodium, makeWrapper, rust, rustPlatform
|
||||
, pkg-config, Security, stdenv, testers, utf8cpp, util-linux, zcash, zeromq
|
||||
}:
|
||||
|
||||
|
@ -82,6 +82,6 @@ rustPlatform.buildRustPackage.override { inherit stdenv; } rec {
|
|||
license = licenses.mit;
|
||||
|
||||
# https://github.com/zcash/zcash/issues/4405
|
||||
broken = hostPlatform.isAarch64 && hostPlatform.isDarwin;
|
||||
broken = stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isDarwin;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -20,13 +20,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lightdm-slick-greeter";
|
||||
version = "1.6.0";
|
||||
version = "1.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = "slick-greeter";
|
||||
rev = version;
|
||||
sha256 = "sha256-XoGha0DyrtrGXW72Zvnk1FrvULPMYc0FvQj4JFSKxXo=";
|
||||
sha256 = "sha256-k/E3bR63kesHQ/we+ctC0UEYE5YdZ6Lv5lYuXqCOvKA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -56,6 +56,7 @@ stdenv.mkDerivation rec {
|
|||
substituteInPlace src/slick-greeter.vala \
|
||||
--replace "/usr/bin/numlockx" "${numlockx}/bin/numlockx" \
|
||||
--replace "/usr/share/xsessions/" "/run/current-system/sw/share/xsessions/" \
|
||||
--replace "/usr/share/wayland-sessions/" "/run/current-system/sw/share/wayland-sessions/" \
|
||||
--replace "/usr/bin/slick-greeter" "${placeholder "out"}/bin/slick-greeter"
|
||||
|
||||
substituteInPlace src/session-list.vala \
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
, alsa-lib, cairo, acl, gpm, m17n_lib, libotf
|
||||
, sigtool, jansson, harfbuzz, sqlite, nixosTests
|
||||
, recurseIntoAttrs, emacsPackagesFor
|
||||
, libgccjit, targetPlatform, makeWrapper # native-comp params
|
||||
, libgccjit, makeWrapper # native-comp params
|
||||
, fetchFromSavannah, fetchFromBitbucket
|
||||
|
||||
# macOS dependencies for NS and macPort
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{ stdenv, lib, makeDesktopItem
|
||||
, unzip, libsecret, libXScrnSaver, libxshmfence, wrapGAppsHook, makeWrapper
|
||||
, unzip, libsecret, libXScrnSaver, libxshmfence, buildPackages
|
||||
, atomEnv, at-spi2-atk, autoPatchelfHook
|
||||
, systemd, fontconfig, libdbusmenu, glib, buildFHSUserEnvBubblewrap, wayland
|
||||
|
||||
|
@ -72,7 +72,8 @@ let
|
|||
++ lib.optionals stdenv.isLinux [
|
||||
autoPatchelfHook
|
||||
nodePackages.asar
|
||||
(wrapGAppsHook.override { inherit makeWrapper; })
|
||||
# override doesn't preserve splicing https://github.com/NixOS/nixpkgs/issues/132651
|
||||
(buildPackages.wrapGAppsHook.override { inherit (buildPackages) makeWrapper; })
|
||||
];
|
||||
|
||||
dontBuild = true;
|
||||
|
|
|
@ -36,19 +36,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "hugin";
|
||||
version = "2021.0.0";
|
||||
version = "2022.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/hugin/hugin-${version}.tar.bz2";
|
||||
sha256 = "sha256-BHrqin+keESzTvJ8GdO2l+hJOdyx/bvrLCBGIbZu6tk=";
|
||||
sha256 = "sha256-l8hWKgupp0PguVWkPf3gSLHGDNnl8u4rad4agWRuBac=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# committed upstream but unreleased:
|
||||
# https://sourceforge.net/p/hugin/hugin/ci/edfddc6070ca6d4223d359fb4b38273a5aed2f2d
|
||||
./dont-crash-if-XDG_DATA_DIRS-not-set-edfddc6070ca6d4223d359fb4b38273a5aed2f2d.patch
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost
|
||||
cairo
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
--- a/src/hugin_base/hugin_utils/utils.cpp 2022-12-05 22:19:26.873574924 -0800
|
||||
+++ b/src/hugin_base/hugin_utils/utils.cpp 2022-12-05 22:19:09.069575641 -0800
|
||||
@@ -472,9 +472,9 @@
|
||||
#else
|
||||
#ifdef USE_XDG_DIRS
|
||||
char *xdgDataDir = getenv("XDG_DATA_HOME");
|
||||
- if (strlen(xdgDataDir) == 0)
|
||||
+ if (xdgDataDir == NULL || strlen(xdgDataDir) == 0)
|
||||
{
|
||||
- // no XDG_DATA_HOME enviroment variable set
|
||||
+ // no XDG_DATA_HOME enviroment variable set or empty variable
|
||||
// use $HOME/.local/share instead
|
||||
const std::string homeDir = GetHomeDir();
|
||||
if (homeDir.empty())
|
|
@ -1,5 +1,4 @@
|
|||
{ buildPackages
|
||||
, buildPlatform
|
||||
, fetchzip
|
||||
, javaOpts ? "-XX:+UseZGC"
|
||||
, jdk
|
||||
|
@ -23,7 +22,7 @@ stdenvNoCC.mkDerivation rec {
|
|||
nativeBuildInputs = [ jdk makeWrapper ];
|
||||
|
||||
LANG = "en_US.UTF-8";
|
||||
LOCALE_ARCHIVE = lib.optionalString (buildPlatform.libc == "glibc")
|
||||
LOCALE_ARCHIVE = lib.optionalString (stdenvNoCC.buildPlatform.libc == "glibc")
|
||||
"${buildPackages.glibcLocales}/lib/locale/locale-archive";
|
||||
|
||||
buildPhase = ''
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "AusweisApp2";
|
||||
version = "1.24.4";
|
||||
version = "1.26.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Governikus";
|
||||
repo = "AusweisApp2";
|
||||
rev = version;
|
||||
sha256 = "sha256-YO0K8L03n/KQcINRKwls8BxG8nv5k3Myd95AU8agigI=";
|
||||
sha256 = "sha256-Q+ZWnbYH80FMazKB1iSTh9cuYvuPom+qDjMZvC1gUoY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
let
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
pname = "obsidian";
|
||||
version = "1.0.3";
|
||||
version = "1.1.9";
|
||||
appname = "Obsidian";
|
||||
meta = with lib; {
|
||||
description = "A powerful knowledge base that works on top of a local folder of plain text Markdown files";
|
||||
|
@ -25,7 +25,7 @@ let
|
|||
filename = if stdenv.isDarwin then "Obsidian-${version}-universal.dmg" else "obsidian-${version}.tar.gz";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/obsidianmd/obsidian-releases/releases/download/v${version}/${filename}";
|
||||
sha256 = if stdenv.isDarwin then "sha256-DYF9fEpZaP4tD/eeZAegDahR7UZyroqNB9bn2U7sgXs=" else "sha256-MpQk5g4184ZkCAjLU5Ug0ReWgVADskS1QuMcnPdNofs=";
|
||||
sha256 = if stdenv.isDarwin then "sha256-x+9WG938YQFP/HF7B9xENOXFSdOrPFOJ1ufxXj3kXps=" else "sha256-dFR7LaDRJwpxrNyPNseGi66gIAHOKf5Au2VXl7SBGSE=";
|
||||
};
|
||||
|
||||
icon = fetchurl {
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "oxker";
|
||||
version = "0.1.10";
|
||||
version = "0.1.11";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit pname version;
|
||||
sha256 = "sha256-2NX2iW3cT9027j2gUsDTtdIFDmJKIGPfSzrGGwvK/VA=";
|
||||
sha256 = "sha256-O4fVEYstDkVHn7fBVOGu1ok9K9xiO9uLx0+vb6qMZoA=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-//GI+roOsCLkKgMDUDK0YhJWmeIaYCMBt9r14+Rz8UQ=";
|
||||
cargoHash = "sha256-LSMAE24E8Is/ejUE/2vogP0GmpF+9oO2pJoQOZ8OfU8=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A simple tui to view & control docker containers";
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
From http://seclists.org/oss-sec/2014/q3/495 (with whitespace corrected).
|
||||
|
||||
--- a/src/formisc.c 2013-08-04 00:13:33.000000000 -0700
|
||||
+++ b/src/formisc.c 2014-09-03 11:42:25.986002396 -0700
|
||||
@@ -84,12 +84,11 @@
|
||||
case '"':*target++=delim='"';start++;
|
||||
}
|
||||
;{ int i;
|
||||
- do
|
||||
+ while(*start)
|
||||
if((i= *target++= *start++)==delim) /* corresponding delimiter? */
|
||||
break;
|
||||
else if(i=='\\'&&*start) /* skip quoted character */
|
||||
*target++= *start++;
|
||||
- while(*start); /* anything? */
|
||||
}
|
||||
hitspc=2;
|
||||
}
|
|
@ -2,22 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "procmail";
|
||||
version = "3.22";
|
||||
version = "3.24";
|
||||
|
||||
src = fetchurl {
|
||||
url = "ftp://ftp.fu-berlin.de/pub/unix/mail/procmail/procmail-${version}.tar.gz";
|
||||
sha256 = "05z1c803n5cppkcq99vkyd5myff904lf9sdgynfqngfk9nrpaz08";
|
||||
url = "https://github.com/BuGlessRB/procmail/archive/refs/tags/v${version}.tar.gz";
|
||||
sha256 = "UU6kMzOXg+ld+TIeeUdx5Ih7mCOsVf2yRpcCz2m9OYk=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./CVE-2014-3618.patch
|
||||
(fetchurl {
|
||||
url = "https://sources.debian.org/data/main/p/procmail/3.22-26/debian/patches/30";
|
||||
sha256 = "11zmz1bj0v9pay3ldmyyg7473b80h89gycrhndsgg9q50yhcqaaq";
|
||||
name = "CVE-2017-16844";
|
||||
})
|
||||
];
|
||||
|
||||
# getline is defined differently in glibc now. So rename it.
|
||||
# Without the .PHONY target "make install" won't install anything on Darwin.
|
||||
postPatch = ''
|
||||
|
@ -33,7 +24,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
meta = with lib; {
|
||||
description = "Mail processing and filtering utility";
|
||||
homepage = "http://www.procmail.org/";
|
||||
homepage = "https://github.com/BuGlessRB/procmail/";
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ gebner ];
|
||||
|
|
|
@ -1,12 +1,21 @@
|
|||
{ lib
|
||||
, stdenvNoCC
|
||||
, fetchFromGitHub
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
makeWrapper,
|
||||
curl,
|
||||
feh,
|
||||
file,
|
||||
jq,
|
||||
util-linux,
|
||||
wget,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "stylish";
|
||||
version = "unstable-2022-12-05";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "thevinter";
|
||||
repo = "styli.sh";
|
||||
|
@ -22,6 +31,17 @@ stdenvNoCC.mkDerivation rec {
|
|||
runHook postInstall
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/styli.sh --prefix PATH : ${lib.makeBinPath [
|
||||
curl
|
||||
feh
|
||||
file
|
||||
jq
|
||||
util-linux
|
||||
wget
|
||||
]}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/thevinter/styli.sh";
|
||||
description = "A shell script to manage wallpapers";
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "tut";
|
||||
version = "1.0.30";
|
||||
version = "1.0.34";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "RasmusLindroth";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-Cr9aDfreTDeFV5mws29pYRUkUjHVcLGEZyUvZYAp3B8=";
|
||||
sha256 = "sha256-AnuPTv9W+2yDcM803DZaNIn4S7A78JEv6S8pA18whVA=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-ECaePGmSaf0vuKbvgdUMOF8oCpc14srFFMmPJPFFqw4=";
|
||||
vendorHash = "sha256-go7eZHhrQ1ZcLOn56a3Azn3eRyAesAkgLabPbwzKtds=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A TUI for Mastodon with vim inspired keys";
|
||||
|
|
|
@ -1,28 +1,27 @@
|
|||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
zig,
|
||||
wayland,
|
||||
pkg-config,
|
||||
scdoc,
|
||||
wayland-protocols,
|
||||
libxkbcommon,
|
||||
pam,
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, zig
|
||||
, wayland
|
||||
, pkg-config
|
||||
, scdoc
|
||||
, wayland-protocols
|
||||
, libxkbcommon
|
||||
, pam
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "waylock";
|
||||
version = "0.4.2";
|
||||
version = "0.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ifreund";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-yWjWcnGa4a+Dpc82H65yr8H7v88g/tDq0FSguubhbEI=";
|
||||
hash = "sha256-AujBvDy10e5HhezCQcXpBUVlktRKNseLxRKdI+gtH6w=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [zig wayland scdoc pkg-config];
|
||||
nativeBuildInputs = [ zig wayland scdoc pkg-config ];
|
||||
|
||||
buildInputs = [
|
||||
wayland-protocols
|
||||
|
@ -38,7 +37,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
zig build -Drelease-safe -Dman-pages --prefix $out install
|
||||
zig build -Drelease-safe -Dman-pages -Dcpu=baseline --prefix $out install
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
|
@ -47,6 +46,6 @@ stdenv.mkDerivation rec {
|
|||
description = "A small screenlocker for Wayland compositors";
|
||||
license = licenses.isc;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [jordanisaacs];
|
||||
maintainers = with maintainers; [ jordanisaacs ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,16 +2,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "roxctl";
|
||||
version = "3.72.2";
|
||||
version = "3.73.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "stackrox";
|
||||
repo = "stackrox";
|
||||
rev = version;
|
||||
sha256 = "sha256-qw45Ifp8JcJyKaKL1St0HAQGS7JiUestiPGyZcV3gx8=";
|
||||
sha256 = "sha256-A/jEw29c2WbBlPZZACjI3NjM7a0JxCEob8GOoGx13Hs=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-FmpnRgU3w2zthgUJuAG5AqLl2UxMb0yywN5Sk9WoWBI=";
|
||||
vendorHash = "sha256-YRNOOn/Ei0rHLZrTtQxlBBn48pePDHllnI65Iil160k=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
|
|
@ -10,13 +10,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "werf";
|
||||
version = "1.2.193";
|
||||
version = "1.2.195";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "werf";
|
||||
repo = "werf";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-4q+LtPwJa3gioOY90gUfCL4F/8jmtfkBKxBShg2xQas=";
|
||||
hash = "sha256-rNhCZO4Axeuc5jEAndjma7/jnst1kDNdtb/h/jD2rtE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-GjcmpHyjhjCWE5gQR/oTHfhHYg5WRu8uhgAuWhdxlYk=";
|
||||
|
|
|
@ -31,7 +31,7 @@ rustPlatform.buildRustPackage rec {
|
|||
++ lib.optionals stdenv.isDarwin [ Security Foundation libiconv gettext ];
|
||||
|
||||
postBuild = ''
|
||||
make prefix="$out"
|
||||
make -j $NIX_BUILD_CORES prefix="$out"
|
||||
'';
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/pull/98471#issuecomment-703100014 . We set
|
||||
|
@ -44,11 +44,11 @@ rustPlatform.buildRustPackage rec {
|
|||
doCheck = true;
|
||||
|
||||
preCheck = ''
|
||||
make test
|
||||
make -j $NIX_BUILD_CORES test
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
make prefix="$out" install
|
||||
make -j $NIX_BUILD_CORES prefix="$out" install
|
||||
'' + lib.optionalString stdenv.isDarwin ''
|
||||
for prog in $out/bin/*; do
|
||||
wrapProgram "$prog" --prefix DYLD_LIBRARY_PATH : "${stfl}/lib"
|
||||
|
|
|
@ -43,7 +43,7 @@ let
|
|||
rev = "v${version}";
|
||||
hash = "sha256-qCtpy69ROCspRgPKmCV0YY/EOSWiNU/xwDblU0bQp4w=";
|
||||
};
|
||||
vendorSha256 = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
|
||||
vendorHash = "sha256-+BfxCyg0KkDQpHt/wycy/8CTG6YBA/VJvJFhhzUnSiQ=";
|
||||
});
|
||||
};
|
||||
in buildNpmPackage rec {
|
||||
|
|
|
@ -22,11 +22,11 @@
|
|||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "gajim";
|
||||
version = "1.5.4";
|
||||
version = "1.6.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://gajim.org/downloads/${lib.versions.majorMinor version}/gajim-${version}.tar.gz";
|
||||
sha256 = "sha256-uIzOKiCbHiSVRlXcpE0B/+Ats3cfw4u7eA+KyPriwhk=";
|
||||
hash = "sha256-gHRB3thDH+CKRXTgrD37e2zf0rVDIVl4Zhxf5lsLjyc=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
let
|
||||
pname = "zulip";
|
||||
version = "5.9.4";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/zulip/zulip-desktop/releases/download/v${version}/Zulip-${version}-x86_64.AppImage";
|
||||
|
@ -15,14 +14,14 @@ let
|
|||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
inherit name src;
|
||||
inherit pname version src;
|
||||
};
|
||||
|
||||
in appimageTools.wrapType2 {
|
||||
inherit name src;
|
||||
inherit pname version src;
|
||||
|
||||
extraInstallCommands = ''
|
||||
mv $out/bin/${name} $out/bin/${pname}
|
||||
mv "$out/bin/${pname}-${version}" "$out/bin/${pname}"
|
||||
install -m 444 -D ${appimageContents}/zulip.desktop $out/share/applications/zulip.desktop
|
||||
install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/512x512/apps/zulip.png \
|
||||
$out/share/icons/hicolor/512x512/apps/zulip.png
|
||||
|
|
|
@ -36,14 +36,14 @@ let
|
|||
in
|
||||
assert lib.all (p: p.enabled -> ! (builtins.elem null p.buildInputs)) plugins;
|
||||
stdenv.mkDerivation rec {
|
||||
version = "3.7.1";
|
||||
version = "3.8";
|
||||
pname = "weechat";
|
||||
|
||||
hardeningEnable = [ "pie" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://weechat.org/files/src/weechat-${version}.tar.bz2";
|
||||
hash = "sha256-ZtJi1NhE1agZWnAv6FCUeO1GDtuQnLTraA5nkwWiCqs=";
|
||||
hash = "sha256-objxAUGvBhTkbQl4GshDP3RsCkAW4z917L9WyaVoYj4=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "man" ] ++ map (p: p.name) enabledPlugins;
|
||||
|
|
|
@ -1,4 +1,12 @@
|
|||
{ lib, stdenv, fetchFromGitHub, openssl, libsamplerate, alsa-lib, AppKit }:
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, openssl
|
||||
, libsamplerate
|
||||
, alsa-lib
|
||||
, AppKit
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pjsip";
|
||||
|
@ -13,6 +21,16 @@ stdenv.mkDerivation rec {
|
|||
|
||||
patches = [
|
||||
./fix-aarch64.patch
|
||||
(fetchpatch {
|
||||
name = "CVE-2022-23537.patch";
|
||||
url = "https://github.com/pjsip/pjproject/commit/d8440f4d711a654b511f50f79c0445b26f9dd1e1.patch";
|
||||
sha256 = "sha256-7ueQCHIiJ7MLaWtR4+GmBc/oKaP+jmEajVnEYqiwLRA=";
|
||||
})
|
||||
(fetchpatch {
|
||||
name = "CVE-2022-23547.patch";
|
||||
url = "https://github.com/pjsip/pjproject/commit/bc4812d31a67d5e2f973fbfaf950d6118226cf36.patch";
|
||||
sha256 = "sha256-bpc8e8VAQpfyl5PX96G++6fzkFpw3Or1PJKNPKl7N5k=";
|
||||
})
|
||||
];
|
||||
|
||||
buildInputs = [ openssl libsamplerate ]
|
||||
|
|
|
@ -7,13 +7,13 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "seaweedfs";
|
||||
version = "3.38";
|
||||
version = "3.39";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "seaweedfs";
|
||||
repo = "seaweedfs";
|
||||
rev = version;
|
||||
hash = "sha256-LYMGkv1rgUtA/TwulBhgw0w+8kbICtEgr7/K6exalxM=";
|
||||
hash = "sha256-mbeTdrKptPaMw1OA3jFftjJPOmUnJcjbv81yDSlFeaU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-mwfs/tdq1Qq2auEwz24emf7pjpIJAncI78oxhAn2WkI=";
|
||||
|
|
23
pkgs/applications/office/gnucash/0004-exec-fq-helpers.patch
Normal file
23
pkgs/applications/office/gnucash/0004-exec-fq-helpers.patch
Normal file
|
@ -0,0 +1,23 @@
|
|||
diff --git a/gnucash/price-quotes.scm b/gnucash/price-quotes.scm
|
||||
index 8e3ff255f..a6b805fa5 100644
|
||||
--- a/gnucash/price-quotes.scm
|
||||
+++ b/gnucash/price-quotes.scm
|
||||
@@ -44,7 +44,7 @@
|
||||
(define (start-program)
|
||||
(set! program
|
||||
(gnc-spawn-process-async
|
||||
- (list "perl" "-w" gnc:*finance-quote-check*) #t)))
|
||||
+ (list gnc:*finance-quote-check*) #t)))
|
||||
|
||||
(define (get-sources)
|
||||
(when program
|
||||
@@ -119,7 +119,7 @@
|
||||
|
||||
(define (start-quoter)
|
||||
(set! quoter
|
||||
- (gnc-spawn-process-async (list "perl" "-w" gnc:*finance-quote-helper*) #t)))
|
||||
+ (gnc-spawn-process-async (list gnc:*finance-quote-helper*) #t)))
|
||||
|
||||
(define (get-quotes)
|
||||
(when quoter
|
||||
|
|
@ -72,6 +72,8 @@ stdenv.mkDerivation rec {
|
|||
./0002-disable-gnc-fq-update.patch
|
||||
# this patch prevents the building of gnucash-valgrind
|
||||
./0003-remove-valgrind.patch
|
||||
# this patch makes gnucash exec the Finance::Quote helpers directly
|
||||
./0004-exec-fq-helpers.patch
|
||||
];
|
||||
|
||||
# this needs to be an environment variable and not a cmake flag to suppress
|
||||
|
|
|
@ -1,29 +1,66 @@
|
|||
{ mkDerivation, lib, stdenv, fetchurl
|
||||
, qmake, qttools, qtbase, qtsvg, qtdeclarative, qtxmlpatterns, qtwebsockets
|
||||
, qtx11extras, qtwayland
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, qmake
|
||||
, qttools
|
||||
, qtbase
|
||||
, qtdeclarative
|
||||
, qtsvg
|
||||
, qtwayland
|
||||
, qtwebsockets
|
||||
, qtx11extras
|
||||
, qtxmlpatterns
|
||||
, makeWrapper
|
||||
, wrapQtAppsHook
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
let
|
||||
pname = "qownnotes";
|
||||
version = "22.12.3";
|
||||
appname = "QOwnNotes";
|
||||
version = "23.1.0";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
inherit pname appname version;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.tuxfamily.org/${pname}/src/${pname}-${version}.tar.xz";
|
||||
# Fetch the checksum of current version with curl:
|
||||
# curl https://download.tuxfamily.org/qownnotes/src/qownnotes-<version>.tar.xz.sha256
|
||||
sha256 = "sha256-fpI7RYOGmWwmau6tF8FPmY2/FtN9foWRX8/WgrNU6E8=";
|
||||
sha256 = "sha256-HMs8DTL2BDSDmchadpVvbShjJMPP6W587F38uiixCuQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake qttools ];
|
||||
nativeBuildInputs = [
|
||||
qmake
|
||||
qttools
|
||||
wrapQtAppsHook
|
||||
] ++ lib.optionals stdenv.isDarwin [ makeWrapper ];
|
||||
|
||||
buildInputs = [ qtbase qtsvg qtdeclarative qtxmlpatterns qtwebsockets qtx11extras ]
|
||||
++ lib.optionals stdenv.isLinux [ qtwayland ];
|
||||
buildInputs = [
|
||||
qtbase
|
||||
qtdeclarative
|
||||
qtsvg
|
||||
qtwebsockets
|
||||
qtx11extras
|
||||
qtxmlpatterns
|
||||
] ++ lib.optionals stdenv.isLinux [ qtwayland ];
|
||||
|
||||
postInstall =
|
||||
# Create a lowercase symlink for Linux
|
||||
lib.optionalString stdenv.isLinux ''
|
||||
ln -s $out/bin/${appname} $out/bin/${pname}
|
||||
''
|
||||
# Wrap application for macOS as lowercase binary
|
||||
+ lib.optionalString stdenv.isDarwin ''
|
||||
mkdir -p $out/Applications
|
||||
mv $out/bin/${appname}.app $out/Applications
|
||||
makeWrapper $out/Applications/${appname}.app/Contents/MacOS/${appname} $out/bin/${pname}
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Plain-text file notepad and todo-list manager with markdown support and Nextcloud/ownCloud integration";
|
||||
homepage = "https://www.qownnotes.org/";
|
||||
changelog = "https://www.qownnotes.org/changelog.html";
|
||||
downloadPage = "https://github.com/pbek/QOwnNotes/releases/tag/v${version}";
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = with maintainers; [ totoroot ];
|
||||
platforms = platforms.linux;
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ANTs";
|
||||
version = "2.4.2";
|
||||
version = "2.4.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ANTsX";
|
||||
repo = "ANTs";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-edkvTkgBNaC87Q0N/Fsebr9nRLMhDo4mrSGoMICdnwU=";
|
||||
sha256 = "sha256-S4HYhsqof27UXEYjKvbod8N7PkZDmwLdwcEAvJD0W5g=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake makeWrapper ];
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
, alex
|
||||
, happy
|
||||
, Agda
|
||||
, buildPlatform
|
||||
, buildPackages
|
||||
, ghcWithPackages
|
||||
}:
|
||||
|
@ -30,7 +29,7 @@ stdenv.mkDerivation rec {
|
|||
|
||||
LANG = "en_US.UTF-8";
|
||||
LOCALE_ARCHIVE =
|
||||
lib.optionalString (buildPlatform.libc == "glibc")
|
||||
lib.optionalString (stdenv.buildPlatform.libc == "glibc")
|
||||
"${buildPackages.glibcLocales}/lib/locale/locale-archive";
|
||||
|
||||
postPatch = ''
|
||||
|
|
|
@ -1,18 +1,40 @@
|
|||
{ lib, stdenv, fetchurl, ocamlPackages }:
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, autoreconfHook
|
||||
, which
|
||||
, ocamlPackages
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cubicle";
|
||||
version = "1.1.2";
|
||||
version = "1.2.0";
|
||||
src = fetchurl {
|
||||
url = "http://cubicle.lri.fr/cubicle-${version}.tar.gz";
|
||||
sha256 = "10kk80jdmpdvql88sdjsh7vqzlpaphd8vip2lp47aarxjkwjlz1q";
|
||||
url = "https://github.com/cubicle-model-checker/cubicle/archive/refs/tags/${version}.tar.gz";
|
||||
hash = "sha256-/EtbXpyXqRm0jGcMfGLAEwdr92061edjFys1V7/w6/Y=";
|
||||
};
|
||||
|
||||
# https://github.com/cubicle-model-checker/cubicle/issues/1
|
||||
postPatch = ''
|
||||
substituteInPlace Makefile.in --replace "\\n" ""
|
||||
substituteInPlace Makefile.in \
|
||||
--replace "@OCAMLC@" "ocamlfind ocamlc -package num" \
|
||||
--replace "@OCAMLOPT@" "ocamlfind ocamlopt -package num"
|
||||
'';
|
||||
|
||||
buildInputs = with ocamlPackages; [ ocaml findlib functory ];
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoreconfHook
|
||||
which
|
||||
] ++ (with ocamlPackages; [
|
||||
findlib
|
||||
ocaml
|
||||
]);
|
||||
|
||||
buildInputs = with ocamlPackages; [
|
||||
functory
|
||||
num
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "An open source model checker for verifying safety properties of array-based systems";
|
||||
|
|
|
@ -1,15 +1,17 @@
|
|||
{ lib, stdenv, fetchurl, cmake, blas, lapack, gfortran, gmm, fltk, libjpeg
|
||||
, zlib, libGL, libGLU, xorg, opencascade-occt }:
|
||||
, zlib, libGL, libGLU, xorg, opencascade-occt
|
||||
, python ? null, enablePython ? false }:
|
||||
|
||||
assert (!blas.isILP64) && (!lapack.isILP64);
|
||||
assert enablePython -> (python != null);
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gmsh";
|
||||
version = "4.11.0";
|
||||
version = "4.11.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://gmsh.info/src/gmsh-${version}-source.tgz";
|
||||
sha256 = "sha256-PPLyRFXuCSUsmeZNTmRilW5o8P8fN7rKC3jICdbMVXo=";
|
||||
sha256 = "sha256-xf4bfL1AOIioFJKfL9D11p4nYAIioYx4bbW3boAFs2U=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
@ -18,10 +20,31 @@ stdenv.mkDerivation rec {
|
|||
libGL libGLU xorg.libXrender xorg.libXcursor xorg.libXfixes
|
||||
xorg.libXext xorg.libXft xorg.libXinerama xorg.libX11 xorg.libSM
|
||||
xorg.libICE
|
||||
] ++ lib.optional enablePython python;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
patches = [ ./fix-python.patch ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace api/gmsh.py --subst-var-by LIBPATH ${placeholder "out"}/lib/libgmsh.so
|
||||
'';
|
||||
|
||||
# N.B. the shared object is used by bindings
|
||||
cmakeFlags = [
|
||||
"-DENABLE_BUILD_SHARED=ON"
|
||||
"-DENABLE_BUILD_DYNAMIC=ON"
|
||||
"-DENABLE_OPENMP=ON"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake gfortran ];
|
||||
|
||||
postFixup = lib.optionalString enablePython ''
|
||||
mkdir -p $out/lib/python${python.pythonVersion}/site-packages
|
||||
mv $out/lib/gmsh.py $out/lib/python${python.pythonVersion}/site-packages
|
||||
mv $out/lib/*.dist-info $out/lib/python${python.pythonVersion}/site-packages
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
|
|
50
pkgs/applications/science/math/gmsh/fix-python.patch
Normal file
50
pkgs/applications/science/math/gmsh/fix-python.patch
Normal file
|
@ -0,0 +1,50 @@
|
|||
diff --git a/api/gmsh.py b/api/gmsh.py
|
||||
index 747acb203..02004da5d 100644
|
||||
--- a/api/gmsh.py
|
||||
+++ b/api/gmsh.py
|
||||
@@ -44,44 +44,7 @@ moduledir = os.path.dirname(os.path.realpath(__file__))
|
||||
parentdir1 = os.path.dirname(moduledir)
|
||||
parentdir2 = os.path.dirname(parentdir1)
|
||||
|
||||
-if platform.system() == "Windows":
|
||||
- libname = "gmsh-4.11.dll"
|
||||
-elif platform.system() == "Darwin":
|
||||
- libname = "libgmsh.4.11.dylib"
|
||||
-else:
|
||||
- libname = "libgmsh.so.4.11"
|
||||
-
|
||||
-# check if the library is in the same directory as the module...
|
||||
-libpath = os.path.join(moduledir, libname)
|
||||
-
|
||||
-# ... or in the parent directory or its lib or Lib subdirectory
|
||||
-if not os.path.exists(libpath):
|
||||
- libpath = os.path.join(parentdir1, libname)
|
||||
-if not os.path.exists(libpath):
|
||||
- libpath = os.path.join(parentdir1, "lib", libname)
|
||||
-if not os.path.exists(libpath):
|
||||
- libpath = os.path.join(parentdir1, "Lib", libname)
|
||||
-
|
||||
-# ... or in the parent of the parent directory or its lib or Lib subdirectory
|
||||
-if not os.path.exists(libpath):
|
||||
- libpath = os.path.join(parentdir2, libname)
|
||||
-if not os.path.exists(libpath):
|
||||
- libpath = os.path.join(parentdir2, "lib", libname)
|
||||
-if not os.path.exists(libpath):
|
||||
- libpath = os.path.join(parentdir2, "Lib", libname)
|
||||
-
|
||||
-# if we couldn't find it, use ctype's find_library utility...
|
||||
-if not os.path.exists(libpath):
|
||||
- if platform.system() == "Windows":
|
||||
- libpath = find_library("gmsh-4.11")
|
||||
- if not libpath:
|
||||
- libpath = find_library("gmsh")
|
||||
- else:
|
||||
- libpath = find_library("gmsh")
|
||||
-
|
||||
-# ... and print a warning if everything failed
|
||||
-if not os.path.exists(libpath):
|
||||
- print("Warning: could not find Gmsh shared library " + libname)
|
||||
+libpath = "@LIBPATH@"
|
||||
|
||||
lib = CDLL(libpath)
|
||||
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, stdenv, fetchFromGitHub, intltool, pkg-config, qmake, wrapQtAppsHook, libqalculate, qtbase, qttools }:
|
||||
{ lib, stdenv, fetchFromGitHub, intltool, pkg-config, qmake, wrapQtAppsHook, libqalculate, qtbase, qttools, qtsvg, qtwayland }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "qalculate-qt";
|
||||
|
@ -8,11 +8,16 @@ stdenv.mkDerivation rec {
|
|||
owner = "qalculate";
|
||||
repo = "qalculate-qt";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-1MU/Wici+NQWbjoNpE9q6jKx8aKt85OAfb+ZsN/oK5w=";
|
||||
hash = "sha256-1MU/Wici+NQWbjoNpE9q6jKx8aKt85OAfb+ZsN/oK5w=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake intltool pkg-config wrapQtAppsHook ];
|
||||
buildInputs = [ libqalculate qtbase qttools ];
|
||||
buildInputs = [ libqalculate qtbase qttools qtsvg qtwayland ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace qalculate-qt.pro\
|
||||
--replace "LRELEASE" "${qttools.dev}/bin/lrelease"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "The ultimate desktop calculator";
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "subgit";
|
||||
version = "3.3.15";
|
||||
version = "3.3.16";
|
||||
|
||||
meta = {
|
||||
description = "A tool for a smooth, stress-free SVN to Git migration";
|
||||
|
@ -22,6 +22,6 @@ stdenv.mkDerivation rec {
|
|||
|
||||
src = fetchurl {
|
||||
url = "https://subgit.com/download/subgit-${version}.zip";
|
||||
sha256 = "sha256-2/J/d4GrlLXR/7QBxgIMepzP+xxkeLvrCBwLl7Ke8wI=";
|
||||
sha256 = "sha256-p7uBEG43N4Hed+8HYf3I9lQEvmYLV61oIyRrPHuGmUA=";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
, cacert
|
||||
, curl
|
||||
, runCommandLocal
|
||||
, targetPlatform
|
||||
, unzip
|
||||
, appimage-run
|
||||
, addOpenGLRunpath
|
||||
|
@ -49,7 +48,7 @@ let
|
|||
SITEURL = "https://www.blackmagicdesign.com/api/register/us/download/${DOWNLOADID}";
|
||||
|
||||
USERAGENT = builtins.concatStringsSep " " [
|
||||
"User-Agent: Mozilla/5.0 (X11; Linux ${targetPlatform.linuxArch})"
|
||||
"User-Agent: Mozilla/5.0 (X11; Linux ${stdenv.targetPlatform.linuxArch})"
|
||||
"AppleWebKit/537.36 (KHTML, like Gecko)"
|
||||
"Chrome/77.0.3865.75"
|
||||
"Safari/537.36"
|
||||
|
|
81
pkgs/applications/video/glaxnimate/default.nix
Normal file
81
pkgs/applications/video/glaxnimate/default.nix
Normal file
|
@ -0,0 +1,81 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitLab
|
||||
, cmake
|
||||
, zlib
|
||||
, potrace
|
||||
, ffmpeg
|
||||
, libarchive
|
||||
, python3
|
||||
, qtbase
|
||||
, qttools
|
||||
, wrapQtAppsHook
|
||||
, testers
|
||||
, qtsvg
|
||||
, qtimageformats
|
||||
# For the tests
|
||||
, glaxnimate # Call itself, for the tests
|
||||
, xvfb-run
|
||||
}:
|
||||
let
|
||||
# TODO: try to add a python library, see toPythonModule in doc/languages-frameworks/python.section.md
|
||||
python3WithLibs = python3.withPackages (ps: with ps; [
|
||||
# In data/lib/python-lottie/requirements.txt
|
||||
numpy
|
||||
pillow
|
||||
cairosvg
|
||||
fonttools
|
||||
grapheme
|
||||
opencv4
|
||||
pyqt5
|
||||
qscintilla
|
||||
# Not sure if needed, but appears in some files
|
||||
pyyaml
|
||||
requests
|
||||
pybind11
|
||||
]);
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "glaxnimate";
|
||||
version = "0.5.1";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "mattbas";
|
||||
repo = "${pname}";
|
||||
rev = "${version}";
|
||||
sha256 = "G4ykcOvXXnVIQZUYpRIrALtDSsGqxMvDtcmobjjtlKw=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
wrapQtAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
zlib
|
||||
potrace
|
||||
# Upstream asks for libav dependency, which is fulfilled by ffmpeg
|
||||
ffmpeg
|
||||
libarchive
|
||||
qtbase
|
||||
qttools
|
||||
qtsvg
|
||||
qtimageformats
|
||||
python3WithLibs
|
||||
];
|
||||
|
||||
qtWrapperArgs = [ ''--prefix PATH : ${python3WithLibs}/bin'' ];
|
||||
|
||||
passthru.tests.version = testers.testVersion {
|
||||
package = glaxnimate;
|
||||
command = "${xvfb-run}/bin/xvfb-run glaxnimate --version";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://gitlab.com/mattbas/glaxnimate";
|
||||
description = "Simple vector animation program.";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ tobiasBora ];
|
||||
};
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, callPackage
|
||||
, buildPackages
|
||||
, hostPlatform
|
||||
}:
|
||||
|
||||
let
|
||||
|
@ -34,9 +34,9 @@ let
|
|||
};
|
||||
in
|
||||
(
|
||||
if hostPlatform.system == "aarch64-darwin" then aarch64-dmg
|
||||
else if hostPlatform.isDarwin then x86_64-dmg
|
||||
else if hostPlatform.isCygwin then x86_64-windows
|
||||
if stdenv.hostPlatform.system == "aarch64-darwin" then aarch64-dmg
|
||||
else if stdenv.hostPlatform.isDarwin then x86_64-dmg
|
||||
else if stdenv.hostPlatform.isCygwin then x86_64-windows
|
||||
else x86_64-appimage
|
||||
).overrideAttrs
|
||||
(oldAttrs: {
|
||||
|
|
|
@ -17,19 +17,19 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pods";
|
||||
version = "1.0.1";
|
||||
version = "1.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "marhkb";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-oa7A0RMF7kPQXydysGpzAICgGoIRLWUMRibXdiftYyk=";
|
||||
sha256 = "sha256-Kjonyd0xL0QLjPS+U3xDC6AhOOxQmVAZ3STLXaa8eXc=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
name = "${pname}-${version}";
|
||||
sha256 = "sha256-RMxk7e/z+YneNWI/xsZDmXr7DqB7qHEY8HPvTCeSLjg=";
|
||||
sha256 = "sha256-K5oOpo3xJiNg7F549JLGs83658MYcoGfuIcNoF88Njc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
48
pkgs/applications/virtualization/youki/default.nix
Normal file
48
pkgs/applications/virtualization/youki/default.nix
Normal file
|
@ -0,0 +1,48 @@
|
|||
{ lib
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, installShellFiles
|
||||
, dbus
|
||||
, libseccomp
|
||||
, systemd
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "youki";
|
||||
version = "0.0.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "containers";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-XwapCfu6Me0xSe+qFz9BFRYpQvG+ztb6QyhGejYRPb4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config installShellFiles ];
|
||||
|
||||
buildInputs = [ dbus libseccomp systemd ];
|
||||
|
||||
postInstall = ''
|
||||
installShellCompletion --cmd youki \
|
||||
--bash <($out/bin/youki completion -s bash) \
|
||||
--fish <($out/bin/youki completion -s fish) \
|
||||
--zsh <($out/bin/youki completion -s zsh)
|
||||
'';
|
||||
|
||||
cargoBuildFlags = [ "-p" "youki" ];
|
||||
cargoTestFlags = [ "-p" "youki" ];
|
||||
|
||||
cargoSha256 = "sha256-PT1kVo4gQFH9sIprEoAioNvDL/soMHcA2utEiQJPS/0=";
|
||||
|
||||
doCheck = false; # test failed
|
||||
|
||||
meta = with lib; {
|
||||
description = "A container runtime written in Rust";
|
||||
homepage = "https://containers.github.io/youki/";
|
||||
changelog = "https://github.com/containers/youki/releases/tag/v${version}";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ candyc1oud ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -190,7 +190,13 @@ stdenvNoCC.mkDerivation (args // {
|
|||
esac
|
||||
done
|
||||
|
||||
export tmp=$(mktemp -td "${pname}-tmp-XXXXXX")
|
||||
if [[ ''${TMPDIR:-} == /run/user/* ]]; then
|
||||
# /run/user is usually a tmpfs in RAM, which may be too small
|
||||
# to store all downloaded dotnet packages
|
||||
TMPDIR=
|
||||
fi
|
||||
|
||||
export tmp=$(mktemp -td "deps-${pname}-XXXXXX")
|
||||
HOME=$tmp/home
|
||||
|
||||
exitTrap() {
|
||||
|
|
|
@ -26,7 +26,6 @@
|
|||
, git
|
||||
, dart
|
||||
, nukeReferences
|
||||
, targetPlatform
|
||||
, bash
|
||||
, curl
|
||||
, unzip
|
||||
|
@ -57,7 +56,7 @@ let
|
|||
self =
|
||||
(self: llvmPackages_13.stdenv.mkDerivation (args // {
|
||||
deps = stdenvNoCC.mkDerivation (lib.recursiveUpdate (getAttrsOrNull fetchAttrs args) {
|
||||
name = "${self.name}-deps-flutter-v${flutter.unwrapped.version}-${targetPlatform.system}.tar.gz";
|
||||
name = "${self.name}-deps-flutter-v${flutter.unwrapped.version}-${stdenvNoCC.targetPlatform.system}.tar.gz";
|
||||
|
||||
nativeBuildInputs = flutterDeps ++ [
|
||||
nukeReferences
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{ lib, buildPlatform, buildRustCrate, fetchgit }:
|
||||
let kernel = buildPlatform.parsed.kernel.name;
|
||||
abi = buildPlatform.parsed.abi.name;
|
||||
{ lib, stdenv, buildRustCrate, fetchgit }:
|
||||
let kernel = stdenv.buildPlatform.parsed.kernel.name;
|
||||
abi = stdenv.buildPlatform.parsed.abi.name;
|
||||
include = includedFiles: src: builtins.filterSource (path: type:
|
||||
lib.lists.any (f:
|
||||
let p = toString (src + ("/" + f)); in
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ lib, stdenv, fetchurl, unzip
|
||||
{ lib, stdenv, fetchzip, fontforge
|
||||
, bdftopcf, xorg
|
||||
}:
|
||||
|
||||
|
@ -8,32 +8,41 @@ stdenv.mkDerivation {
|
|||
|
||||
outputs = [ "out" "bdf" ];
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.donationcoder.com/Software/Jibz/Dina/downloads/Dina.zip";
|
||||
sha256 = "1kq86lbxxgik82aywwhawmj80vsbz3hfhdyhicnlv9km7yjvnl8z";
|
||||
src = fetchzip {
|
||||
url = "https://www.dcmembers.com/jibsen/download/61/?wpdmdl=61";
|
||||
hash = "sha256-JK+vnOyhAbwT825S+WKbQuWgRrfZZHfyhaMQ/6ljO8s=";
|
||||
extension = "zip";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
nativeBuildInputs =
|
||||
[ unzip bdftopcf xorg.mkfontscale xorg.fonttosfnt ];
|
||||
|
||||
postPatch = ''
|
||||
sed -i 's/microsoft-cp1252/ISO8859-1/' *.bdf
|
||||
'';
|
||||
[ fontforge bdftopcf xorg.mkfontscale xorg.fonttosfnt ];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
newName() {
|
||||
test "''${1:5:1}" = i && _it=Italic || _it=
|
||||
case ''${1:6:3} in
|
||||
400) test -z $it && _weight=Medium ;;
|
||||
700) _weight=Bold ;;
|
||||
esac
|
||||
_pt=''${1%.bdf}
|
||||
_pt=''${_pt#*-}
|
||||
echo "Dina$_weight$_it$_pt"
|
||||
local name=''${1##*/}
|
||||
test "''${name:5:1}" = i && _it=Italic || _it=
|
||||
case ''${name:6:3} in
|
||||
400) _weight=Medium ;;
|
||||
700) _weight=Bold ;;
|
||||
esac
|
||||
_pt=''${1%.bdf}
|
||||
_pt=''${_pt#*-}
|
||||
echo "Dina$_weight$_it$_pt"
|
||||
}
|
||||
|
||||
# Re-encode the provided BDF files from CP1252 to Unicode as fonttosfnt does
|
||||
# not support the former.
|
||||
# We could generate the PCF and OTB files with fontforge directly, but that
|
||||
# results in incorrect spacing in various places.
|
||||
for f in BDF/*.bdf; do
|
||||
basename=''${f##*/} basename=''${basename%.*}
|
||||
fontforge -lang=ff -c "Open(\"$f\"); Reencode(\"win\", 1); Reencode(\"unicode\"); Generate(\"$basename.bdf\")"
|
||||
mv "$basename"-*.bdf "$basename".bdf # remove the superfluous added size suffix
|
||||
done
|
||||
|
||||
for f in *.bdf; do
|
||||
name=$(newName "$f")
|
||||
bdftopcf -t -o "$name.pcf" "$f"
|
||||
|
@ -62,9 +71,8 @@ stdenv.mkDerivation {
|
|||
relatively compact to allow a lot of code on screen, while (hopefully)
|
||||
clear enough to remain readable even at high resolutions.
|
||||
'';
|
||||
homepage = "https://www.donationcoder.com/Software/Jibz/Dina/";
|
||||
downloadPage = "https://www.donationcoder.com/Software/Jibz/Dina/";
|
||||
homepage = "https://www.dcmembers.com/jibsen/download/61/";
|
||||
license = licenses.free;
|
||||
maintainers = [ maintainers.prikhi ];
|
||||
maintainers = with maintainers; [ prikhi ncfavier ];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -18,13 +18,13 @@ lib.checkListOfEnum "${pname}: color variants" [ "default" "purple" "pink" "red"
|
|||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
inherit pname;
|
||||
version = "2022-10-26";
|
||||
version = "2023-01-08";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vinceliuice";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-eHLfWrtY69S37OPvQdLwI/PRvoKCheF2MRsHG5+5BR0=";
|
||||
hash = "sha256-n4kMOIp7AD5Ue4qY4G3ja/VTyYF7cqhdI0uuk9b6o5c=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -3,12 +3,12 @@
|
|||
let
|
||||
generator = pkgsBuildBuild.buildGoModule rec {
|
||||
pname = "v2ray-domain-list-community";
|
||||
version = "20221223102220";
|
||||
version = "20230106031328";
|
||||
src = fetchFromGitHub {
|
||||
owner = "v2fly";
|
||||
repo = "domain-list-community";
|
||||
rev = version;
|
||||
sha256 = "sha256-bvTNxJcogF3KxZbC8jW0PMIiJJZnzubWybDcNK7id8s=";
|
||||
sha256 = "sha256-17yAIJQdxZAsNZ8W3HaW+EVKcPYy9fBOsSxU/0GEJuU=";
|
||||
};
|
||||
vendorSha256 = "sha256-CCY3CgjA1w4svzmkaI2Jt272Rrt5UOt5sbVDAWRRfzk=";
|
||||
meta = with lib; {
|
||||
|
|
|
@ -2,13 +2,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "v2ray-geoip";
|
||||
version = "202212220043";
|
||||
version = "202301050046";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "v2fly";
|
||||
repo = "geoip";
|
||||
rev = "4a54320369805321b90c7c5ca4cdda4f12bdd295";
|
||||
sha256 = "sha256-PFbjzzjeCKL9aak45B+R5Y+H3fTBzdXpyEvvEEdInbQ=";
|
||||
rev = "6bb07558ac223b3decdff985d5737f4384b34238";
|
||||
sha256 = "sha256-KXLIIs1W+8TC2GtW3m/YA5WQ13Pq5kxC5Zc9jDzW/tU=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
|
|
@ -35,13 +35,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cinnamon-control-center";
|
||||
version = "5.6.0";
|
||||
version = "5.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-WK35uDckIYU4HwuYtLj+CFVJD8O78LTQcnOvjp/et2s=";
|
||||
hash = "sha256-rp3K7SqGw8da2U61VjKiqUyT5vCUVk4XZdRYtLwRtfQ=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
|
|
@ -18,13 +18,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cinnamon-desktop";
|
||||
version = "5.6.0";
|
||||
version = "5.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-ajtKvy9CMr+Vsmdn49ZWYtbniZV1dqWJGTou3QY4oPc=";
|
||||
hash = "sha256-h2Jl/4SreniZtxziDwM0iwHXgGBrnHu8NLkIX7VGP18=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
|
|
@ -29,13 +29,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cinnamon-screensaver";
|
||||
version = "5.6.2";
|
||||
version = "5.6.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-xsxNGDFiBzVtoCV94iUuia45FRJGyGO522u6p1AIR6g=";
|
||||
hash = "sha256-S4+9ZTpDwwvYTc3gz0YQBYjgygp8KP94azkiJcH6xCk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -32,13 +32,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cinnamon-settings-daemon";
|
||||
version = "5.6.0";
|
||||
version = "5.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-VUGOBvMInruX1JVk9ECP8++FUrBQwDJhkZT/1pPg2wU=";
|
||||
hash = "sha256-QR77O3rFfY0+6cKoS75xoFRplNo4nvTMtR2rNKZERYE=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -5,13 +5,14 @@
|
|||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "mint-cursor-themes";
|
||||
version = "unstable-2022-11-29";
|
||||
version = "1.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = pname;
|
||||
rev = "aa6bb767831ac43d1768c2e639de713a4a1eba8d";
|
||||
hash = "sha256-UQnRrylUo9zuDiAwQ1COtXMtq4XTbxtMle41p+pzxJc=";
|
||||
# They don't really do tags, this is just a named commit.
|
||||
rev = "e17f8a4620827235dabbe5221bd0ee8c44dad0d5";
|
||||
hash = "sha256-yLUmIVh884uDVkNil7qxf6t/gykipzBvPgzwmY3zvQk=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, substituteAll
|
||||
, cairo
|
||||
, cinnamon-desktop
|
||||
|
@ -36,7 +35,7 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "muffin";
|
||||
version = "5.6.2";
|
||||
version = "5.6.3";
|
||||
|
||||
outputs = [ "out" "dev" "man" ];
|
||||
|
||||
|
@ -44,7 +43,7 @@ stdenv.mkDerivation rec {
|
|||
owner = "linuxmint";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-bHEBzl0aBXsHOhSWJUz428pG5M6L0s/Q6acKO+2oMXo=";
|
||||
hash = "sha256-qcm1CRUMKFx4KDXBnaIVLHuZTzSMEWEBFTWMe85pJDE=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -52,13 +51,6 @@ stdenv.mkDerivation rec {
|
|||
src = ./fix-paths.patch;
|
||||
zenity = gnome.zenity;
|
||||
})
|
||||
|
||||
# compositor: Fix crash when restarting Cinnamon
|
||||
# https://github.com/linuxmint/muffin/pull/655
|
||||
(fetchpatch {
|
||||
url = "https://github.com/linuxmint/muffin/commit/1a941ec603a1565dbd2f943f7da6e877d1541bcb.patch";
|
||||
sha256 = "sha256-6x64rWQ20ZjM9z79Pg6QMDPeFN5VNdDHBueRvy2kA6c=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -23,24 +23,19 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "nemo";
|
||||
version = "5.6.1";
|
||||
version = "5.6.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-ztx3Y+n9Bpzuz06mbkis3kdlM/0JrOaMDbRF5glzkDE=";
|
||||
sha256 = "sha256-JwwSeY+TsbYc2ZXoxR9aja0Hb8AmrWK79cv1ApAgcpQ=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Load extensions from NEMO_EXTENSION_DIR environment variable
|
||||
# https://github.com/NixOS/nixpkgs/issues/78327
|
||||
./load-extensions-from-env.patch
|
||||
|
||||
# Don't populate nemo actions from /run/current-system/sw/share
|
||||
# They should only be loaded exactly once from $out/share
|
||||
# https://github.com/NixOS/nixpkgs/issues/190781
|
||||
./fix-nemo-actions-duplicate-menu-items.patch
|
||||
];
|
||||
|
||||
outputs = [ "out" "dev" ];
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
diff --git a/libnemo-private/nemo-action-manager.c b/libnemo-private/nemo-action-manager.c
|
||||
index 4dac198..b671421 100644
|
||||
--- a/libnemo-private/nemo-action-manager.c
|
||||
+++ b/libnemo-private/nemo-action-manager.c
|
||||
@@ -146,6 +146,8 @@ set_up_actions_directories (NemoActionManager *action_manager)
|
||||
data_dirs = (gchar **) g_get_system_data_dirs ();
|
||||
|
||||
for (i = 0; i < g_strv_length (data_dirs); i++) {
|
||||
+ if (g_strcmp0 (data_dirs[i], "/run/current-system/sw/share") == 0)
|
||||
+ continue;
|
||||
path = g_build_filename (data_dirs[i], "nemo", "actions", NULL);
|
||||
uri = g_filename_to_uri (path, NULL, NULL);
|
||||
|
||||
diff --git a/src/nemo-action-config-widget.c b/src/nemo-action-config-widget.c
|
||||
index fc4075e..6e1c837 100644
|
||||
--- a/src/nemo-action-config-widget.c
|
||||
+++ b/src/nemo-action-config-widget.c
|
||||
@@ -221,6 +221,8 @@ refresh_widget (NemoActionConfigWidget *widget)
|
||||
data_dirs = (gchar **) g_get_system_data_dirs ();
|
||||
|
||||
for (i = 0; i < g_strv_length (data_dirs); i++) {
|
||||
+ if (g_strcmp0 (data_dirs[i], "/run/current-system/sw/share") == 0)
|
||||
+ continue;
|
||||
path = g_build_filename (data_dirs[i], "nemo", "actions", NULL);
|
||||
populate_from_directory (widget, path);
|
||||
g_clear_pointer (&path, g_free);
|
||||
@@ -390,6 +392,8 @@ static void setup_dir_monitors (NemoActionConfigWidget *widget)
|
||||
|
||||
guint i;
|
||||
for (i = 0; i < g_strv_length (data_dirs); i++) {
|
||||
+ if (g_strcmp0 (data_dirs[i], "/run/current-system/sw/share") == 0)
|
||||
+ continue;
|
||||
gchar *path = g_build_filename (data_dirs[i], "nemo", "actions", NULL);
|
||||
try_monitor_path (widget, path);
|
||||
g_free (path);
|
||||
diff --git a/src/nemo-script-config-widget.c b/src/nemo-script-config-widget.c
|
||||
index 3a2d349..b8a85b4 100644
|
||||
--- a/src/nemo-script-config-widget.c
|
||||
+++ b/src/nemo-script-config-widget.c
|
||||
@@ -288,6 +288,8 @@ static void setup_dir_monitors (NemoScriptConfigWidget *widget)
|
||||
|
||||
guint i;
|
||||
for (i = 0; i < g_strv_length (data_dirs); i++) {
|
||||
+ if (g_strcmp0 (data_dirs[i], "/run/current-system/sw/share") == 0)
|
||||
+ continue;
|
||||
gchar *path = g_build_filename (data_dirs[i], "nemo", "actions", NULL);
|
||||
try_monitor_path (widget, path);
|
||||
g_free (path);
|
|
@ -24,6 +24,10 @@ symlinkJoin {
|
|||
--set "NEMO_PYTHON_EXTENSION_DIR" "$out/share/nemo-python/extensions"
|
||||
done
|
||||
|
||||
# Don't populate the same nemo actions twice when having this globally installed
|
||||
# https://github.com/NixOS/nixpkgs/issues/190781#issuecomment-1365601853
|
||||
rm -r $out/share/nemo/actions
|
||||
|
||||
# Point to wrapped binary in all service files
|
||||
for file in "share/dbus-1/services/nemo.FileManager1.service" \
|
||||
"share/dbus-1/services/nemo.service"
|
||||
|
|
|
@ -27,13 +27,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "xviewer";
|
||||
version = "3.2.11";
|
||||
version = "3.2.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-EyrK4mnAHt/Lypuz7XX7+GFGfkfC5VDIit2WYZawI04=";
|
||||
sha256 = "sha256-tiZeC862gHbZt76sbxseUu9vWN+1huftXpE7lQLkGKU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
|
|
@ -20,7 +20,7 @@ args@
|
|||
, makeWrapper
|
||||
, ncurses5
|
||||
, perl
|
||||
, python27
|
||||
, python3
|
||||
, requireFile
|
||||
, stdenv
|
||||
, unixODBC
|
||||
|
@ -56,7 +56,7 @@ stdenv.mkDerivation rec {
|
|||
nativeBuildInputs = [ perl makeWrapper addOpenGLRunpath ];
|
||||
buildInputs = [ gdk-pixbuf ]; # To get $GDK_PIXBUF_MODULE_FILE via setup-hook
|
||||
runtimeDependencies = [
|
||||
ncurses5 expat python27 zlib glibc
|
||||
ncurses5 expat python3 zlib glibc
|
||||
xorg.libX11 xorg.libXext xorg.libXrender xorg.libXt xorg.libXtst xorg.libXi xorg.libXext
|
||||
gtk2 glib fontconfig freetype unixODBC alsa-lib
|
||||
];
|
||||
|
|
|
@ -448,7 +448,7 @@ self: super: {
|
|||
#
|
||||
# # Depends on itself for testing
|
||||
# doctest-discover = addBuildTool super.doctest-discover
|
||||
# (if pkgs.buildPlatform != pkgs.hostPlatform
|
||||
# (if pkgs.stdenv.buildPlatform != pkgs.stdenv.hostPlatform
|
||||
# then self.buildHaskellPackages.doctest-discover
|
||||
# else dontCheck super.doctest-discover);
|
||||
doctest-discover = dontCheck super.doctest-discover;
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue