Merge master into haskell-updates

This commit is contained in:
github-actions[bot] 2023-07-26 00:13:28 +00:00 committed by GitHub
commit cde91a5dd2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
244 changed files with 12053 additions and 2385 deletions

View File

@ -34,5 +34,7 @@ The `ibus-engines.typing-booster` package contains a program named `emoji-picker
On NixOS, it can be installed using the following expression: On NixOS, it can be installed using the following expression:
```nix ```nix
{ pkgs, ... }: { fonts.fonts = with pkgs; [ noto-fonts-emoji ]; } { pkgs, ... }: {
fonts.packages = with pkgs; [ noto-fonts-emoji ];
}
``` ```

View File

@ -12,8 +12,11 @@ compatible are available as well. For example, there can be a
To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional To use one or more CUDA packages in an expression, give the expression a `cudaPackages` parameter, and in case CUDA is optional
```nix ```nix
cudaSupport ? false { config
cudaPackages ? {} , cudaSupport ? config.cudaSupport
, cudaPackages ? { }
, ...
}:
``` ```
When using `callPackage`, you can choose to pass in a different variant, e.g. When using `callPackage`, you can choose to pass in a different variant, e.g.

View File

@ -81,9 +81,10 @@ rec {
*/ */
toKeyValue = { toKeyValue = {
mkKeyValue ? mkKeyValueDefault {} "=", mkKeyValue ? mkKeyValueDefault {} "=",
listsAsDuplicateKeys ? false listsAsDuplicateKeys ? false,
indent ? ""
}: }:
let mkLine = k: v: mkKeyValue k v + "\n"; let mkLine = k: v: indent + mkKeyValue k v + "\n";
mkLines = if listsAsDuplicateKeys mkLines = if listsAsDuplicateKeys
then k: v: map (mkLine k) (if lib.isList v then v else [v]) then k: v: map (mkLine k) (if lib.isList v then v else [v])
else k: v: [ (mkLine k v) ]; else k: v: [ (mkLine k v) ];

View File

@ -4147,6 +4147,12 @@
fingerprint = "1C4E F4FE 7F8E D8B7 1E88 CCDF BAB1 D15F B7B4 D4CE"; fingerprint = "1C4E F4FE 7F8E D8B7 1E88 CCDF BAB1 D15F B7B4 D4CE";
}]; }];
}; };
dgollings = {
email = "daniel.gollings+nixpkgs@gmail.com";
github = "dgollings";
githubId = 2032823;
name = "Daniel Gollings";
};
dgonyeo = { dgonyeo = {
email = "derek@gonyeo.com"; email = "derek@gonyeo.com";
github = "dgonyeo"; github = "dgonyeo";
@ -9853,6 +9859,15 @@
githubId = 22085373; githubId = 22085373;
name = "Luis Hebendanz"; name = "Luis Hebendanz";
}; };
luisdaranda = {
email = "luisdomingoaranda@gmail.com";
github = "propet";
githubId = 8515861;
name = "Luis D. Aranda Sánchez";
keys = [{
fingerprint = "AB7C 81F4 9E07 CC64 F3E7 BC25 DCAC C6F4 AAFC C04E";
}];
};
luisnquin = { luisnquin = {
email = "lpaandres2020@gmail.com"; email = "lpaandres2020@gmail.com";
matrix = "@luisnquin:matrix.org"; matrix = "@luisnquin:matrix.org";

View File

@ -83,6 +83,8 @@ In addition to numerous new and updated packages, this release has the following
- [gitea-actions-runner](https://gitea.com/gitea/act_runner), a CI runner for Gitea/Forgejo Actions. Available as [services.gitea-actions-runner](#opt-services.gitea-actions-runner.instances). - [gitea-actions-runner](https://gitea.com/gitea/act_runner), a CI runner for Gitea/Forgejo Actions. Available as [services.gitea-actions-runner](#opt-services.gitea-actions-runner.instances).
- [evdevremapkeys](https://github.com/philipl/evdevremapkeys), a daemon to remap key events. Available as [services.evdevremapkeys](#opt-services.evdevremapkeys.enable).
- [gmediarender](https://github.com/hzeller/gmrender-resurrect), a simple, headless UPnP/DLNA renderer. Available as [services.gmediarender](options.html#opt-services.gmediarender.enable). - [gmediarender](https://github.com/hzeller/gmrender-resurrect), a simple, headless UPnP/DLNA renderer. Available as [services.gmediarender](options.html#opt-services.gmediarender.enable).
- [go2rtc](https://github.com/AlexxIT/go2rtc), a camera streaming appliation with support for RTSP, WebRTC, HomeKit, FFMPEG, RTMP and other protocols. Available as [services.go2rtc](options.html#opt-services.go2rtc.enable). - [go2rtc](https://github.com/AlexxIT/go2rtc), a camera streaming appliation with support for RTSP, WebRTC, HomeKit, FFMPEG, RTMP and other protocols. Available as [services.go2rtc](options.html#opt-services.go2rtc.enable).

View File

@ -123,6 +123,8 @@
- `buildGoModule` `go-modules` attrs have been renamed to `goModules`. - `buildGoModule` `go-modules` attrs have been renamed to `goModules`.
- The `fonts.fonts` and `fonts.enableDefaultFonts` options have been renamed to `fonts.packages` and `fonts.enableDefaultPackages` respectively.
- `services.fail2ban.jails` can now be configured with attribute sets defining settings and filters instead of lines. The stringed options `daemonConfig` and `extraSettings` have respectively been replaced by `daemonSettings` and `jails.DEFAULT.settings` which use attribute sets. - `services.fail2ban.jails` can now be configured with attribute sets defining settings and filters instead of lines. The stringed options `daemonConfig` and `extraSettings` have respectively been replaced by `daemonSettings` and `jails.DEFAULT.settings` which use attribute sets.
- The module [services.ankisyncd](#opt-services.ankisyncd.package) has been switched to [anki-sync-server-rs](https://github.com/ankicommunity/anki-sync-server-rs) from the old python version, which was difficult to update, had not been updated in a while, and did not support recent versions of anki. - The module [services.ankisyncd](#opt-services.ankisyncd.package) has been switched to [anki-sync-server-rs](https://github.com/ankicommunity/anki-sync-server-rs) from the old python version, which was difficult to update, had not been updated in a while, and did not support recent versions of anki.

View File

@ -42,7 +42,7 @@ let
# looking things up. # looking things up.
makeCacheConf = { }: makeCacheConf = { }:
let let
makeCache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.fonts; }; makeCache = fontconfig: pkgs.makeFontsCache { inherit fontconfig; fontDirectories = config.fonts.packages; };
cache = makeCache pkgs.fontconfig; cache = makeCache pkgs.fontconfig;
cache32 = makeCache pkgs.pkgsi686Linux.fontconfig; cache32 = makeCache pkgs.pkgsi686Linux.fontconfig;
in in
@ -51,7 +51,7 @@ let
<!DOCTYPE fontconfig SYSTEM 'urn:fontconfig:fonts.dtd'> <!DOCTYPE fontconfig SYSTEM 'urn:fontconfig:fonts.dtd'>
<fontconfig> <fontconfig>
<!-- Font directories --> <!-- Font directories -->
${concatStringsSep "\n" (map (font: "<dir>${font}</dir>") config.fonts.fonts)} ${concatStringsSep "\n" (map (font: "<dir>${font}</dir>") config.fonts.packages)}
${optionalString (pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform) '' ${optionalString (pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform) ''
<!-- Pre-generated font caches --> <!-- Pre-generated font caches -->
<cachedir>${cache}</cachedir> <cachedir>${cache}</cachedir>

View File

@ -9,7 +9,7 @@ let
x11Fonts = pkgs.runCommand "X11-fonts" { preferLocalBuild = true; } '' x11Fonts = pkgs.runCommand "X11-fonts" { preferLocalBuild = true; } ''
mkdir -p "$out/share/X11/fonts" mkdir -p "$out/share/X11/fonts"
font_regexp='.*\.\(ttf\|ttc\|otb\|otf\|pcf\|pfa\|pfb\|bdf\)\(\.gz\)?' font_regexp='.*\.\(ttf\|ttc\|otb\|otf\|pcf\|pfa\|pfb\|bdf\)\(\.gz\)?'
find ${toString config.fonts.fonts} -regex "$font_regexp" \ find ${toString config.fonts.packages} -regex "$font_regexp" \
-exec ln -sf -t "$out/share/X11/fonts" '{}' \; -exec ln -sf -t "$out/share/X11/fonts" '{}' \;
cd "$out/share/X11/fonts" cd "$out/share/X11/fonts"
${optionalString cfg.decompressFonts '' ${optionalString cfg.decompressFonts ''

View File

@ -1,47 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.fonts;
defaultFonts =
[ pkgs.dejavu_fonts
pkgs.freefont_ttf
pkgs.gyre-fonts # TrueType substitutes for standard PostScript fonts
pkgs.liberation_ttf
pkgs.unifont
pkgs.noto-fonts-emoji
];
in
{
imports = [
(mkRemovedOptionModule [ "fonts" "enableCoreFonts" ] "Use fonts.fonts = [ pkgs.corefonts ]; instead.")
];
options = {
fonts = {
# TODO: find another name for it.
fonts = mkOption {
type = types.listOf types.path;
default = [];
example = literalExpression "[ pkgs.dejavu_fonts ]";
description = lib.mdDoc "List of primary font paths.";
};
enableDefaultFonts = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Enable a basic set of fonts providing several font styles
and families and reasonable coverage of Unicode.
'';
};
};
};
config = { fonts.fonts = mkIf cfg.enableDefaultFonts defaultFonts; };
}

View File

@ -3,31 +3,21 @@
with lib; with lib;
{ {
options = { options = {
fonts.enableGhostscriptFonts = mkOption {
fonts = { type = types.bool;
default = false;
enableGhostscriptFonts = mkOption { description = lib.mdDoc ''
type = types.bool; Whether to add the fonts provided by Ghostscript (such as
default = false; various URW fonts and the Base-14 Postscript fonts) to the
description = lib.mdDoc '' list of system fonts, making them available to X11
Whether to add the fonts provided by Ghostscript (such as applications.
various URW fonts and the Base-14 Postscript fonts) to the '';
list of system fonts, making them available to X11
applications.
'';
};
}; };
}; };
config = mkIf config.fonts.enableGhostscriptFonts { config = mkIf config.fonts.enableGhostscriptFonts {
fonts.packages = [ "${pkgs.ghostscript}/share/ghostscript/fonts" ];
fonts.fonts = [ "${pkgs.ghostscript}/share/ghostscript/fonts" ];
}; };
} }

View File

@ -0,0 +1,43 @@
{ config, lib, pkgs, ... }:
let
cfg = config.fonts;
in
{
imports = [
(lib.mkRemovedOptionModule [ "fonts" "enableCoreFonts" ] "Use fonts.packages = [ pkgs.corefonts ]; instead.")
(lib.mkRenamedOptionModule [ "fonts" "enableDefaultFonts" ] [ "fonts" "enableDefaultPackages" ])
(lib.mkRenamedOptionModule [ "fonts" "fonts" ] [ "fonts" "packages" ])
];
options = {
fonts = {
packages = lib.mkOption {
type = with lib.types; listOf path;
default = [];
example = lib.literalExpression "[ pkgs.dejavu_fonts ]";
description = lib.mdDoc "List of primary font packages.";
};
enableDefaultPackages = lib.mkOption {
type = lib.types.bool;
default = false;
description = lib.mdDoc ''
Enable a basic set of fonts providing several styles
and families and reasonable coverage of Unicode.
'';
};
};
};
config = {
fonts.packages = lib.mkIf cfg.enableDefaultPackages (with pkgs; [
dejavu_fonts
freefont_ttf
gyre-fonts # TrueType substitutes for standard PostScript fonts
liberation_ttf
unifont
noto-fonts-emoji
]);
};
}

View File

@ -3,8 +3,8 @@
configuration to work. configuration to work.
See also See also
- ./nix.nix - ./nix.nix
- ./nix-flakes.nix - ./nix-flakes.nix
*/ */
{ config, lib, ... }: { config, lib, ... }:
let let
@ -28,9 +28,9 @@ in
Whether the `nix-channel` command and state files are made available on the machine. Whether the `nix-channel` command and state files are made available on the machine.
The following files are initialized when enabled: The following files are initialized when enabled:
- `/nix/var/nix/profiles/per-user/root/channels` - `/nix/var/nix/profiles/per-user/root/channels`
- `/root/.nix-channels` - `/root/.nix-channels`
- `$HOME/.nix-defexpr/channels` (on login) - `$HOME/.nix-defexpr/channels` (on login)
Disabling this option will not remove the state files from the system. Disabling this option will not remove the state files from the system.
''; '';
@ -48,7 +48,7 @@ in
"nixos-config=/etc/nixos/configuration.nix" "nixos-config=/etc/nixos/configuration.nix"
"/nix/var/nix/profiles/per-user/root/channels" "/nix/var/nix/profiles/per-user/root/channels"
] ]
else []; else [ ];
defaultText = '' defaultText = ''
if nix.channel.enable if nix.channel.enable
then [ then [
@ -86,7 +86,7 @@ in
''; '';
environment.extraSetup = mkIf (!cfg.channel.enable) '' environment.extraSetup = mkIf (!cfg.channel.enable) ''
rm $out/bin/nix-channel rm --force $out/bin/nix-channel
''; '';
# NIX_PATH has a non-empty default according to Nix docs, so we don't unset # NIX_PATH has a non-empty default according to Nix docs, so we don't unset

View File

@ -4,8 +4,8 @@
./config/debug-info.nix ./config/debug-info.nix
./config/fonts/fontconfig.nix ./config/fonts/fontconfig.nix
./config/fonts/fontdir.nix ./config/fonts/fontdir.nix
./config/fonts/fonts.nix
./config/fonts/ghostscript.nix ./config/fonts/ghostscript.nix
./config/fonts/packages.nix
./config/gnu.nix ./config/gnu.nix
./config/gtk/gtk-icon-cache.nix ./config/gtk/gtk-icon-cache.nix
./config/i18n.nix ./config/i18n.nix
@ -636,6 +636,7 @@
./services/misc/etcd.nix ./services/misc/etcd.nix
./services/misc/etebase-server.nix ./services/misc/etebase-server.nix
./services/misc/etesync-dav.nix ./services/misc/etesync-dav.nix
./services/misc/evdevremapkeys.nix
./services/misc/felix.nix ./services/misc/felix.nix
./services/misc/freeswitch.nix ./services/misc/freeswitch.nix
./services/misc/fstrim.nix ./services/misc/fstrim.nix

View File

@ -60,7 +60,7 @@ in
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = [ cfg.finalPackage ]; environment.systemPackages = [ cfg.finalPackage ];
fonts.enableDefaultFonts = mkDefault true; fonts.enableDefaultPackages = mkDefault true;
hardware.opengl.enable = mkDefault true; hardware.opengl.enable = mkDefault true;
programs = { programs = {

View File

@ -66,7 +66,7 @@ in {
}; };
hardware.opengl.enable = lib.mkDefault true; hardware.opengl.enable = lib.mkDefault true;
fonts.enableDefaultFonts = lib.mkDefault true; fonts.enableDefaultPackages = lib.mkDefault true;
programs.dconf.enable = lib.mkDefault true; programs.dconf.enable = lib.mkDefault true;
programs.xwayland.enable = lib.mkDefault true; programs.xwayland.enable = lib.mkDefault true;

View File

@ -5,7 +5,7 @@
}; };
hardware.opengl.enable = mkDefault true; hardware.opengl.enable = mkDefault true;
fonts.enableDefaultFonts = mkDefault true; fonts.enableDefaultPackages = mkDefault true;
programs = { programs = {
dconf.enable = mkDefault true; dconf.enable = mkDefault true;

View File

@ -0,0 +1,59 @@
{ config, lib, pkgs, ... }:
with lib;
let
format = pkgs.formats.yaml { };
cfg = config.services.evdevremapkeys;
in
{
options.services.evdevremapkeys = {
enable = mkEnableOption (lib.mdDoc ''evdevremapkeys'');
settings = mkOption {
type = format.type;
default = { };
description = lib.mdDoc ''
config.yaml for evdevremapkeys
'';
};
};
config = mkIf cfg.enable {
boot.kernelModules = [ "uinput" ];
services.udev.extraRules = ''
KERNEL=="uinput", MODE="0660", GROUP="input"
'';
users.groups.evdevremapkeys = { };
users.users.evdevremapkeys = {
description = "evdevremapkeys service user";
group = "evdevremapkeys";
extraGroups = [ "input" ];
isSystemUser = true;
};
systemd.services.evdevremapkeys = {
description = "evdevremapkeys";
wantedBy = [ "multi-user.target" ];
serviceConfig =
let
config = format.generate "config.yaml" cfg.settings;
in
{
ExecStart = "${pkgs.evdevremapkeys}/bin/evdevremapkeys --config-file ${config}";
User = "evdevremapkeys";
Group = "evdevremapkeys";
StateDirectory = "evdevremapkeys";
Restart = "always";
LockPersonality = true;
MemoryDenyWriteExecute = true;
NoNewPrivileges = true;
PrivateNetwork = true;
PrivateTmp = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectKernelTunables = true;
ProtectSystem = true;
};
};
};
}

View File

@ -26,14 +26,11 @@ let
lib.mapAttrs (_: toString) cfg.extraConfig lib.mapAttrs (_: toString) cfg.extraConfig
); );
manage = manage = pkgs.writeShellScript "manage" ''
let set -o allexport # Export the following env vars
setupEnv = lib.concatStringsSep "\n" (mapAttrsToList (name: val: "export ${name}=\"${val}\"") env); ${lib.toShellVars env}
in exec ${pkg}/bin/paperless-ngx "$@"
pkgs.writeShellScript "manage" '' '';
${setupEnv}
exec ${pkg}/bin/paperless-ngx "$@"
'';
# Secure the services # Secure the services
defaultServiceConfig = { defaultServiceConfig = {
@ -172,6 +169,7 @@ in
description = lib.mdDoc "Web interface port."; description = lib.mdDoc "Web interface port.";
}; };
# FIXME this should become an RFC42-style settings attr
extraConfig = mkOption { extraConfig = mkOption {
type = types.attrs; type = types.attrs;
default = { }; default = { };
@ -180,11 +178,23 @@ in
See [the documentation](https://paperless-ngx.readthedocs.io/en/latest/configuration.html) See [the documentation](https://paperless-ngx.readthedocs.io/en/latest/configuration.html)
for available options. for available options.
Note that some options such as `PAPERLESS_CONSUMER_IGNORE_PATTERN` expect JSON values. Use `builtins.toJSON` to ensure proper quoting.
'';
example = literalExpression ''
{
PAPERLESS_OCR_LANGUAGE = "deu+eng";
PAPERLESS_DBHOST = "/run/postgresql";
PAPERLESS_CONSUMER_IGNORE_PATTERN = builtins.toJSON [ ".DS_STORE/*" "desktop.ini" ];
PAPERLESS_OCR_USER_ARGS = builtins.toJSON {
optimize = 1;
pdfa_image_compression = "lossless";
};
};
''; '';
example = {
PAPERLESS_OCR_LANGUAGE = "deu+eng";
PAPERLESS_DBHOST = "/run/postgresql";
};
}; };
user = mkOption { user = mkOption {

View File

@ -375,7 +375,7 @@ in
# Munin is hardcoded to use DejaVu Mono and the graphs come out wrong if # Munin is hardcoded to use DejaVu Mono and the graphs come out wrong if
# it's not available. # it's not available.
fonts.fonts = [ pkgs.dejavu_fonts ]; fonts.packages = [ pkgs.dejavu_fonts ];
systemd.timers.munin-cron = { systemd.timers.munin-cron = {
description = "batch Munin master programs"; description = "batch Munin master programs";

View File

@ -121,7 +121,7 @@ in
icons.enable = true; icons.enable = true;
}; };
fonts.enableDefaultFonts = mkDefault true; fonts.enableDefaultPackages = mkDefault true;
systemd = { systemd = {
services.xrdp = { services.xrdp = {

View File

@ -111,7 +111,7 @@ in {
fonts = mkIf (cfg.fonts != null) { fonts = mkIf (cfg.fonts != null) {
fontconfig.enable = true; fontconfig.enable = true;
fonts = map (f: f.package) cfg.fonts; packages = map (f: f.package) cfg.fonts;
}; };
}; };
} }

View File

@ -156,7 +156,7 @@ in {
++ cfg.sessionPath; ++ cfg.sessionPath;
# Fonts. # Fonts.
fonts.fonts = mkDefault [ fonts.packages = mkDefault [
pkgs.noto-fonts pkgs.noto-fonts
pkgs.hack-font pkgs.hack-font
]; ];

View File

@ -218,7 +218,7 @@ in
qt.style = "adwaita"; qt.style = "adwaita";
# Default Fonts # Default Fonts
fonts.fonts = with pkgs; [ fonts.packages = with pkgs; [
source-code-pro # Default monospace font in 3.32 source-code-pro # Default monospace font in 3.32
ubuntu_font_family # required for default theme ubuntu_font_family # required for default theme
]; ];

View File

@ -67,7 +67,7 @@ in
networking.networkmanager.enable = mkDefault true; networking.networkmanager.enable = mkDefault true;
programs.dconf.enable = mkDefault true; programs.dconf.enable = mkDefault true;
fonts.fonts = with pkgs; [ noto-fonts ]; fonts.packages = with pkgs; [ noto-fonts ];
xdg.mime.enable = true; xdg.mime.enable = true;
xdg.menus.enable = true; xdg.menus.enable = true;
xdg.icons.enable = true; xdg.icons.enable = true;

View File

@ -92,7 +92,7 @@ in
environment.etc."X11/xkb".source = xcfg.xkbDir; environment.etc."X11/xkb".source = xcfg.xkbDir;
fonts.fonts = [ pkgs.dejavu_fonts pkgs.ubuntu_font_family ]; fonts.packages = [ pkgs.dejavu_fonts pkgs.ubuntu_font_family ];
services.udisks2.enable = true; services.udisks2.enable = true;
services.upower.enable = config.powerManagement.enable; services.upower.enable = config.powerManagement.enable;

View File

@ -432,7 +432,7 @@ in
isSystem = true; isSystem = true;
}; };
fonts.fonts = with pkgs; [ fonts.packages = with pkgs; [
cantarell-fonts cantarell-fonts
dejavu_fonts dejavu_fonts
source-code-pro # Default monospace font in 3.32 source-code-pro # Default monospace font in 3.32

View File

@ -265,7 +265,7 @@ in
qt.style = "adwaita"; qt.style = "adwaita";
# Default Fonts # Default Fonts
fonts.fonts = with pkgs; [ fonts.packages = with pkgs; [
inter inter
open-dyslexic open-dyslexic
open-sans open-sans
@ -306,7 +306,7 @@ in
])) config.environment.pantheon.excludePackages; ])) config.environment.pantheon.excludePackages;
# needed by screenshot # needed by screenshot
fonts.fonts = [ fonts.packages = [
pkgs.pantheon.elementary-redacted-script pkgs.pantheon.elementary-redacted-script
]; ];
}) })

View File

@ -332,7 +332,7 @@ in
# Enable GTK applications to load SVG icons # Enable GTK applications to load SVG icons
services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ]; services.xserver.gdk-pixbuf.modulePackages = [ pkgs.librsvg ];
fonts.fonts = with pkgs; [ cfg.notoPackage hack-font ]; fonts.packages = with pkgs; [ cfg.notoPackage hack-font ];
fonts.fontconfig.defaultFonts = { fonts.fontconfig.defaultFonts = {
monospace = [ "Hack" "Noto Sans Mono" ]; monospace = [ "Hack" "Noto Sans Mono" ];
sansSerif = [ "Noto Sans" ]; sansSerif = [ "Noto Sans" ];

View File

@ -1,9 +1,10 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, utils, ... }:
with lib; with lib;
let let
cfg = config.services.xserver.desktopManager.xfce; cfg = config.services.xserver.desktopManager.xfce;
excludePackages = config.environment.xfce.excludePackages;
in in
{ {
@ -69,10 +70,17 @@ in
description = lib.mdDoc "Enable the XFCE screensaver."; description = lib.mdDoc "Enable the XFCE screensaver.";
}; };
}; };
environment.xfce.excludePackages = mkOption {
default = [];
example = literalExpression "[ pkgs.xfce.xfce4-volumed-pulse ]";
type = types.listOf types.package;
description = lib.mdDoc "Which packages XFCE should exclude from the default environment";
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = with pkgs.xfce // pkgs; [ environment.systemPackages = utils.removePackagesByName (with pkgs.xfce // pkgs; [
glib # for gsettings glib # for gsettings
gtk3.out # gtk-update-icon-cache gtk3.out # gtk-update-icon-cache
@ -121,7 +129,7 @@ in
] ++ optionals (!cfg.noDesktop) [ ] ++ optionals (!cfg.noDesktop) [
xfce4-panel xfce4-panel
xfdesktop xfdesktop
] ++ optional cfg.enableScreensaver xfce4-screensaver; ] ++ optional cfg.enableScreensaver xfce4-screensaver) excludePackages;
programs.xfconf.enable = true; programs.xfconf.enable = true;
programs.thunar.enable = true; programs.thunar.enable = true;
@ -165,9 +173,9 @@ in
programs.zsh.vteIntegration = mkDefault true; programs.zsh.vteIntegration = mkDefault true;
# Systemd services # Systemd services
systemd.packages = with pkgs.xfce; [ systemd.packages = utils.removePackagesByName (with pkgs.xfce; [
xfce4-notifyd xfce4-notifyd
]; ]) excludePackages;
security.pam.services.xfce4-screensaver.unixAuth = cfg.enableScreensaver; security.pam.services.xfce4-screensaver.unixAuth = cfg.enableScreensaver;
}; };

View File

@ -142,7 +142,7 @@ in
theme theme
]; ];
fonts.fonts = [ font ]; fonts.packages = [ font ];
environment.etc."lightdm/slick-greeter.conf".source = slickGreeterConf; environment.etc."lightdm/slick-greeter.conf".source = slickGreeterConf;
}; };

View File

@ -22,7 +22,7 @@ let
}; };
fontsForXServer = fontsForXServer =
config.fonts.fonts ++ config.fonts.packages ++
# We don't want these fonts in fonts.conf, because then modern, # We don't want these fonts in fonts.conf, because then modern,
# fontconfig-based applications will get horrible bitmapped # fontconfig-based applications will get horrible bitmapped
# Helvetica fonts. It's better to get a substitution (like Nimbus # Helvetica fonts. It's better to get a substitution (like Nimbus
@ -883,8 +883,8 @@ in
${cfg.extraConfig} ${cfg.extraConfig}
''; '';
fonts.enableDefaultFonts = mkDefault true; fonts.enableDefaultPackages = mkDefault true;
fonts.fonts = [ fonts.packages = [
(if cfg.upscaleDefaultCursor then fontcursormisc_hidpi else pkgs.xorg.fontcursormisc) (if cfg.upscaleDefaultCursor then fontcursormisc_hidpi else pkgs.xorg.fontcursormisc)
pkgs.xorg.fontmiscmisc pkgs.xorg.fontmiscmisc
]; ];

View File

@ -173,7 +173,7 @@ in
config = { config = {
target = mkDefault name; target = mkDefault name;
source = mkIf (config.text != null) ( source = mkIf (config.text != null) (
let name' = "etc-" + baseNameOf name; let name' = "etc-" + lib.replaceStrings ["/"] ["-"] name;
in mkDerivedConfig options.text (pkgs.writeText name') in mkDerivedConfig options.text (pkgs.writeText name')
); );
}; };

View File

@ -11,7 +11,7 @@ import ./make-test-python.nix ({ pkgs, ...} :
{ {
imports = [ ./common/user-account.nix ]; imports = [ ./common/user-account.nix ];
fonts.fonts = with pkgs; [ dejavu_fonts ]; fonts.packages = with pkgs; [ dejavu_fonts ];
services.cage = { services.cage = {
enable = true; enable = true;

View File

@ -4,7 +4,7 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
nodes.machine = { pkgs, ... }: { nodes.machine = { pkgs, ... }: {
imports = [ ./common/user-account.nix ]; imports = [ ./common/user-account.nix ];
environment.systemPackages = [ pkgs.poppler_utils ]; environment.systemPackages = [ pkgs.poppler_utils ];
fonts.fonts = [ pkgs.dejavu_fonts ]; # yields more OCR-able pdf fonts.packages = [ pkgs.dejavu_fonts ]; # yields more OCR-able pdf
services.printing.cups-pdf.enable = true; services.printing.cups-pdf.enable = true;
services.printing.cups-pdf.instances = { services.printing.cups-pdf.instances = {
opt = {}; opt = {};

View File

@ -7,8 +7,8 @@ import ./make-test-python.nix ({ lib, ... }:
]; ];
nodes.machine = { config, pkgs, ... }: { nodes.machine = { config, pkgs, ... }: {
fonts.enableDefaultFonts = true; # Background fonts fonts.enableDefaultPackages = true; # Background fonts
fonts.fonts = with pkgs; [ fonts.packages = with pkgs; [
noto-fonts-emoji noto-fonts-emoji
cantarell-fonts cantarell-fonts
twitter-color-emoji twitter-color-emoji

View File

@ -83,7 +83,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
}; };
}; };
fonts.fonts = [ pkgs.inconsolata ]; fonts.packages = [ pkgs.inconsolata ];
}; };
enableOCR = true; enableOCR = true;

View File

@ -5,7 +5,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
nodes.machine = { nodes.machine = {
imports = [ ./common/x11.nix ]; imports = [ ./common/x11.nix ];
fonts = { fonts = {
enableDefaultFonts = false; enableDefaultPackages = false;
fonts = [ pkgs.noto-fonts-cjk-sans ]; fonts = [ pkgs.noto-fonts-cjk-sans ];
}; };
}; };

View File

@ -6,7 +6,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
imports = [ ./common/x11.nix ]; imports = [ ./common/x11.nix ];
environment.systemPackages = [ pkgs.gedit ]; environment.systemPackages = [ pkgs.gedit ];
fonts = { fonts = {
enableDefaultFonts = false; enableDefaultPackages = false;
fonts = with pkgs;[ fonts = with pkgs;[
noto-fonts noto-fonts
noto-fonts-cjk-sans noto-fonts-cjk-sans

View File

@ -51,7 +51,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
''; '';
}; };
fonts.fonts = [ pkgs.inconsolata ]; fonts.packages = [ pkgs.inconsolata ];
# Automatically configure and start Sway when logging in on tty1: # Automatically configure and start Sway when logging in on tty1:
programs.bash.loginShellInit = '' programs.bash.loginShellInit = ''

View File

@ -8,7 +8,7 @@ let
environment.variables.NIXOS_OZONE_WL = "1"; environment.variables.NIXOS_OZONE_WL = "1";
environment.variables.DISPLAY = "do not use"; environment.variables.DISPLAY = "do not use";
fonts.fonts = with pkgs; [ dejavu_fonts ]; fonts.packages = with pkgs; [ dejavu_fonts ];
}; };
xorg = { pkgs, ... }: { xorg = { pkgs, ... }: {
imports = [ ./common/user-account.nix ./common/x11.nix ]; imports = [ ./common/user-account.nix ./common/x11.nix ];

View File

@ -0,0 +1,35 @@
{ lib
, stdenvNoCC
, fetchurl
, unzip
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "soundsource";
version = "5.6.0";
src = fetchurl {
url = "https://web.archive.org/web/20230707140658/https://rogueamoeba.com/soundsource/download/SoundSource.zip";
sha256 = "1avm1jr75mjbps0fad3glshrwl42vnhc0f9sak038ny85f3apyi0";
};
dontUnpack = true;
nativeBuildInputs = [ unzip ];
installPhase = ''
runHook preInstall
mkdir -p $out/Applications
unzip -d $out/Applications $src
runHook postInstall
'';
meta = with lib; {
description = "Sound controller for macOS";
homepage = "https://rogueamoeba.com/soundsource";
license = licenses.unfree;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
maintainers = with maintainers; [ emilytrau Enzime ];
platforms = platforms.darwin;
};
})

File diff suppressed because it is too large Load Diff

View File

@ -436,12 +436,12 @@
}; };
elvish = buildGrammar { elvish = buildGrammar {
language = "elvish"; language = "elvish";
version = "0.0.0+rev=f32711e"; version = "0.0.0+rev=5e7210d";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "elves"; owner = "elves";
repo = "tree-sitter-elvish"; repo = "tree-sitter-elvish";
rev = "f32711e31e987fd5c2c002f3daba02f25c68672f"; rev = "5e7210d945425b77f82cbaebc5af4dd3e1ad40f5";
hash = "sha256-/3npcIfTH8w5ekLTb//ZCTxuSGhOXkUBaCq3WWcK2J4="; hash = "sha256-POuQA2Ihi+qDYQ5Pv7hBAzHpPu/FcnuYscW4ItDOCZg=";
}; };
meta.homepage = "https://github.com/elves/tree-sitter-elvish"; meta.homepage = "https://github.com/elves/tree-sitter-elvish";
}; };
@ -458,12 +458,12 @@
}; };
erlang = buildGrammar { erlang = buildGrammar {
language = "erlang"; language = "erlang";
version = "0.0.0+rev=5dba13d"; version = "0.0.0+rev=7aa24fe";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "WhatsApp"; owner = "WhatsApp";
repo = "tree-sitter-erlang"; repo = "tree-sitter-erlang";
rev = "5dba13dcd531c19bf99829e2e0bb31f2e08e16fe"; rev = "7aa24fe8616072fc1a659f72d5b60bd8c01fb5cc";
hash = "sha256-FH8DNE03k95ZsRwaiXHkaU9/cdWrWALCEdChN5ZPdog="; hash = "sha256-7rhwMBq5u5bVjyCE4j3f5tzY+9jL80Xd5hgkJjlqSr8=";
}; };
meta.homepage = "https://github.com/WhatsApp/tree-sitter-erlang"; meta.homepage = "https://github.com/WhatsApp/tree-sitter-erlang";
}; };
@ -513,12 +513,12 @@
}; };
fortran = buildGrammar { fortran = buildGrammar {
language = "fortran"; language = "fortran";
version = "0.0.0+rev=31552ac"; version = "0.0.0+rev=482bdb8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "stadelmanma"; owner = "stadelmanma";
repo = "tree-sitter-fortran"; repo = "tree-sitter-fortran";
rev = "31552ac43ecaffa443a12ebea68cc526d334892f"; rev = "482bdb8b8fb7305b928937379820aa6449e359a7";
hash = "sha256-6ywdhlQGjivA2RV5345A0BiybAJOn9cIM03GMHjVoiM="; hash = "sha256-x2Cm1yUfhlkl8zgbQFPe/IxVNGpX050J3wjsqe7uOW8=";
}; };
meta.homepage = "https://github.com/stadelmanma/tree-sitter-fortran"; meta.homepage = "https://github.com/stadelmanma/tree-sitter-fortran";
}; };
@ -1151,36 +1151,36 @@
}; };
markdown = buildGrammar { markdown = buildGrammar {
language = "markdown"; language = "markdown";
version = "0.0.0+rev=936cc84"; version = "0.0.0+rev=aaf7679";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "MDeiml"; owner = "MDeiml";
repo = "tree-sitter-markdown"; repo = "tree-sitter-markdown";
rev = "936cc84289f6de83c263ae8e659fb342867ceb16"; rev = "aaf76797aa8ecd9a5e78e0ec3681941de6c945ee";
hash = "sha256-fDpZs/supQ4Mdlm3+birKodclcwPdsytB3+cRHM4NkM="; hash = "sha256-4HofUc+OsI3d2CN9mex5ROwuRHyB6fGow8gl0fe5es4=";
}; };
location = "tree-sitter-markdown"; location = "tree-sitter-markdown";
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown"; meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
}; };
markdown_inline = buildGrammar { markdown_inline = buildGrammar {
language = "markdown_inline"; language = "markdown_inline";
version = "0.0.0+rev=936cc84"; version = "0.0.0+rev=aaf7679";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "MDeiml"; owner = "MDeiml";
repo = "tree-sitter-markdown"; repo = "tree-sitter-markdown";
rev = "936cc84289f6de83c263ae8e659fb342867ceb16"; rev = "aaf76797aa8ecd9a5e78e0ec3681941de6c945ee";
hash = "sha256-fDpZs/supQ4Mdlm3+birKodclcwPdsytB3+cRHM4NkM="; hash = "sha256-4HofUc+OsI3d2CN9mex5ROwuRHyB6fGow8gl0fe5es4=";
}; };
location = "tree-sitter-markdown-inline"; location = "tree-sitter-markdown-inline";
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown"; meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
}; };
matlab = buildGrammar { matlab = buildGrammar {
language = "matlab"; language = "matlab";
version = "0.0.0+rev=676117e"; version = "0.0.0+rev=1558d8f";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "acristoffers"; owner = "acristoffers";
repo = "tree-sitter-matlab"; repo = "tree-sitter-matlab";
rev = "676117eafa64afedc8380a921a77cd9f2244bc6b"; rev = "1558d8fc85f7810fa567292ad2a7e64913fa78a1";
hash = "sha256-VB+SO89WAAPh1wj4E1nuHLzNNixBQrF3HcUeqrqV5dk="; hash = "sha256-3FKUGmMM3OeRXkS+izu5yrTgiewp5nHN2352t6sYurU=";
}; };
meta.homepage = "https://github.com/acristoffers/tree-sitter-matlab"; meta.homepage = "https://github.com/acristoffers/tree-sitter-matlab";
}; };
@ -1286,24 +1286,24 @@
}; };
ocaml = buildGrammar { ocaml = buildGrammar {
language = "ocaml"; language = "ocaml";
version = "0.0.0+rev=ee871b5"; version = "0.0.0+rev=694c577";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter"; owner = "tree-sitter";
repo = "tree-sitter-ocaml"; repo = "tree-sitter-ocaml";
rev = "ee871b50b845b6adaa22e85aa3c794a3fd49b1fb"; rev = "694c57718fd85d514f8b81176038e7a4cfabcaaf";
hash = "sha256-2WhK69OGHeQWQZPkBdfrybgxO2oDwHSn1c/AzQe9hAw="; hash = "sha256-j3Hv2qOMxeBNOW+WIgIYzG3zMIFWPQpoHe94b2rT+A8=";
}; };
location = "ocaml"; location = "ocaml";
meta.homepage = "https://github.com/tree-sitter/tree-sitter-ocaml"; meta.homepage = "https://github.com/tree-sitter/tree-sitter-ocaml";
}; };
ocaml_interface = buildGrammar { ocaml_interface = buildGrammar {
language = "ocaml_interface"; language = "ocaml_interface";
version = "0.0.0+rev=ee871b5"; version = "0.0.0+rev=694c577";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter"; owner = "tree-sitter";
repo = "tree-sitter-ocaml"; repo = "tree-sitter-ocaml";
rev = "ee871b50b845b6adaa22e85aa3c794a3fd49b1fb"; rev = "694c57718fd85d514f8b81176038e7a4cfabcaaf";
hash = "sha256-2WhK69OGHeQWQZPkBdfrybgxO2oDwHSn1c/AzQe9hAw="; hash = "sha256-j3Hv2qOMxeBNOW+WIgIYzG3zMIFWPQpoHe94b2rT+A8=";
}; };
location = "interface"; location = "interface";
meta.homepage = "https://github.com/tree-sitter/tree-sitter-ocaml"; meta.homepage = "https://github.com/tree-sitter/tree-sitter-ocaml";
@ -1509,12 +1509,12 @@
}; };
puppet = buildGrammar { puppet = buildGrammar {
language = "puppet"; language = "puppet";
version = "0.0.0+rev=8e13a37"; version = "0.0.0+rev=9ce9a5f";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "amaanq"; owner = "amaanq";
repo = "tree-sitter-puppet"; repo = "tree-sitter-puppet";
rev = "8e13a3768091703ac27ef1e5763e542af7f6dead"; rev = "9ce9a5f7d64528572aaa8d59459ba869e634086b";
hash = "sha256-vBxCqFsSF2kwUK5uNWDPvl7F+mcD8rdTzsckcab4vUU="; hash = "sha256-YEjjy9WLwITERYqoeSVrRYnwVBIAwdc4o0lvAK9wizw=";
}; };
meta.homepage = "https://github.com/amaanq/tree-sitter-puppet"; meta.homepage = "https://github.com/amaanq/tree-sitter-puppet";
}; };
@ -1641,12 +1641,12 @@
}; };
robot = buildGrammar { robot = buildGrammar {
language = "robot"; language = "robot";
version = "0.0.0+rev=f1142bf"; version = "0.0.0+rev=51b82cf";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Hubro"; owner = "Hubro";
repo = "tree-sitter-robot"; repo = "tree-sitter-robot";
rev = "f1142bfaa6acfce95e25d2c6d18d218f4f533927"; rev = "51b82cfd0c824681b6a282663820a5ce54243e55";
hash = "sha256-Nd38FJZsSEr3R7S6e8nyoJTqZbbDCtlcvwqWrjvz2d4="; hash = "sha256-jRLP5LqA/Q3IosK0n5sLJ2SW/wXTo9ia1zpdnos/QN8=";
}; };
meta.homepage = "https://github.com/Hubro/tree-sitter-robot"; meta.homepage = "https://github.com/Hubro/tree-sitter-robot";
}; };
@ -1986,12 +1986,12 @@
}; };
tsx = buildGrammar { tsx = buildGrammar {
language = "tsx"; language = "tsx";
version = "0.0.0+rev=e5fa28f"; version = "0.0.0+rev=b1bf482";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter"; owner = "tree-sitter";
repo = "tree-sitter-typescript"; repo = "tree-sitter-typescript";
rev = "e5fa28f919e0b1ed1961af9adf9a1e7a71271104"; rev = "b1bf4825d9eaa0f3bdeb1e52f099533328acfbdf";
hash = "sha256-1kyW5tohk3byP/sWM7Edv8N3tWin65k7h+nkKBMQGAg="; hash = "sha256-oZKit8kScXcOptmT2ckywL5JlAVe+wuwhuj6ThEI5OQ=";
}; };
location = "tsx"; location = "tsx";
meta.homepage = "https://github.com/tree-sitter/tree-sitter-typescript"; meta.homepage = "https://github.com/tree-sitter/tree-sitter-typescript";
@ -2020,12 +2020,12 @@
}; };
typescript = buildGrammar { typescript = buildGrammar {
language = "typescript"; language = "typescript";
version = "0.0.0+rev=e5fa28f"; version = "0.0.0+rev=b1bf482";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tree-sitter"; owner = "tree-sitter";
repo = "tree-sitter-typescript"; repo = "tree-sitter-typescript";
rev = "e5fa28f919e0b1ed1961af9adf9a1e7a71271104"; rev = "b1bf4825d9eaa0f3bdeb1e52f099533328acfbdf";
hash = "sha256-1kyW5tohk3byP/sWM7Edv8N3tWin65k7h+nkKBMQGAg="; hash = "sha256-oZKit8kScXcOptmT2ckywL5JlAVe+wuwhuj6ThEI5OQ=";
}; };
location = "typescript"; location = "typescript";
meta.homepage = "https://github.com/tree-sitter/tree-sitter-typescript"; meta.homepage = "https://github.com/tree-sitter/tree-sitter-typescript";
@ -2165,12 +2165,12 @@
}; };
wing = buildGrammar { wing = buildGrammar {
language = "wing"; language = "wing";
version = "0.0.0+rev=1f8736f"; version = "0.0.0+rev=23712ef";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "winglang"; owner = "winglang";
repo = "wing"; repo = "wing";
rev = "1f8736fc86204a045644e0086bee68f7171e1967"; rev = "23712eff9768576bdd852cb9b989a9cd44af014a";
hash = "sha256-cguDviBdQPOLOwoM/jhGNasQyjN1IfLw5Eg9DVjnU1s="; hash = "sha256-IWqclJM3CKsgXIy3e6pUrd2iLfIu8QZT2k6eZXRpITA=";
}; };
location = "libs/tree-sitter-wing"; location = "libs/tree-sitter-wing";
generate = true; generate = true;

View File

@ -932,7 +932,7 @@ self: super: {
pname = "sg-nvim-rust"; pname = "sg-nvim-rust";
inherit (old) version src; inherit (old) version src;
cargoHash = "sha256-Xlhy2yfB99Tu0j7rXRC6UkdcV0MW09olyxcC2gjd7h4="; cargoHash = "sha256-KhUCIAGSgf7TxabEzcjo582VgbSU79QSGlaEP7BbJCE=";
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];

View File

@ -346,6 +346,7 @@ https://github.com/edluffy/hologram.nvim/,,
https://github.com/urbit/hoon.vim/,, https://github.com/urbit/hoon.vim/,,
https://github.com/phaazon/hop.nvim/,, https://github.com/phaazon/hop.nvim/,,
https://github.com/rktjmp/hotpot.nvim/,, https://github.com/rktjmp/hotpot.nvim/,,
https://github.com/lewis6991/hover.nvim/,HEAD,
https://github.com/othree/html5.vim/,HEAD, https://github.com/othree/html5.vim/,HEAD,
https://github.com/anuvyklack/hydra.nvim/,HEAD, https://github.com/anuvyklack/hydra.nvim/,HEAD,
https://github.com/mboughaba/i3config.vim/,, https://github.com/mboughaba/i3config.vim/,,
@ -665,6 +666,7 @@ https://github.com/RishabhRD/popfix/,,
https://github.com/nvim-lua/popup.nvim/,, https://github.com/nvim-lua/popup.nvim/,,
https://github.com/andweeb/presence.nvim/,, https://github.com/andweeb/presence.nvim/,,
https://github.com/sotte/presenting.vim/,, https://github.com/sotte/presenting.vim/,,
https://github.com/ewilazarus/preto/,HEAD,
https://github.com/vim-scripts/prev_indent/,, https://github.com/vim-scripts/prev_indent/,,
https://github.com/ahmedkhalf/project.nvim/,, https://github.com/ahmedkhalf/project.nvim/,,
https://github.com/kevinhwang91/promise-async/,HEAD, https://github.com/kevinhwang91/promise-async/,HEAD,
@ -741,6 +743,7 @@ https://github.com/chr4/sslsecure.vim/,,
https://github.com/cshuaimin/ssr.nvim/,HEAD, https://github.com/cshuaimin/ssr.nvim/,HEAD,
https://github.com/luukvbaal/stabilize.nvim/,, https://github.com/luukvbaal/stabilize.nvim/,,
https://github.com/eigenfoo/stan-vim/,, https://github.com/eigenfoo/stan-vim/,,
https://github.com/josegamez82/starrynight/,HEAD,
https://github.com/darfink/starsearch.vim/,, https://github.com/darfink/starsearch.vim/,,
https://github.com/luukvbaal/statuscol.nvim/,, https://github.com/luukvbaal/statuscol.nvim/,,
https://github.com/teto/stylish.nvim/,HEAD, https://github.com/teto/stylish.nvim/,HEAD,
@ -1090,6 +1093,7 @@ https://github.com/jistr/vim-nerdtree-tabs/,,
https://github.com/nfnty/vim-nftables/,, https://github.com/nfnty/vim-nftables/,,
https://github.com/kana/vim-niceblock/,, https://github.com/kana/vim-niceblock/,,
https://github.com/nickel-lang/vim-nickel/,main, https://github.com/nickel-lang/vim-nickel/,main,
https://github.com/bluz71/vim-nightfly-colors/,,nightfly
https://github.com/tommcdo/vim-ninja-feet/,, https://github.com/tommcdo/vim-ninja-feet/,,
https://github.com/LnL7/vim-nix/,, https://github.com/LnL7/vim-nix/,,
https://github.com/symphorien/vim-nixhash/,, https://github.com/symphorien/vim-nixhash/,,
@ -1114,6 +1118,7 @@ https://github.com/lambdalisue/vim-pager/,,
https://github.com/vim-pandoc/vim-pandoc/,, https://github.com/vim-pandoc/vim-pandoc/,,
https://github.com/vim-pandoc/vim-pandoc-after/,, https://github.com/vim-pandoc/vim-pandoc-after/,,
https://github.com/vim-pandoc/vim-pandoc-syntax/,, https://github.com/vim-pandoc/vim-pandoc-syntax/,,
https://github.com/yorickpeterse/vim-paper/,HEAD,
https://github.com/bhurlow/vim-parinfer/,, https://github.com/bhurlow/vim-parinfer/,,
https://github.com/sickill/vim-pasta/,, https://github.com/sickill/vim-pasta/,,
https://github.com/tpope/vim-pathogen/,, https://github.com/tpope/vim-pathogen/,,
@ -1290,6 +1295,7 @@ https://github.com/tweekmonster/wstrip.vim/,,
https://github.com/drmingdrmer/xptemplate/,, https://github.com/drmingdrmer/xptemplate/,,
https://github.com/guns/xterm-color-table.vim/,, https://github.com/guns/xterm-color-table.vim/,,
https://github.com/HerringtonDarkholme/yats.vim/,, https://github.com/HerringtonDarkholme/yats.vim/,,
https://github.com/lucasew/yescapsquit.vim/,HEAD,
https://github.com/elkowar/yuck.vim/,HEAD, https://github.com/elkowar/yuck.vim/,HEAD,
https://github.com/KabbAmine/zeavim.vim/,, https://github.com/KabbAmine/zeavim.vim/,,
https://github.com/folke/zen-mode.nvim/,, https://github.com/folke/zen-mode.nvim/,,

View File

@ -69,9 +69,9 @@ in rec {
unstable = fetchurl rec { unstable = fetchurl rec {
# NOTE: Don't forget to change the hash for staging as well. # NOTE: Don't forget to change the hash for staging as well.
version = "8.10"; version = "8.13";
url = "https://dl.winehq.org/wine/source/8.x/wine-${version}.tar.xz"; url = "https://dl.winehq.org/wine/source/8.x/wine-${version}.tar.xz";
hash = "sha256-xPNt1zwXbO+OcBbKQTnudvW0mKSv1+21F+FMDVOUc28="; hash = "sha256-JuXTqD0lxUGMbA9USORD0gh2OiZDqrSw8a01KSKkwnU=";
inherit (stable) patches; inherit (stable) patches;
## see http://wiki.winehq.org/Gecko ## see http://wiki.winehq.org/Gecko
@ -117,7 +117,7 @@ in rec {
staging = fetchFromGitHub rec { staging = fetchFromGitHub rec {
# https://github.com/wine-staging/wine-staging/releases # https://github.com/wine-staging/wine-staging/releases
inherit (unstable) version; inherit (unstable) version;
hash = "sha256-4EHzverfPu4PoRvbeH/iaGqNoXk6XgneDpKOuMf9P1g="; hash = "sha256-5upC+IWHBJE5DeFv96lD1hr4LYYaqAAzfxIroK9KlOY=";
owner = "wine-staging"; owner = "wine-staging";
repo = "wine-staging"; repo = "wine-staging";
rev = "v${version}"; rev = "v${version}";

View File

@ -28,13 +28,13 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "xemu"; pname = "xemu";
version = "0.7.103"; version = "0.7.104";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "xemu-project"; owner = "xemu-project";
repo = "xemu"; repo = "xemu";
rev = "v${finalAttrs.version}"; rev = "v${finalAttrs.version}";
hash = "sha256-yBeaRZH8YVrZATBLpUPheS2SY/rAKaRc3HKtFHKOV8E="; hash = "sha256-Oo8YwCDl2E8wW4NIO2KeGRX3GZ/pDVsnHEzEDXkLkN8=";
fetchSubmodules = true; fetchSubmodules = true;
}; };

View File

@ -54,7 +54,7 @@
, breeze-icons , breeze-icons
, oxygen , oxygen
, cudaSupport ? config.cudaSupport or false , cudaSupport ? config.cudaSupport
, cudaPackages ? {} , cudaPackages ? {}
}: }:

View File

@ -12,13 +12,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "vipsdisp"; pname = "vipsdisp";
version = "2.5.0"; version = "2.5.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jcupitt"; owner = "jcupitt";
repo = "vipsdisp"; repo = "vipsdisp";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-zAvwT6tlL4+EYxJSjnb3Eud1MVbj7Yz4vJcrqM5jXDQ="; hash = "sha256-hx7daXVarV4JdxZfwnTHsuxxijCRP17gkOjicI3EFlM=";
}; };
postPatch = '' postPatch = ''

View File

@ -5,7 +5,7 @@
, openvdb, libXxf86vm, tbb, alembic , openvdb, libXxf86vm, tbb, alembic
, zlib, zstd, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath , zlib, zstd, fftw, opensubdiv, freetype, jemalloc, ocl-icd, addOpenGLRunpath
, jackaudioSupport ? false, libjack2 , jackaudioSupport ? false, libjack2
, cudaSupport ? config.cudaSupport or false, cudaPackages ? {} , cudaSupport ? config.cudaSupport, cudaPackages ? { }
, hipSupport ? false, hip # comes with a significantly larger closure size , hipSupport ? false, hip # comes with a significantly larger closure size
, colladaSupport ? true, opencollada , colladaSupport ? true, opencollada
, spaceNavSupport ? stdenv.isLinux, libspnav , spaceNavSupport ? stdenv.isLinux, libspnav

View File

@ -0,0 +1,40 @@
{ lib, buildGoModule, installShellFiles, fetchFromGitHub }:
buildGoModule rec {
pname = "pop";
version = "0.1.0";
src = fetchFromGitHub {
owner = "charmbracelet";
repo = "pop";
rev = "v${version}";
sha256 = "VzSPQZfapB44hzGumy8JKe+v+n6af9fRSlAq1F7olCo=";
};
vendorSha256 = "VowqYygRKxpDJPfesJXBp00sBiHb57UMR/ZV//v7+90=";
GOWORK = "off";
nativeBuildInputs = [
installShellFiles
];
ldflags = [ "-s" "-w" "-X=main.Version=${version}" ];
postInstall = ''
$out/bin/pop man > pop.1
installManPage pop.1
installShellCompletion --cmd pop \
--bash <($out/bin/pop completion bash) \
--fish <($out/bin/pop completion fish) \
--zsh <($out/bin/pop completion zsh)
'';
meta = with lib; {
description = "Send emails from your terminal";
homepage = "https://github.com/charmbracelet/pop";
changelog = "https://github.com/charmbracelet/pop/releases/tag/v${version}";
license = licenses.mit;
maintainers = with maintainers; [ caarlos0 maaslalani ];
};
}

View File

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "spicetify-cli"; pname = "spicetify-cli";
version = "2.21.0"; version = "2.22.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "spicetify"; owner = "spicetify";
repo = "spicetify-cli"; repo = "spicetify-cli";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-6Jg56lQR8oK9TaJNqnEu70JkUz9OomvRbm5to2j3NOA="; hash = "sha256-+evDMYNo4Io0RAP5EkjA7h4QCLg21v4vLLloLZiSh0E=";
}; };
vendorHash = "sha256-Ypu3AKnjh2lDh43t1GZMJo7ZyEDyNbPWvoePLp+WQdI="; vendorHash = "sha256-Ypu3AKnjh2lDh43t1GZMJo7ZyEDyNbPWvoePLp+WQdI=";

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "ssw"; pname = "ssw";
version = "0.6"; version = "0.8";
src = fetchurl { src = fetchurl {
url = "https://alpha.gnu.org/gnu/ssw/spread-sheet-widget-${version}.tar.gz"; url = "https://alpha.gnu.org/gnu/ssw/spread-sheet-widget-${version}.tar.gz";
sha256 = "08ck9l697xg8vpya5h07raq837i4pqxjqzx30vhscq4xpps2b8kj"; sha256 = "sha256-hYnYKY/PO1hQ0JaLBIAaT0D68FVVRPbMnZVLAWLplUs=";
}; };
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];

View File

@ -66,7 +66,7 @@ python.pkgs.pythonPackages.buildPythonPackage rec {
django-storages django-storages
django-tables2 django-tables2
django-webpack-loader django-webpack-loader
django_treebeard django-treebeard
djangorestframework djangorestframework
drf-writable-nested drf-writable-nested
gunicorn gunicorn

View File

@ -1,16 +1,15 @@
{ lib { lib
, fetchgit , fetchFromGitea
, rustPlatform , rustPlatform
}: }:
let
repoUrl = "https://codeberg.org/explosion-mental/wallust";
in
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "wallust"; pname = "wallust";
version = "2.5.1"; version = "2.5.1";
src = fetchgit { src = fetchFromGitea {
url = "${repoUrl}.git"; domain = "codeberg.org";
owner = "explosion-mental";
repo = pname;
rev = version; rev = version;
hash = "sha256-v72ddWKK2TMHKeBihYjMoJvKXiPe/yqJtdh8VQzjmVU="; hash = "sha256-v72ddWKK2TMHKeBihYjMoJvKXiPe/yqJtdh8VQzjmVU=";
}; };
@ -19,10 +18,10 @@ rustPlatform.buildRustPackage rec {
meta = with lib; { meta = with lib; {
description = "A better pywal"; description = "A better pywal";
homepage = repoUrl; homepage = "https://codeberg.org/explosion-mental/wallust";
license = licenses.mit; license = licenses.mit;
maintainers = with maintainers; [ onemoresuza ]; maintainers = with maintainers; [ onemoresuza ];
downloadPage = "${repoUrl}/releases/tag/${version}"; downloadPage = "https://codeberg.org/explosion-mental/wallust/releases/tag/${version}";
platforms = platforms.unix; platforms = platforms.unix;
mainProgram = "wallust"; mainProgram = "wallust";
}; };

View File

@ -6,16 +6,16 @@
buildGoModule rec { buildGoModule rec {
pname = "kubecfg"; pname = "kubecfg";
version = "0.30.0"; version = "0.31.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "kubecfg"; owner = "kubecfg";
repo = "kubecfg"; repo = "kubecfg";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-sIT5vqcKMZvx+6rvUzH3l7aOXMWJq81Lwl9YsGwE66w="; hash = "sha256-1hjSuHGZ7NTsYLeV9Cw3wP5tUdAHRSmGlKkL54G/09U=";
}; };
vendorHash = "sha256-cJFAI/W5ImWcaU6cf/BFt78qES7wQtYnR863UvGP4aM="; vendorHash = "sha256-0cpb5thhTJ7LPOYSd4WSPnS9OTXU608nk8xX5bsAm5w=";
ldflags = [ ldflags = [
"-s" "-s"

View File

@ -2,13 +2,13 @@
buildGoModule rec { buildGoModule rec {
pname = "kubergrunt"; pname = "kubergrunt";
version = "0.11.3"; version = "0.12.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "gruntwork-io"; owner = "gruntwork-io";
repo = "kubergrunt"; repo = "kubergrunt";
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-d88IEbsk0bwC9Mzag3UOFVcSblCjaWXhKXC8iZr6V1s="; sha256 = "sha256-C3anYYyhRT+/0jO01uEBX1LLQadovO+Z9JA6nHTNXOo=";
}; };
vendorHash = "sha256-AUw1wJNWjpNVsjw/Hr1ZCePYWQkf1SqRVnQgi8tOFG0="; vendorHash = "sha256-AUw1wJNWjpNVsjw/Hr1ZCePYWQkf1SqRVnQgi8tOFG0=";

View File

@ -264,13 +264,13 @@
"vendorHash": "sha256-UJHDX/vx3n/RTuQ50Y6TAhpEEFk9yBoaz8yK02E8Fhw=" "vendorHash": "sha256-UJHDX/vx3n/RTuQ50Y6TAhpEEFk9yBoaz8yK02E8Fhw="
}, },
"consul": { "consul": {
"hash": "sha256-UaTvFxwbLf9krUdsslFP6MXzpacnj/AKXiyUe7iSRCs=", "hash": "sha256-2oujZd7tqvMnp48m3bs45p5dRC7U5a7hsiS5qBuPUHU=",
"homepage": "https://registry.terraform.io/providers/hashicorp/consul", "homepage": "https://registry.terraform.io/providers/hashicorp/consul",
"owner": "hashicorp", "owner": "hashicorp",
"repo": "terraform-provider-consul", "repo": "terraform-provider-consul",
"rev": "v2.17.0", "rev": "v2.18.0",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": "sha256-v1RHxXYTvpyWzyph6qg3GW75OPYc5qYQ/yyDI8WkbNc=" "vendorHash": "sha256-0SRbKFKl1lfiiMDZW20ak9m09T3tSOH/fc+UwGeXmuk="
}, },
"ct": { "ct": {
"hash": "sha256-c1cqTfMlZ5fXDNMYLsk4447X0p/qIQYvRTqVY8cSs+E=", "hash": "sha256-c1cqTfMlZ5fXDNMYLsk4447X0p/qIQYvRTqVY8cSs+E=",
@ -427,11 +427,11 @@
"vendorHash": "sha256-uWTY8cFztXFrQQ7GW6/R+x9M6vHmsb934ldq+oeW5vk=" "vendorHash": "sha256-uWTY8cFztXFrQQ7GW6/R+x9M6vHmsb934ldq+oeW5vk="
}, },
"github": { "github": {
"hash": "sha256-xPxrHOuvOT8VO0D7M1TI39i0B1GIQ4Z2F1UckGsU/1A=", "hash": "sha256-Y70HJEUArUCT1XM3F02bUNPwB1bW4N/Gg/M6aW7XcMM=",
"homepage": "https://registry.terraform.io/providers/integrations/github", "homepage": "https://registry.terraform.io/providers/integrations/github",
"owner": "integrations", "owner": "integrations",
"repo": "terraform-provider-github", "repo": "terraform-provider-github",
"rev": "v5.31.0", "rev": "v5.32.0",
"spdx": "MIT", "spdx": "MIT",
"vendorHash": null "vendorHash": null
}, },
@ -445,24 +445,24 @@
"vendorHash": "sha256-AVTWTS16d8QsPLLAJeAfgcVDzUBMp+b2oAphaCBqhS0=" "vendorHash": "sha256-AVTWTS16d8QsPLLAJeAfgcVDzUBMp+b2oAphaCBqhS0="
}, },
"google": { "google": {
"hash": "sha256-kv9DjEPFDeH2Cag2LAmn4GLbPkKXXij3nPRB2rpTizk=", "hash": "sha256-19oBc9w9/A9f2muBpKf1VvTSfLJc5jyD/wmDfg8o9yY=",
"homepage": "https://registry.terraform.io/providers/hashicorp/google", "homepage": "https://registry.terraform.io/providers/hashicorp/google",
"owner": "hashicorp", "owner": "hashicorp",
"proxyVendor": true, "proxyVendor": true,
"repo": "terraform-provider-google", "repo": "terraform-provider-google",
"rev": "v4.74.0", "rev": "v4.75.0",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": "sha256-DZmpvDSAace2Rh/BMq49bUJK8g0FCaFebjTJvw3lW8A=" "vendorHash": "sha256-2znSaprsw+uroTmLwh5+NXdgnUlkFXu4KbNLHgnGt2s="
}, },
"google-beta": { "google-beta": {
"hash": "sha256-WZHKmSTF+SS6cqyqhW7Jer9vI79CkNb5CCkO/mjUOVE=", "hash": "sha256-293Q6XSWBEFNiC+JgWi6LPIXAUoCCDXXwwRgsTjtLrE=",
"homepage": "https://registry.terraform.io/providers/hashicorp/google-beta", "homepage": "https://registry.terraform.io/providers/hashicorp/google-beta",
"owner": "hashicorp", "owner": "hashicorp",
"proxyVendor": true, "proxyVendor": true,
"repo": "terraform-provider-google-beta", "repo": "terraform-provider-google-beta",
"rev": "v4.74.0", "rev": "v4.75.0",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": "sha256-DZmpvDSAace2Rh/BMq49bUJK8g0FCaFebjTJvw3lW8A=" "vendorHash": "sha256-2znSaprsw+uroTmLwh5+NXdgnUlkFXu4KbNLHgnGt2s="
}, },
"googleworkspace": { "googleworkspace": {
"hash": "sha256-dedYnsKHizxJZibuvJOMbJoux0W6zgKaK5fxIofKqCY=", "hash": "sha256-dedYnsKHizxJZibuvJOMbJoux0W6zgKaK5fxIofKqCY=",
@ -492,13 +492,13 @@
"vendorHash": null "vendorHash": null
}, },
"hcloud": { "hcloud": {
"hash": "sha256-gb5Mp9LI0wb+oA+lfkEmrVEIJzCRoAhugFfJaOkvLVw=", "hash": "sha256-TbEbqTgzp7pUXrhjxvs5hrFI5u//xIIniOvusZsseiE=",
"homepage": "https://registry.terraform.io/providers/hetznercloud/hcloud", "homepage": "https://registry.terraform.io/providers/hetznercloud/hcloud",
"owner": "hetznercloud", "owner": "hetznercloud",
"repo": "terraform-provider-hcloud", "repo": "terraform-provider-hcloud",
"rev": "v1.41.0", "rev": "v1.42.0",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": "sha256-jEzCvhfQTK/1MCODUN4tNrtnNE0yR23QI5Vnx1kYr4E=" "vendorHash": "sha256-wrgGxCNa5xLdBEy6RNNCz8ZVracyVsHzHtaQse6Ph+E="
}, },
"helm": { "helm": {
"hash": "sha256-mGrQ5YKNsv1+Vkan5ohMXnTYofhCQPuTFjemXF/g+tA=", "hash": "sha256-mGrQ5YKNsv1+Vkan5ohMXnTYofhCQPuTFjemXF/g+tA=",
@ -1052,11 +1052,11 @@
"vendorHash": "sha256-NO1r/EWLgH1Gogru+qPeZ4sW7FuDENxzNnpLSKstnE8=" "vendorHash": "sha256-NO1r/EWLgH1Gogru+qPeZ4sW7FuDENxzNnpLSKstnE8="
}, },
"spotinst": { "spotinst": {
"hash": "sha256-gScCKmDH8uavJass9Fg9pa6u/ZZfkHEhfBHlyyv3svE=", "hash": "sha256-3NxeqlcodW6n7RbLferdGKMf2iXEEcMtmQgaMa/J4lU=",
"homepage": "https://registry.terraform.io/providers/spotinst/spotinst", "homepage": "https://registry.terraform.io/providers/spotinst/spotinst",
"owner": "spotinst", "owner": "spotinst",
"repo": "terraform-provider-spotinst", "repo": "terraform-provider-spotinst",
"rev": "v1.127.0", "rev": "v1.128.0",
"spdx": "MPL-2.0", "spdx": "MPL-2.0",
"vendorHash": "sha256-0rWVOVRndC/Y0gSfJoqd65rvBqUnNQb47S6RiBw7q+4=" "vendorHash": "sha256-0rWVOVRndC/Y0gSfJoqd65rvBqUnNQb47S6RiBw7q+4="
}, },

View File

@ -0,0 +1,35 @@
{ lib
, stdenvNoCC
, fetchurl
, unzip
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "cyberduck";
version = "8.6.0.39818";
src = fetchurl {
url = "https://update.cyberduck.io/Cyberduck-${finalAttrs.version}.zip";
sha256 = "1iqq54n267lmmdlv8wmr9k461p49jindc1mn5wy742k08cqxc5ab";
};
dontUnpack = true;
nativeBuildInputs = [ unzip ];
installPhase = ''
runHook preInstall
mkdir -p $out/Applications
unzip -d $out/Applications $src
runHook postInstall
'';
meta = with lib; {
description = "Libre file transfer client for Mac and Windows";
homepage = "https://cyberduck.io";
license = licenses.gpl3Plus;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
maintainers = with maintainers; [ emilytrau Enzime ];
platforms = platforms.darwin;
};
})

File diff suppressed because it is too large Load Diff

View File

@ -5,25 +5,28 @@
, meson , meson
, ninja , ninja
, pkg-config , pkg-config
, gst_all_1
, protobuf , protobuf
, libsecret , libsecret
, libadwaita , libadwaita
, rustPlatform , rustPlatform
, rustc , rustc
, appstream-glib
, blueprint-compiler
, desktop-file-utils , desktop-file-utils
, wrapGAppsHook4 , wrapGAppsHook4
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "flare"; pname = "flare";
version = "0.8.0"; version = "0.9.0";
src = fetchFromGitLab { src = fetchFromGitLab {
domain = "gitlab.com"; domain = "gitlab.com";
owner = "Schmiddiii"; owner = "Schmiddiii";
repo = pname; repo = pname;
rev = version; rev = version;
hash = "sha256-w4WaWcUsjKiWfNe5StwRcPlcXqWz0427It96L1NsR0U="; hash = "sha256-6p9uuK71fJvJs0U14jJEVb2mfpZWrCZZFE3eoZe9eVo=";
}; };
cargoDeps = rustPlatform.importCargoLock { cargoDeps = rustPlatform.importCargoLock {
@ -31,12 +34,14 @@ stdenv.mkDerivation rec {
outputHashes = { outputHashes = {
"curve25519-dalek-3.2.1" = "sha256-0hFRhn920tLBpo6ZNCl6DYtTMHMXY/EiDvuhOPVjvC0="; "curve25519-dalek-3.2.1" = "sha256-0hFRhn920tLBpo6ZNCl6DYtTMHMXY/EiDvuhOPVjvC0=";
"libsignal-protocol-0.1.0" = "sha256-IBhmd3WzkICiADO24WLjDJ8pFILGwWNUHLXKpt+Y0IY="; "libsignal-protocol-0.1.0" = "sha256-IBhmd3WzkICiADO24WLjDJ8pFILGwWNUHLXKpt+Y0IY=";
"libsignal-service-0.1.0" = "sha256-art5O06X4lhp9PoAd23mi6F1wRWkUcyON7AK8uBDoK8="; "libsignal-service-0.1.0" = "sha256-WSRqBNq9jbe6PSeExfmehNZwjlB70GLlHkrDlw59O5c=";
"presage-0.6.0-dev" = "sha256-DVImXySYL0zlGkwss/5DnQ3skTaBa7l55VWIGCd6kQU="; "presage-0.6.0-dev" = "sha256-oNDfFLir3XL2UOGrWR/IFO7XTeJKX+vjdrd3qbIomtw=";
}; };
}; };
nativeBuildInputs = [ nativeBuildInputs = [
appstream-glib # for appstream-util
blueprint-compiler
desktop-file-utils # for update-desktop-database desktop-file-utils # for update-desktop-database
meson meson
ninja ninja
@ -51,6 +56,12 @@ stdenv.mkDerivation rec {
libadwaita libadwaita
libsecret libsecret
protobuf protobuf
# To reproduce audio messages
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
]; ];
meta = { meta = {

View File

@ -2,13 +2,13 @@
(if stdenv.isDarwin then darwin.apple_sdk_11_0.llvmPackages_14.stdenv else stdenv).mkDerivation rec { (if stdenv.isDarwin then darwin.apple_sdk_11_0.llvmPackages_14.stdenv else stdenv).mkDerivation rec {
pname = "signalbackup-tools"; pname = "signalbackup-tools";
version = "20230716"; version = "20230723-1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "bepaald"; owner = "bepaald";
repo = pname; repo = pname;
rev = version; rev = version;
hash = "sha256-k2QY+7mEXqvDzO0xv3XxQdhDje4iCPVOUybWnONLMTM="; hash = "sha256-EHwQHFKahjpP8OOIY0ZRpkmYZYiDNteeMLkRwJIEp7g=";
}; };
postPatch = '' postPatch = ''

View File

@ -17,18 +17,18 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "teams-for-linux"; pname = "teams-for-linux";
version = "1.2.4"; version = "1.2.8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "IsmaelMartinez"; owner = "IsmaelMartinez";
repo = "teams-for-linux"; repo = "teams-for-linux";
rev = "v${finalAttrs.version}"; rev = "v${finalAttrs.version}";
hash = "sha256-x5OYSU396FIgFbs4VchEpKI8Xv0mk2XPraejBgzWta0="; hash = "sha256-5OocTsQjmNZCnzAY1RfrxD6Ad/kZTIkFl/3OmeJl1oI=";
}; };
offlineCache = fetchYarnDeps { offlineCache = fetchYarnDeps {
yarnLock = "${finalAttrs.src}/yarn.lock"; yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-HiNBXDQuPM8MnSkxYS5f+kop5QeUintNPBWtp6uhiz8="; hash = "sha256-XUASMWrH8wWeYsr6gCdQGgV/7E6hLDWkJ0BXHZCepKQ=";
}; };
patches = [ patches = [

View File

@ -30,11 +30,11 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "teamspeak-client"; pname = "teamspeak-client";
version = "3.6.0"; version = "3.6.1";
src = fetchurl { src = fetchurl {
url = "https://files.teamspeak-services.com/releases/client/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run"; url = "https://files.teamspeak-services.com/releases/client/${version}/TeamSpeak3-Client-linux_${arch}-${version}.run";
hash = "sha256-ZbElnFoQmXdtCR9lb6eOz4dMzSwpfjC1DvG3VbDoSEA="; hash = "sha256-j4sgZ+tJpV6ST0yLmbLTLgBxQTcK1LZoEEfMe3TUAC4=";
}; };
# grab the plugin sdk for the desktop icon # grab the plugin sdk for the desktop icon

View File

@ -3,12 +3,12 @@ electron, libsecret }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "tutanota-desktop"; pname = "tutanota-desktop";
version = "3.113.3"; version = "3.115.2";
src = fetchurl { src = fetchurl {
url = "https://github.com/tutao/tutanota/releases/download/tutanota-desktop-release-${version}/${pname}-${version}-unpacked-linux.tar.gz"; url = "https://github.com/tutao/tutanota/releases/download/tutanota-desktop-release-${version}/${pname}-${version}-unpacked-linux.tar.gz";
name = "tutanota-desktop-${version}.tar.gz"; name = "tutanota-desktop-${version}.tar.gz";
sha256 = "sha256-d4yvz0BE0YeZjcH9X/2eGAk5CmJI4CQWblVoU5CO77k="; sha256 = "sha256-PdVvrb+sC8LF4tZXAHt2CevyoXhxTXJB01Fe64YI6BI=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -1,6 +1,5 @@
{ lib { lib
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, buildGoModule , buildGoModule
, testers , testers
, seaweedfs , seaweedfs
@ -8,26 +7,16 @@
buildGoModule rec { buildGoModule rec {
pname = "seaweedfs"; pname = "seaweedfs";
version = "3.54"; version = "3.55";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "seaweedfs"; owner = "seaweedfs";
repo = "seaweedfs"; repo = "seaweedfs";
rev = version; rev = version;
hash = "sha256-2E2ANJIKWhUUxxSqk5+QROeoKnp1Akl5Bp+i8pPTkuQ="; hash = "sha256-qAyvGisj6GOjyRmqpTsxX/Zy8bx6+cAtmEId5us70+k=";
}; };
patches = [ vendorHash = "sha256-F6Fqv5tUsty/uGwBnKM4r671Gh2T1+9Z2LRGAMF+M2g=";
# Fix build on aarch64-darwin
# (remove again when v3.55 is released)
# https://github.com/seaweedfs/seaweedfs/pull/4679
(fetchpatch {
url = "https://github.com/seaweedfs/seaweedfs/commit/1bfc9581e0bc04f394187a0d39f319ad65df5aca.patch";
hash = "sha256-znQFtm8BYAjuvXa+vibawBb+uhnjOL9/o0sXNoXwLk8=";
})
];
vendorHash = "sha256-VK7BmApGq+X1oNjcwCSYHcEvVjL87t8fgJXLNQSfy3I=";
subPackages = [ "weed" ]; subPackages = [ "weed" ];

View File

@ -20,13 +20,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "meteo"; pname = "meteo";
version = "0.9.9.1"; version = "0.9.9.2";
src = fetchFromGitLab { src = fetchFromGitLab {
owner = "bitseater"; owner = "bitseater";
repo = pname; repo = pname;
rev = version; rev = version;
sha256 = "sha256-kkUVTxh5svk61oDp/dpe3ILGyexYe3UaS+LgWsy+Z9s="; sha256 = "sha256-9+FNpLjiX0zdsUnbBnNSLt/Ma/cqtclP25tl+faPlpU=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -0,0 +1,32 @@
From 982d38084f08950863b55043f36ce5548bd73635 Mon Sep 17 00:00:00 2001
From: Maximilian Bosch <maximilian@mbosch.me>
Date: Mon, 24 Jul 2023 19:12:25 +0200
Subject: [PATCH] Strip away BUILDCONFIG
The `BuildConfig` field in `libsofficeapp.so` includes the entire
`PKG_CONFIG_PATH` and subsequently references to a lot of `dev` outputs
of library dependencies blowing up the closure.
Since this is not strictly needed and the inputs are comprehensible via
`nix derivation show`, this doesn't bring a real benefit in the case of
nixpkgs anyways.
---
desktop/source/lib/init.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/desktop/source/lib/init.cxx b/desktop/source/lib/init.cxx
index 8d830c0cbd00..fbdc86aa7115 100644
--- a/desktop/source/lib/init.cxx
+++ b/desktop/source/lib/init.cxx
@@ -7097,7 +7097,7 @@ static char* lo_getVersionInfo(SAL_UNUSED_PARAMETER LibreOfficeKit* /*pThis*/)
"\"ProductVersion\": \"%PRODUCTVERSION\", "
"\"ProductExtension\": \"%PRODUCTEXTENSION\", "
"\"BuildId\": \"%BUILDID\", "
- "\"BuildConfig\": \"" BUILDCONFIG "\" "
+ "\"BuildConfig\": \"removed to avoid runtime dependencies against dev outputs of each dependency. Use 'nix derivation show' against the package to find out details about BuildConfig.\" "
"}"));
}
--
2.40.1

View File

@ -214,6 +214,22 @@ in
tar -xf ${srcs.translations} tar -xf ${srcs.translations}
''; '';
# Remove build config to reduce the amount of `-dev` outputs in the
# runtime closure. This was introduced in upstream commit
# cbfac11330882c7d0a817b6c37a08b2ace2b66f4, so the patch doesn't apply
# for 7.4.
patches = lib.optionals (lib.versionAtLeast version "7.5") [
./0001-Strip-away-BUILDCONFIG.patch
];
# libreoffice tries to reference the BUILDCONFIG (e.g. PKG_CONFIG_PATH)
# in the binary causing the closure size to blow up because of many unnecessary
# dependencies to dev outputs. This behavior was patched away in nixpkgs
# (see above), make sure these don't leak again by accident.
disallowedRequisites = lib.concatMap
(x: lib.optional (x?dev) x.dev)
buildInputs;
### QT/KDE ### QT/KDE
# #
# configure.ac assumes that the first directory that contains headers and # configure.ac assumes that the first directory that contains headers and

View File

@ -17,7 +17,10 @@ stdenv.mkDerivation rec {
sha256 = "sha256-kqnLi1iobcufVWMPxUyaRsWKIPyTvtUkuMERGQs2qgY="; sha256 = "sha256-kqnLi1iobcufVWMPxUyaRsWKIPyTvtUkuMERGQs2qgY=";
}; };
configureFlags = [ "--sysconfdir=/etc" ]; configureFlags = [
"--sysconfdir=/etc"
"--localstatedir=/var/lib"
];
meta = with lib; { meta = with lib; {
description = "Non-GUI tools used to configure an AX.25 enabled computer"; description = "Non-GUI tools used to configure an AX.25 enabled computer";

View File

@ -33,7 +33,7 @@ python3Packages.buildPythonApplication rec {
homepage = "https://github.com/jopohl/urh"; homepage = "https://github.com/jopohl/urh";
description = "Universal Radio Hacker: investigate wireless protocols like a boss"; description = "Universal Radio Hacker: investigate wireless protocols like a boss";
license = licenses.gpl3; license = licenses.gpl3;
platforms = platforms.linux; platforms = platforms.unix;
maintainers = with maintainers; [ fpletz ]; maintainers = with maintainers; [ fpletz ];
}; };
} }

View File

@ -0,0 +1,59 @@
{ buildFHSEnv
, dbus
, fetchzip
, fontconfig
, freetype
, glib
, lib
, libGL
, stdenv
, xkeyboard_config
, xorg
, zlib
}:
let
name = "kingstvis";
version = "3.6.1";
src = fetchzip {
url = "http://res.kingst.site/kfs/KingstVIS_v${version}.tar.gz";
hash = "sha256-eZJ3RZWdmNx/El3Hh5kUf44pIwdvwOEkRysYBgUkS18=";
};
in
buildFHSEnv {
inherit name;
targetPkgs = pkgs: (with pkgs; [
dbus
fontconfig
freetype
glib
libGL
xkeyboard_config
xorg.libICE
xorg.libSM
xorg.libX11
xorg.libXext
xorg.libXi
xorg.libXrender
xorg.libxcb
zlib
]);
extraInstallCommands = ''
install -Dvm644 ${src}/Driver/99-Kingst.rules \
$out/lib/udev/rules.d/99-Kingst.rules
'';
runScript = "${src}/KingstVIS";
meta = {
description = "Kingst Virtual Instruments Studio, software for logic analyzers";
homepage = "http://www.qdkingst.com/";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
maintainers = [ lib.maintainers.luisdaranda ];
platforms = [ "x86_64-linux" ];
};
}

View File

@ -13,7 +13,7 @@
, Accelerate, CoreGraphics, CoreVideo , Accelerate, CoreGraphics, CoreVideo
, lmdbSupport ? true, lmdb , lmdbSupport ? true, lmdb
, leveldbSupport ? true, leveldb, snappy , leveldbSupport ? true, leveldb, snappy
, cudaSupport ? config.cudaSupport or false, cudaPackages ? {} , cudaSupport ? config.cudaSupport, cudaPackages ? { }
, cudnnSupport ? cudaSupport , cudnnSupport ? cudaSupport
, ncclSupport ? false , ncclSupport ? false
, pythonSupport ? false, python ? null, numpy ? null , pythonSupport ? false, python ? null, numpy ? null

View File

@ -2,7 +2,8 @@
, fetchpatch , fetchpatch
, openblas, blas, lapack, opencv3, libzip, boost, protobuf, mpi , openblas, blas, lapack, opencv3, libzip, boost, protobuf, mpi
, onebitSGDSupport ? false , onebitSGDSupport ? false
, cudaSupport ? false, cudaPackages ? {}, addOpenGLRunpath, cudatoolkit, nvidia_x11 , config
, cudaSupport ? config.cudaSupport, cudaPackages ? { }, addOpenGLRunpath, cudatoolkit, nvidia_x11
, cudnnSupport ? cudaSupport , cudnnSupport ? cudaSupport
}: }:

View File

@ -2,7 +2,7 @@
, config , config
, lib , lib
, cudaPackages , cudaPackages
, cudaSupport ? config.cudaSupport or false , cudaSupport ? config.cudaSupport
, lang ? "en" , lang ? "en"
, webdoc ? false , webdoc ? false
, version ? null , version ? null

View File

@ -1,6 +1,6 @@
{ config, stdenv, lib, fetchurl, fetchpatch, bash, cmake { config, stdenv, lib, fetchurl, fetchpatch, bash, cmake
, opencv3, gtest, blas, gomp, llvmPackages, perl , opencv3, gtest, blas, gomp, llvmPackages, perl
, cudaSupport ? config.cudaSupport or false, cudaPackages ? {}, nvidia_x11 , cudaSupport ? config.cudaSupport, cudaPackages ? { }, nvidia_x11
, cudnnSupport ? cudaSupport , cudnnSupport ? cudaSupport
}: }:

View File

@ -1,6 +1,7 @@
{ mkDerivation, lib, fetchFromGitHub, cmake, boost179, ceres-solver, eigen, { mkDerivation, lib, fetchFromGitHub, cmake, boost179, ceres-solver, eigen,
freeimage, glog, libGLU, glew, qtbase, freeimage, glog, libGLU, glew, qtbase,
cudaSupport ? false, cudaPackages }: config,
cudaSupport ? config.cudaSupport, cudaPackages }:
assert cudaSupport -> cudaPackages != { }; assert cudaSupport -> cudaPackages != { };

View File

@ -1,7 +1,8 @@
{ lib, stdenv, fetchurl, cmake, hwloc, fftw, perl, blas, lapack, mpi, cudatoolkit { lib, stdenv, fetchurl, cmake, hwloc, fftw, perl, blas, lapack, mpi, cudatoolkit
, singlePrec ? true , singlePrec ? true
, config
, enableMpi ? false , enableMpi ? false
, enableCuda ? false , enableCuda ? config.cudaSupport
, cpuAcceleration ? null , cpuAcceleration ? null
}: }:

View File

@ -0,0 +1,27 @@
{ lib
, buildGoModule
, fetchFromGitHub
}:
buildGoModule rec {
pname = "psitop";
version = "1.0.0";
src = fetchFromGitHub {
owner = "jamespwilliams";
repo = "psitop";
rev = version;
hash = "sha256-C8WEbA7XXohKFz7QgII0LPU1eJ4Z7CSlmEOamgo4wQI=";
};
vendorHash = "sha256-oLtKpBvTsM5TbzfWIDfqgb7DL5D3Mldu0oimVeiUeSc=";
ldflags = [ "-s" "-w" ];
meta = with lib; {
description = "Top for /proc/pressure";
homepage = "https://github.com/jamespwilliams/psitop";
license = licenses.mit;
maintainers = with maintainers; [ figsoda ];
};
}

View File

@ -1,7 +1,7 @@
{ lib { lib
, stdenv , stdenv
, fetchFromGitLab , fetchFromGitLab
, fetchurl , fetchpatch
, meson , meson
, ninja , ninja
, pkg-config , pkg-config
@ -37,6 +37,14 @@ stdenv.mkDerivation rec {
hash = "sha256-ebwh9WTooJuvYFIygDBn9lYC7+lx9P1HskvKU8EX9jw="; hash = "sha256-ebwh9WTooJuvYFIygDBn9lYC7+lx9P1HskvKU8EX9jw=";
}; };
patches = [
# Fix closing confirmation dialogs not showing
(fetchpatch {
url = "https://gitlab.gnome.org/raggesilver/blackbox/-/commit/3978c9b666d27adba835dd47cf55e21515b6d6d9.patch";
hash = "sha256-L/Ci4YqYNzb3F49bUwEWSjzr03MIPK9A5FEJCCct+7A=";
})
];
postPatch = '' postPatch = ''
patchShebangs build-aux/meson/postinstall.py patchShebangs build-aux/meson/postinstall.py
''; '';

View File

@ -8,19 +8,19 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "gex"; pname = "gex";
version = "0.5.0"; version = "0.6.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Piturnah"; owner = "Piturnah";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
hash = "sha256-//sQ0s8bBQzuu5aO3RjPRjFuVYiGW6BwSPoCWKAx9DQ="; hash = "sha256-J2tmDpt4vRFgD5yfFZOdBLROvyZVEthc+MHM1Yta5jI=";
}; };
nativeBuildInputs = [ pkg-config ]; nativeBuildInputs = [ pkg-config ];
buildInputs = [ libgit2 ]; buildInputs = [ libgit2 ];
cargoHash = "sha256-rkhkFnRDtMTWFM+E5C4jR7TWtHdy3WUtIzvGDDLHqtE="; cargoHash = "sha256-AsUHswR7+wMyAvOp3rkvRJvThHLH993gQ+/V38vbbNQ=";
meta = with lib; { meta = with lib; {
description = "Git Explorer: cross-platform git workflow improvement tool inspired by Magit"; description = "Git Explorer: cross-platform git workflow improvement tool inspired by Magit";

View File

@ -2,16 +2,16 @@
buildGoModule rec { buildGoModule rec {
pname = "gh"; pname = "gh";
version = "2.32.0"; version = "2.32.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cli"; owner = "cli";
repo = "cli"; repo = "cli";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-YnIwrx/NEOH3yXkkCq30i9Jt2IXKX5IX8BuM6+u9tvs="; hash = "sha256-DfcafkgauO0mlMEJTfR7hjnkY1QJ4dUyrWv/bqJlVAo=";
}; };
vendorHash = "sha256-fbf5EKDISdptbiJipvqygfjGWAP6fPXbYsgxVq8eUnM="; vendorHash = "sha256-7Izhqma/zukH9M7EvV9I4axefVaTDoNVXQmLx+GjAt0=";
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];

View File

@ -12,13 +12,13 @@
buildPythonApplication rec { buildPythonApplication rec {
pname = "git-machete"; pname = "git-machete";
version = "3.17.6"; version = "3.17.8";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "virtuslab"; owner = "virtuslab";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
hash = "sha256-o3Z1xPu5RcspU4m3Bb6ydZkXOMgOMJPN/+TLekwe/wI="; hash = "sha256-d1vbLlGKln/zcuuKZgNOcu/z15co3p8ecrwL5lucIEk=";
}; };
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];

View File

@ -151,7 +151,7 @@ stdenv.mkDerivation rec {
video content, efficiently video content, efficiently
''; '';
homepage = "https://obsproject.com"; homepage = "https://obsproject.com";
maintainers = with maintainers; [ jb55 MP2E V miangraham ]; maintainers = with maintainers; [ jb55 MP2E V ];
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ]; platforms = [ "x86_64-linux" "i686-linux" "aarch64-linux" ];
mainProgram = "obs"; mainProgram = "obs";

View File

@ -40,7 +40,6 @@ let
runc runc
crun crun
conmon conmon
slirp4netns
fuse-overlayfs fuse-overlayfs
util-linux util-linux
iptables iptables
@ -57,18 +56,19 @@ let
aardvark-dns aardvark-dns
catatonit # added here for the pause image and also set in `containersConf` for `init_path` catatonit # added here for the pause image and also set in `containersConf` for `init_path`
netavark netavark
slirp4netns
]; ];
}; };
in in
buildGoModule rec { buildGoModule rec {
pname = "podman"; pname = "podman";
version = "4.5.1"; version = "4.6.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "containers"; owner = "containers";
repo = "podman"; repo = "podman";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-PG2/iMsr/shLqhuYSvhT1I1kPDh0g0ebnGUHHzA7u5A="; hash = "sha256-8cfEZBYhR5CWkHEpIZ0j011gyV6lnY7z4KgJPJr0MfQ=";
}; };
patches = [ patches = [

View File

@ -1,9 +1,9 @@
diff --git a/pkg/machine/qemu/machine.go b/pkg/machine/qemu/machine.go diff --git a/pkg/machine/qemu/machine.go b/pkg/machine/qemu/machine.go
index 4f25b4d26..8a79862fd 100644 index a118285f7..d775f0099 100644
--- a/pkg/machine/qemu/machine.go --- a/pkg/machine/qemu/machine.go
+++ b/pkg/machine/qemu/machine.go +++ b/pkg/machine/qemu/machine.go
@@ -1509,11 +1509,6 @@ func (v *MachineVM) waitAPIAndPrintInfo(forwardState apiForwardingState, forward @@ -1560,11 +1560,6 @@ func (v *MachineVM) waitAPIAndPrintInfo(forwardState machine.APIForwardingState,
case notInstalled: case machine.NotInstalled:
fmt.Printf("\nThe system helper service is not installed; the default Docker API socket\n") fmt.Printf("\nThe system helper service is not installed; the default Docker API socket\n")
fmt.Printf("address can't be used by podman. ") fmt.Printf("address can't be used by podman. ")
- if helper := findClaimHelper(); len(helper) > 0 { - if helper := findClaimHelper(); len(helper) > 0 {
@ -11,6 +11,6 @@ index 4f25b4d26..8a79862fd 100644
- fmt.Printf("\n\tsudo %s install\n", helper) - fmt.Printf("\n\tsudo %s install\n", helper)
- fmt.Printf("\tpodman machine stop%s; podman machine start%s\n\n", suffix, suffix) - fmt.Printf("\tpodman machine stop%s; podman machine start%s\n\n", suffix, suffix)
- } - }
case machineLocal: case machine.MachineLocal:
fmt.Printf("\nAnother process was listening on the default Docker API socket address.\n") fmt.Printf("\nAnother process was listening on the default Docker API socket address.\n")
case claimUnsupported: case machine.ClaimUnsupported:

View File

@ -33,7 +33,7 @@
}: }:
let let
pname = "gamescope"; pname = "gamescope";
version = "3.12.0-beta9"; version = "3.12.0-beta10";
vkroots = fetchFromGitHub { vkroots = fetchFromGitHub {
owner = "Joshua-Ashton"; owner = "Joshua-Ashton";
@ -49,7 +49,7 @@ stdenv.mkDerivation {
owner = "ValveSoftware"; owner = "ValveSoftware";
repo = "gamescope"; repo = "gamescope";
rev = "refs/tags/${version}"; rev = "refs/tags/${version}";
hash = "sha256-nPFHMRp3uq2CIxY3EdaoTltqyb5z0kFwXw5U9ajbrfo="; hash = "sha256-31zGo22Z0+zQ81LmzI+Xif9eREzRpS0S9+nK1i/cBCY=";
}; };
patches = [ patches = [

View File

@ -0,0 +1,80 @@
{ lib, runCommandNoCC, dasel }:
let
daselBin = lib.getExe dasel;
inherit (lib)
last
optionalString
types
;
in
rec {
# Creates a transformer function that writes input data to disk, transformed
# by both the `input` and `output` arguments.
#
# Type: makeDataWriter :: input -> output -> nameOrPath -> data -> (any -> string) -> string -> string -> any -> derivation
#
# input :: T -> string: function that takes the nix data and returns a string
# output :: string: script that takes the $inputFile and write the result into $out
# nameOrPath :: string: if the name contains a / the files gets written to a sub-folder of $out. The derivation name is the basename of this argument.
# data :: T: the data that will be converted.
#
# Example:
# writeJSON = makeDataWriter { input = builtins.toJSON; output = "cp $inputPath $out"; };
# myConfig = writeJSON "config.json" { hello = "world"; }
#
makeDataWriter = { input ? lib.id, output ? "cp $inputPath $out" }: nameOrPath: data:
assert lib.or (types.path.check nameOrPath) (builtins.match "([0-9A-Za-z._])[0-9A-Za-z._-]*" nameOrPath != null);
let
name = last (builtins.split "/" nameOrPath);
in
runCommandNoCC name
{
input = input data;
passAsFile = [ "input" ];
} ''
${output}
${optionalString (types.path.check nameOrPath) ''
mv $out tmp
mkdir -p $out/$(dirname "${nameOrPath}")
mv tmp $out/${nameOrPath}
''}
'';
# Writes the content to text.
#
# Example:
# writeText "filename.txt" "file content"
writeText = makeDataWriter {
input = toString;
output = "cp $inputPath $out";
};
# Writes the content to a JSON file.
#
# Example:
# writeJSON "data.json" { hello = "world"; }
writeJSON = makeDataWriter {
input = builtins.toJSON;
output = "${daselBin} -f $inputPath -r json -w json > $out";
};
# Writes the content to a TOML file.
#
# Example:
# writeTOML "data.toml" { hello = "world"; }
writeTOML = makeDataWriter {
input = builtins.toJSON;
output = "${daselBin} -f $inputPath -r json -w toml > $out";
};
# Writes the content to a YAML file.
#
# Example:
# writeYAML "data.yaml" { hello = "world"; }
writeYAML = makeDataWriter {
input = builtins.toJSON;
output = "${daselBin} -f $inputPath -r json -w yaml > $out";
};
}

View File

@ -1,367 +1,18 @@
{ pkgs, config, buildPackages, lib, stdenv, libiconv, mkNugetDeps, mkNugetSource, gixy }: { pkgs, config, lib }:
let let
aliases = if config.allowAliases then (import ./aliases.nix lib) else prev: {}; aliases = if config.allowAliases then (import ./aliases.nix lib) else prev: {};
writers = with lib; rec { # Writers for JSON-like data structures
# Base implementation for non-compiled executables. dataWriters = import ./data.nix {
# Takes an interpreter, for example `${pkgs.bash}/bin/bash` inherit lib; inherit (pkgs) runCommandNoCC dasel;
#
# Examples:
# writeBash = makeScriptWriter { interpreter = "${pkgs.bash}/bin/bash"; }
# makeScriptWriter { interpreter = "${pkgs.dash}/bin/dash"; } "hello" "echo hello world"
makeScriptWriter = { interpreter, check ? "" }: nameOrPath: content:
assert lib.or (types.path.check nameOrPath) (builtins.match "([0-9A-Za-z._])[0-9A-Za-z._-]*" nameOrPath != null);
assert lib.or (types.path.check content) (types.str.check content);
let
name = last (builtins.split "/" nameOrPath);
in
pkgs.runCommandLocal name (if (types.str.check content) then {
inherit content interpreter;
passAsFile = [ "content" ];
} else {
inherit interpreter;
contentPath = content;
}) ''
# On darwin a script cannot be used as an interpreter in a shebang but
# there doesn't seem to be a limit to the size of shebang and multiple
# arguments to the interpreter are allowed.
if [[ -n "${toString pkgs.stdenvNoCC.isDarwin}" ]] && isScript $interpreter
then
wrapperInterpreterLine=$(head -1 "$interpreter" | tail -c+3)
# Get first word from the line (note: xargs echo remove leading spaces)
wrapperInterpreter=$(echo "$wrapperInterpreterLine" | xargs echo | cut -d " " -f1)
if isScript $wrapperInterpreter
then
echo "error: passed interpreter ($interpreter) is a script which has another script ($wrapperInterpreter) as an interpreter, which is not supported."
exit 1
fi
# This should work as long as wrapperInterpreter is a shell, which is
# the case for programs wrapped with makeWrapper, like
# python3.withPackages etc.
interpreterLine="$wrapperInterpreterLine $interpreter"
else
interpreterLine=$interpreter
fi
echo "#! $interpreterLine" > $out
cat "$contentPath" >> $out
${optionalString (check != "") ''
${check} $out
''}
chmod +x $out
${optionalString (types.path.check nameOrPath) ''
mv $out tmp
mkdir -p $out/$(dirname "${nameOrPath}")
mv tmp $out/${nameOrPath}
''}
'';
# Base implementation for compiled executables.
# Takes a compile script, which in turn takes the name as an argument.
#
# Examples:
# writeSimpleC = makeBinWriter { compileScript = name: "gcc -o $out $contentPath"; }
makeBinWriter = { compileScript, strip ? true }: nameOrPath: content:
assert lib.or (types.path.check nameOrPath) (builtins.match "([0-9A-Za-z._])[0-9A-Za-z._-]*" nameOrPath != null);
assert lib.or (types.path.check content) (types.str.check content);
let
name = last (builtins.split "/" nameOrPath);
in
pkgs.runCommand name ((if (types.str.check content) then {
inherit content;
passAsFile = [ "content" ];
} else {
contentPath = content;
}) // lib.optionalAttrs (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) {
# post-link-hook expects codesign_allocate to be in PATH
# https://github.com/NixOS/nixpkgs/issues/154203
# https://github.com/NixOS/nixpkgs/issues/148189
nativeBuildInputs = [ stdenv.cc.bintools ];
}) ''
${compileScript}
${lib.optionalString strip
"${lib.getBin buildPackages.bintools-unwrapped}/bin/${buildPackages.bintools-unwrapped.targetPrefix}strip -S $out"}
# Sometimes binaries produced for darwin (e. g. by GHC) won't be valid
# mach-o executables from the get-go, but need to be corrected somehow
# which is done by fixupPhase.
${lib.optionalString pkgs.stdenvNoCC.hostPlatform.isDarwin "fixupPhase"}
${optionalString (types.path.check nameOrPath) ''
mv $out tmp
mkdir -p $out/$(dirname "${nameOrPath}")
mv tmp $out/${nameOrPath}
''}
'';
# Like writeScript but the first line is a shebang to bash
#
# Example:
# writeBash "example" ''
# echo hello world
# ''
writeBash = makeScriptWriter {
interpreter = "${pkgs.bash}/bin/bash";
}; };
# Like writeScriptBin but the first line is a shebang to bash # Writers for scripts
writeBashBin = name: scriptWriters = import ./scripts.nix {
writeBash "/bin/${name}"; inherit lib pkgs;
# Like writeScript but the first line is a shebang to dash
#
# Example:
# writeDash "example" ''
# echo hello world
# ''
writeDash = makeScriptWriter {
interpreter = "${pkgs.dash}/bin/dash";
}; };
# Like writeScriptBin but the first line is a shebang to dash writers = scriptWriters // dataWriters;
writeDashBin = name:
writeDash "/bin/${name}";
# Like writeScript but the first line is a shebang to fish
#
# Example:
# writeFish "example" ''
# echo hello world
# ''
writeFish = makeScriptWriter {
interpreter = "${pkgs.fish}/bin/fish --no-config";
check = "${pkgs.fish}/bin/fish --no-config --no-execute"; # syntax check only
};
# Like writeScriptBin but the first line is a shebang to fish
writeFishBin = name:
writeFish "/bin/${name}";
# writeHaskell takes a name, an attrset with libraries and haskell version (both optional)
# and some haskell source code and returns an executable.
#
# Example:
# writeHaskell "missiles" { libraries = [ pkgs.haskellPackages.acme-missiles ]; } ''
# import Acme.Missiles
#
# main = launchMissiles
# '';
writeHaskell = name: {
libraries ? [],
ghc ? pkgs.ghc,
ghcArgs ? [],
threadedRuntime ? true,
strip ? true
}:
let
appendIfNotSet = el: list: if elem el list then list else list ++ [ el ];
ghcArgs' = if threadedRuntime then appendIfNotSet "-threaded" ghcArgs else ghcArgs;
in makeBinWriter {
compileScript = ''
cp $contentPath tmp.hs
${ghc.withPackages (_: libraries )}/bin/ghc ${lib.escapeShellArgs ghcArgs'} tmp.hs
mv tmp $out
'';
inherit strip;
} name;
# writeHaskellBin takes the same arguments as writeHaskell but outputs a directory (like writeScriptBin)
writeHaskellBin = name:
writeHaskell "/bin/${name}";
writeRust = name: {
rustc ? pkgs.rustc,
rustcArgs ? [],
strip ? true
}:
let
darwinArgs = lib.optionals stdenv.isDarwin [ "-L${lib.getLib libiconv}/lib" ];
in
makeBinWriter {
compileScript = ''
cp "$contentPath" tmp.rs
PATH=${makeBinPath [pkgs.gcc]} ${lib.getBin rustc}/bin/rustc ${lib.escapeShellArgs rustcArgs} ${lib.escapeShellArgs darwinArgs} -o "$out" tmp.rs
'';
inherit strip;
} name;
writeRustBin = name:
writeRust "/bin/${name}";
# writeJS takes a name an attributeset with libraries and some JavaScript sourcecode and
# returns an executable
#
# Example:
# writeJS "example" { libraries = [ pkgs.nodePackages.uglify-js ]; } ''
# var UglifyJS = require("uglify-js");
# var code = "function add(first, second) { return first + second; }";
# var result = UglifyJS.minify(code);
# console.log(result.code);
# ''
writeJS = name: { libraries ? [] }: content:
let
node-env = pkgs.buildEnv {
name = "node";
paths = libraries;
pathsToLink = [
"/lib/node_modules"
];
};
in writeDash name ''
export NODE_PATH=${node-env}/lib/node_modules
exec ${pkgs.nodejs}/bin/node ${pkgs.writeText "js" content} "$@"
'';
# writeJSBin takes the same arguments as writeJS but outputs a directory (like writeScriptBin)
writeJSBin = name:
writeJS "/bin/${name}";
awkFormatNginx = builtins.toFile "awkFormat-nginx.awk" ''
awk -f
{sub(/^[ \t]+/,"");idx=0}
/\{/{ctx++;idx=1}
/\}/{ctx--}
{id="";for(i=idx;i<ctx;i++)id=sprintf("%s%s", id, "\t");printf "%s%s\n", id, $0}
'';
writeNginxConfig = name: text: pkgs.runCommandLocal name {
inherit text;
passAsFile = [ "text" ];
nativeBuildInputs = [ gixy ];
} /* sh */ ''
# nginx-config-formatter has an error - https://github.com/1connect/nginx-config-formatter/issues/16
awk -f ${awkFormatNginx} "$textPath" | sed '/^\s*$/d' > $out
gixy $out
'';
# writePerl takes a name an attributeset with libraries and some perl sourcecode and
# returns an executable
#
# Example:
# writePerl "example" { libraries = [ pkgs.perlPackages.boolean ]; } ''
# use boolean;
# print "Howdy!\n" if true;
# ''
writePerl = name: { libraries ? [] }:
makeScriptWriter {
interpreter = "${pkgs.perl.withPackages (p: libraries)}/bin/perl";
} name;
# writePerlBin takes the same arguments as writePerl but outputs a directory (like writeScriptBin)
writePerlBin = name:
writePerl "/bin/${name}";
# makePythonWriter takes python and compatible pythonPackages and produces python script writer,
# which validates the script with flake8 at build time. If any libraries are specified,
# python.withPackages is used as interpreter, otherwise the "bare" python is used.
makePythonWriter = python: pythonPackages: buildPythonPackages: name: { libraries ? [], flakeIgnore ? [] }:
let
ignoreAttribute = optionalString (flakeIgnore != []) "--ignore ${concatMapStringsSep "," escapeShellArg flakeIgnore}";
in
makeScriptWriter {
interpreter =
if libraries == []
then python.interpreter
else (python.withPackages (ps: libraries)).interpreter
;
check = optionalString python.isPy3k (writeDash "pythoncheck.sh" ''
exec ${buildPythonPackages.flake8}/bin/flake8 --show-source ${ignoreAttribute} "$1"
'');
} name;
# writePyPy2 takes a name an attributeset with libraries and some pypy2 sourcecode and
# returns an executable
#
# Example:
# writePyPy2 "test_pypy2" { libraries = [ pkgs.pypy2Packages.enum ]; } ''
# from enum import Enum
#
# class Test(Enum):
# a = "success"
#
# print Test.a
# ''
writePyPy2 = makePythonWriter pkgs.pypy2 pkgs.pypy2Packages buildPackages.pypy2Packages;
# writePyPy2Bin takes the same arguments as writePyPy2 but outputs a directory (like writeScriptBin)
writePyPy2Bin = name:
writePyPy2 "/bin/${name}";
# writePython3 takes a name an attributeset with libraries and some python3 sourcecode and
# returns an executable
#
# Example:
# writePython3 "test_python3" { libraries = [ pkgs.python3Packages.pyyaml ]; } ''
# import yaml
#
# y = yaml.load("""
# - test: success
# """)
# print(y[0]['test'])
# ''
writePython3 = makePythonWriter pkgs.python3 pkgs.python3Packages buildPackages.python3Packages;
# writePython3Bin takes the same arguments as writePython3 but outputs a directory (like writeScriptBin)
writePython3Bin = name:
writePython3 "/bin/${name}";
# writePyPy3 takes a name an attributeset with libraries and some pypy3 sourcecode and
# returns an executable
#
# Example:
# writePyPy3 "test_pypy3" { libraries = [ pkgs.pypy3Packages.pyyaml ]; } ''
# import yaml
#
# y = yaml.load("""
# - test: success
# """)
# print(y[0]['test'])
# ''
writePyPy3 = makePythonWriter pkgs.pypy3 pkgs.pypy3Packages buildPackages.pypy3Packages;
# writePyPy3Bin takes the same arguments as writePyPy3 but outputs a directory (like writeScriptBin)
writePyPy3Bin = name:
writePyPy3 "/bin/${name}";
makeFSharpWriter = { dotnet-sdk ? pkgs.dotnet-sdk, fsi-flags ? "", libraries ? _: [] }: nameOrPath:
let
fname = last (builtins.split "/" nameOrPath);
path = if strings.hasSuffix ".fsx" nameOrPath then nameOrPath else "${nameOrPath}.fsx";
_nugetDeps = mkNugetDeps { name = "${fname}-nuget-deps"; nugetDeps = libraries; };
nuget-source = mkNugetSource {
name = "${fname}-nuget-source";
description = "A Nuget source with the dependencies for ${fname}";
deps = [ _nugetDeps ];
};
fsi = writeBash "fsi" ''
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_NOLOGO=1
script="$1"; shift
${dotnet-sdk}/bin/dotnet fsi --quiet --nologo --readline- ${fsi-flags} "$@" < "$script"
'';
in content: writers.makeScriptWriter {
interpreter = fsi;
} path
''
#i "nuget: ${nuget-source}/lib"
${ content }
exit 0
'';
writeFSharp =
makeFSharpWriter {};
writeFSharpBin = name:
writeFSharp "/bin/${name}";
};
in in
writers // (aliases writers) writers // (aliases writers)

View File

@ -0,0 +1,383 @@
{ pkgs, lib }:
let
inherit (lib)
concatMapStringsSep
elem
escapeShellArg
last
optionalString
stringLength
strings
types
;
inherit (pkgs)
buildPackages
gixy
libiconv
mkNugetDeps
mkNugetSource
stdenv
;
in
rec {
# Base implementation for non-compiled executables.
# Takes an interpreter, for example `${pkgs.bash}/bin/bash`
#
# Examples:
# writeBash = makeScriptWriter { interpreter = "${pkgs.bash}/bin/bash"; }
# makeScriptWriter { interpreter = "${pkgs.dash}/bin/dash"; } "hello" "echo hello world"
makeScriptWriter = { interpreter, check ? "" }: nameOrPath: content:
assert lib.or (types.path.check nameOrPath) (builtins.match "([0-9A-Za-z._])[0-9A-Za-z._-]*" nameOrPath != null);
assert lib.or (types.path.check content) (types.str.check content);
let
name = last (builtins.split "/" nameOrPath);
in
pkgs.runCommandLocal name (if (types.str.check content) then {
inherit content interpreter;
passAsFile = [ "content" ];
} else {
inherit interpreter;
contentPath = content;
}) ''
# On darwin a script cannot be used as an interpreter in a shebang but
# there doesn't seem to be a limit to the size of shebang and multiple
# arguments to the interpreter are allowed.
if [[ -n "${toString pkgs.stdenvNoCC.isDarwin}" ]] && isScript $interpreter
then
wrapperInterpreterLine=$(head -1 "$interpreter" | tail -c+3)
# Get first word from the line (note: xargs echo remove leading spaces)
wrapperInterpreter=$(echo "$wrapperInterpreterLine" | xargs echo | cut -d " " -f1)
if isScript $wrapperInterpreter
then
echo "error: passed interpreter ($interpreter) is a script which has another script ($wrapperInterpreter) as an interpreter, which is not supported."
exit 1
fi
# This should work as long as wrapperInterpreter is a shell, which is
# the case for programs wrapped with makeWrapper, like
# python3.withPackages etc.
interpreterLine="$wrapperInterpreterLine $interpreter"
else
interpreterLine=$interpreter
fi
echo "#! $interpreterLine" > $out
cat "$contentPath" >> $out
${optionalString (check != "") ''
${check} $out
''}
chmod +x $out
${optionalString (types.path.check nameOrPath) ''
mv $out tmp
mkdir -p $out/$(dirname "${nameOrPath}")
mv tmp $out/${nameOrPath}
''}
'';
# Base implementation for compiled executables.
# Takes a compile script, which in turn takes the name as an argument.
#
# Examples:
# writeSimpleC = makeBinWriter { compileScript = name: "gcc -o $out $contentPath"; }
makeBinWriter = { compileScript, strip ? true }: nameOrPath: content:
assert lib.or (types.path.check nameOrPath) (builtins.match "([0-9A-Za-z._])[0-9A-Za-z._-]*" nameOrPath != null);
assert lib.or (types.path.check content) (types.str.check content);
let
name = last (builtins.split "/" nameOrPath);
in
pkgs.runCommand name ((if (types.str.check content) then {
inherit content;
passAsFile = [ "content" ];
} else {
contentPath = content;
}) // lib.optionalAttrs (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) {
# post-link-hook expects codesign_allocate to be in PATH
# https://github.com/NixOS/nixpkgs/issues/154203
# https://github.com/NixOS/nixpkgs/issues/148189
nativeBuildInputs = [ stdenv.cc.bintools ];
}) ''
${compileScript}
${lib.optionalString strip
"${lib.getBin buildPackages.bintools-unwrapped}/bin/${buildPackages.bintools-unwrapped.targetPrefix}strip -S $out"}
# Sometimes binaries produced for darwin (e. g. by GHC) won't be valid
# mach-o executables from the get-go, but need to be corrected somehow
# which is done by fixupPhase.
${lib.optionalString pkgs.stdenvNoCC.hostPlatform.isDarwin "fixupPhase"}
${optionalString (types.path.check nameOrPath) ''
mv $out tmp
mkdir -p $out/$(dirname "${nameOrPath}")
mv tmp $out/${nameOrPath}
''}
'';
# Like writeScript but the first line is a shebang to bash
#
# Example:
# writeBash "example" ''
# echo hello world
# ''
writeBash = makeScriptWriter {
interpreter = "${pkgs.bash}/bin/bash";
};
# Like writeScriptBin but the first line is a shebang to bash
writeBashBin = name:
writeBash "/bin/${name}";
# Like writeScript but the first line is a shebang to dash
#
# Example:
# writeDash "example" ''
# echo hello world
# ''
writeDash = makeScriptWriter {
interpreter = "${pkgs.dash}/bin/dash";
};
# Like writeScriptBin but the first line is a shebang to dash
writeDashBin = name:
writeDash "/bin/${name}";
# Like writeScript but the first line is a shebang to fish
#
# Example:
# writeFish "example" ''
# echo hello world
# ''
writeFish = makeScriptWriter {
interpreter = "${pkgs.fish}/bin/fish --no-config";
check = "${pkgs.fish}/bin/fish --no-config --no-execute"; # syntax check only
};
# Like writeScriptBin but the first line is a shebang to fish
writeFishBin = name:
writeFish "/bin/${name}";
# writeHaskell takes a name, an attrset with libraries and haskell version (both optional)
# and some haskell source code and returns an executable.
#
# Example:
# writeHaskell "missiles" { libraries = [ pkgs.haskellPackages.acme-missiles ]; } ''
# import Acme.Missiles
#
# main = launchMissiles
# '';
writeHaskell = name: {
libraries ? [],
ghc ? pkgs.ghc,
ghcArgs ? [],
threadedRuntime ? true,
strip ? true
}:
let
appendIfNotSet = el: list: if elem el list then list else list ++ [ el ];
ghcArgs' = if threadedRuntime then appendIfNotSet "-threaded" ghcArgs else ghcArgs;
in makeBinWriter {
compileScript = ''
cp $contentPath tmp.hs
${ghc.withPackages (_: libraries )}/bin/ghc ${lib.escapeShellArgs ghcArgs'} tmp.hs
mv tmp $out
'';
inherit strip;
} name;
# writeHaskellBin takes the same arguments as writeHaskell but outputs a directory (like writeScriptBin)
writeHaskellBin = name:
writeHaskell "/bin/${name}";
writeRust = name: {
rustc ? pkgs.rustc,
rustcArgs ? [],
strip ? true
}:
let
darwinArgs = lib.optionals stdenv.isDarwin [ "-L${lib.getLib libiconv}/lib" ];
in
makeBinWriter {
compileScript = ''
cp "$contentPath" tmp.rs
PATH=${lib.makeBinPath [pkgs.gcc]} ${lib.getBin rustc}/bin/rustc ${lib.escapeShellArgs rustcArgs} ${lib.escapeShellArgs darwinArgs} -o "$out" tmp.rs
'';
inherit strip;
} name;
writeRustBin = name:
writeRust "/bin/${name}";
# writeJS takes a name an attributeset with libraries and some JavaScript sourcecode and
# returns an executable
#
# Example:
# writeJS "example" { libraries = [ pkgs.nodePackages.uglify-js ]; } ''
# var UglifyJS = require("uglify-js");
# var code = "function add(first, second) { return first + second; }";
# var result = UglifyJS.minify(code);
# console.log(result.code);
# ''
writeJS = name: { libraries ? [] }: content:
let
node-env = pkgs.buildEnv {
name = "node";
paths = libraries;
pathsToLink = [
"/lib/node_modules"
];
};
in writeDash name ''
export NODE_PATH=${node-env}/lib/node_modules
exec ${pkgs.nodejs}/bin/node ${pkgs.writeText "js" content} "$@"
'';
# writeJSBin takes the same arguments as writeJS but outputs a directory (like writeScriptBin)
writeJSBin = name:
writeJS "/bin/${name}";
awkFormatNginx = builtins.toFile "awkFormat-nginx.awk" ''
awk -f
{sub(/^[ \t]+/,"");idx=0}
/\{/{ctx++;idx=1}
/\}/{ctx--}
{id="";for(i=idx;i<ctx;i++)id=sprintf("%s%s", id, "\t");printf "%s%s\n", id, $0}
'';
writeNginxConfig = name: text: pkgs.runCommandLocal name {
inherit text;
passAsFile = [ "text" ];
nativeBuildInputs = [ gixy ];
} /* sh */ ''
# nginx-config-formatter has an error - https://github.com/1connect/nginx-config-formatter/issues/16
awk -f ${awkFormatNginx} "$textPath" | sed '/^\s*$/d' > $out
gixy $out
'';
# writePerl takes a name an attributeset with libraries and some perl sourcecode and
# returns an executable
#
# Example:
# writePerl "example" { libraries = [ pkgs.perlPackages.boolean ]; } ''
# use boolean;
# print "Howdy!\n" if true;
# ''
writePerl = name: { libraries ? [] }:
makeScriptWriter {
interpreter = "${pkgs.perl.withPackages (p: libraries)}/bin/perl";
} name;
# writePerlBin takes the same arguments as writePerl but outputs a directory (like writeScriptBin)
writePerlBin = name:
writePerl "/bin/${name}";
# makePythonWriter takes python and compatible pythonPackages and produces python script writer,
# which validates the script with flake8 at build time. If any libraries are specified,
# python.withPackages is used as interpreter, otherwise the "bare" python is used.
makePythonWriter = python: pythonPackages: buildPythonPackages: name: { libraries ? [], flakeIgnore ? [] }:
let
ignoreAttribute = optionalString (flakeIgnore != []) "--ignore ${concatMapStringsSep "," escapeShellArg flakeIgnore}";
in
makeScriptWriter {
interpreter =
if libraries == []
then python.interpreter
else (python.withPackages (ps: libraries)).interpreter
;
check = optionalString python.isPy3k (writeDash "pythoncheck.sh" ''
exec ${buildPythonPackages.flake8}/bin/flake8 --show-source ${ignoreAttribute} "$1"
'');
} name;
# writePyPy2 takes a name an attributeset with libraries and some pypy2 sourcecode and
# returns an executable
#
# Example:
# writePyPy2 "test_pypy2" { libraries = [ pkgs.pypy2Packages.enum ]; } ''
# from enum import Enum
#
# class Test(Enum):
# a = "success"
#
# print Test.a
# ''
writePyPy2 = makePythonWriter pkgs.pypy2 pkgs.pypy2Packages buildPackages.pypy2Packages;
# writePyPy2Bin takes the same arguments as writePyPy2 but outputs a directory (like writeScriptBin)
writePyPy2Bin = name:
writePyPy2 "/bin/${name}";
# writePython3 takes a name an attributeset with libraries and some python3 sourcecode and
# returns an executable
#
# Example:
# writePython3 "test_python3" { libraries = [ pkgs.python3Packages.pyyaml ]; } ''
# import yaml
#
# y = yaml.load("""
# - test: success
# """)
# print(y[0]['test'])
# ''
writePython3 = makePythonWriter pkgs.python3 pkgs.python3Packages buildPackages.python3Packages;
# writePython3Bin takes the same arguments as writePython3 but outputs a directory (like writeScriptBin)
writePython3Bin = name:
writePython3 "/bin/${name}";
# writePyPy3 takes a name an attributeset with libraries and some pypy3 sourcecode and
# returns an executable
#
# Example:
# writePyPy3 "test_pypy3" { libraries = [ pkgs.pypy3Packages.pyyaml ]; } ''
# import yaml
#
# y = yaml.load("""
# - test: success
# """)
# print(y[0]['test'])
# ''
writePyPy3 = makePythonWriter pkgs.pypy3 pkgs.pypy3Packages buildPackages.pypy3Packages;
# writePyPy3Bin takes the same arguments as writePyPy3 but outputs a directory (like writeScriptBin)
writePyPy3Bin = name:
writePyPy3 "/bin/${name}";
makeFSharpWriter = { dotnet-sdk ? pkgs.dotnet-sdk, fsi-flags ? "", libraries ? _: [] }: nameOrPath:
let
fname = last (builtins.split "/" nameOrPath);
path = if strings.hasSuffix ".fsx" nameOrPath then nameOrPath else "${nameOrPath}.fsx";
_nugetDeps = mkNugetDeps { name = "${fname}-nuget-deps"; nugetDeps = libraries; };
nuget-source = mkNugetSource {
name = "${fname}-nuget-source";
description = "A Nuget source with the dependencies for ${fname}";
deps = [ _nugetDeps ];
};
fsi = writeBash "fsi" ''
export HOME=$NIX_BUILD_TOP/.home
export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1
export DOTNET_CLI_TELEMETRY_OPTOUT=1
export DOTNET_NOLOGO=1
script="$1"; shift
${dotnet-sdk}/bin/dotnet fsi --quiet --nologo --readline- ${fsi-flags} "$@" < "$script"
'';
in content: makeScriptWriter {
interpreter = fsi;
} path
''
#i "nuget: ${nuget-source}/lib"
${ content }
exit 0
'';
writeFSharp =
makeFSharpWriter {};
writeFSharpBin = name:
writeFSharp "/bin/${name}";
}

View File

@ -12,29 +12,62 @@
}: }:
with writers; with writers;
let let
expectSuccess = test:
runCommand "run-${test.name}" {} ''
if [[ "$(${test})" != success ]]; then
echo 'test ${test.name} failed'
exit 1
fi
bin = { touch $out
bash = writeBashBin "test-writers-bash-bin" '' '';
expectSuccessBin = test:
runCommand "run-${test.name}" {} ''
if [[ "$(${lib.getExe test})" != success ]]; then
echo 'test ${test.name} failed'
exit 1
fi
touch $out
'';
expectDataEqual = { file, expected }:
let
expectedFile = writeText "${file.name}-expected" expected;
in
runCommand "run-${file.name}" {} ''
if ! diff -u ${file} ${expectedFile}; then
echo 'test ${file.name} failed'
exit 1
fi
touch $out
'';
in
lib.recurseIntoAttrs {
bin = lib.recurseIntoAttrs {
bash = expectSuccessBin (writeBashBin "test-writers-bash-bin" ''
if [[ "test" == "test" ]]; then echo "success"; fi if [[ "test" == "test" ]]; then echo "success"; fi
''; '');
dash = writeDashBin "test-writers-dash-bin" '' dash = expectSuccessBin (writeDashBin "test-writers-dash-bin" ''
test '~' = '~' && echo 'success' test '~' = '~' && echo 'success'
''; '');
fish = writeFishBin "test-writers-fish-bin" '' fish = expectSuccessBin (writeFishBin "test-writers-fish-bin" ''
if test "test" = "test" if test "test" = "test"
echo "success" echo "success"
end end
''; '');
rust = writeRustBin "test-writers-rust-bin" {} '' rust = expectSuccessBin (writeRustBin "test-writers-rust-bin" {} ''
fn main(){ fn main(){
println!("success") println!("success")
} }
''; '');
haskell = writeHaskellBin "test-writers-haskell-bin" { libraries = [ haskellPackages.acme-default ]; } '' haskell = expectSuccessBin (writeHaskellBin "test-writers-haskell-bin" { libraries = [ haskellPackages.acme-default ]; } ''
import Data.Default import Data.Default
int :: Int int :: Int
@ -44,9 +77,9 @@ let
main = case int of main = case int of
18871 -> putStrLn $ id "success" 18871 -> putStrLn $ id "success"
_ -> print "fail" _ -> print "fail"
''; '');
js = writeJSBin "test-writers-js-bin" { libraries = [ nodePackages.semver ]; } '' js = expectSuccessBin (writeJSBin "test-writers-js-bin" { libraries = [ nodePackages.semver ]; } ''
var semver = require('semver'); var semver = require('semver');
if (semver.valid('1.2.3')) { if (semver.valid('1.2.3')) {
@ -54,59 +87,57 @@ let
} else { } else {
console.log('fail') console.log('fail')
} }
''; '');
perl = writePerlBin "test-writers-perl-bin" { libraries = [ perlPackages.boolean ]; } '' perl = expectSuccessBin (writePerlBin "test-writers-perl-bin" { libraries = [ perlPackages.boolean ]; } ''
use boolean; use boolean;
print "success\n" if true; print "success\n" if true;
''; '');
pypy2 = writePyPy2Bin "test-writers-pypy2-bin" { libraries = [ pypy2Packages.enum ]; } '' pypy2 = expectSuccessBin (writePyPy2Bin "test-writers-pypy2-bin" { libraries = [ pypy2Packages.enum ]; } ''
from enum import Enum from enum import Enum
class Test(Enum): class Test(Enum):
a = "success" a = "success"
print Test.a print Test.a
''; '');
python3 = writePython3Bin "test-writers-python3-bin" { libraries = [ python3Packages.pyyaml ]; } '' python3 = expectSuccessBin (writePython3Bin "test-writers-python3-bin" { libraries = [ python3Packages.pyyaml ]; } ''
import yaml import yaml
y = yaml.load(""" y = yaml.safe_load("""
- test: success - test: success
""") """)
print(y[0]['test']) print(y[0]['test'])
''; '');
pypy3 = writePyPy3Bin "test-writers-pypy3-bin" { libraries = [ pypy3Packages.pyyaml ]; } '' pypy3 = expectSuccessBin (writePyPy3Bin "test-writers-pypy3-bin" { libraries = [ pypy3Packages.pyyaml ]; } ''
import yaml import yaml
y = yaml.load(""" y = yaml.safe_load("""
- test: success - test: success
""") """)
print(y[0]['test']) print(y[0]['test'])
''; '');
}; };
simple = { simple = lib.recurseIntoAttrs {
bash = writeBash "test-writers-bash" '' bash = expectSuccess (writeBash "test-writers-bash" ''
if [[ "test" == "test" ]]; then echo "success"; fi if [[ "test" == "test" ]]; then echo "success"; fi
''; '');
dash = writeDash "test-writers-dash" '' dash = expectSuccess (writeDash "test-writers-dash" ''
test '~' = '~' && echo 'success' test '~' = '~' && echo 'success'
''; '');
fish = writeFish "test-writers-fish" '' fish = expectSuccess (writeFish "test-writers-fish" ''
if test "test" = "test" if test "test" = "test"
echo "success" echo "success"
end end
''; '');
haskell = writeHaskell "test-writers-haskell" { libraries = [ haskellPackages.acme-default ]; } '' haskell = expectSuccess (writeHaskell "test-writers-haskell" { libraries = [ haskellPackages.acme-default ]; } ''
import Data.Default import Data.Default
int :: Int int :: Int
@ -116,9 +147,9 @@ let
main = case int of main = case int of
18871 -> putStrLn $ id "success" 18871 -> putStrLn $ id "success"
_ -> print "fail" _ -> print "fail"
''; '');
js = writeJS "test-writers-js" { libraries = [ nodePackages.semver ]; } '' js = expectSuccess (writeJS "test-writers-js" { libraries = [ nodePackages.semver ]; } ''
var semver = require('semver'); var semver = require('semver');
if (semver.valid('1.2.3')) { if (semver.valid('1.2.3')) {
@ -126,43 +157,41 @@ let
} else { } else {
console.log('fail') console.log('fail')
} }
''; '');
perl = writePerl "test-writers-perl" { libraries = [ perlPackages.boolean ]; } '' perl = expectSuccess (writePerl "test-writers-perl" { libraries = [ perlPackages.boolean ]; } ''
use boolean; use boolean;
print "success\n" if true; print "success\n" if true;
''; '');
pypy2 = writePyPy2 "test-writers-pypy2" { libraries = [ pypy2Packages.enum ]; } '' pypy2 = expectSuccess (writePyPy2 "test-writers-pypy2" { libraries = [ pypy2Packages.enum ]; } ''
from enum import Enum from enum import Enum
class Test(Enum): class Test(Enum):
a = "success" a = "success"
print Test.a print Test.a
''; '');
python3 = writePython3 "test-writers-python3" { libraries = [ python3Packages.pyyaml ]; } '' python3 = expectSuccess (writePython3 "test-writers-python3" { libraries = [ python3Packages.pyyaml ]; } ''
import yaml import yaml
y = yaml.load(""" y = yaml.safe_load("""
- test: success - test: success
""") """)
print(y[0]['test']) print(y[0]['test'])
''; '');
pypy3 = writePyPy3 "test-writers-pypy3" { libraries = [ pypy3Packages.pyyaml ]; } '' pypy3 = expectSuccess (writePyPy3 "test-writers-pypy3" { libraries = [ pypy3Packages.pyyaml ]; } ''
import yaml import yaml
y = yaml.load(""" y = yaml.safe_load("""
- test: success - test: success
""") """)
print(y[0]['test']) print(y[0]['test'])
''; '');
fsharp = makeFSharpWriter { fsharp = expectSuccess (makeFSharpWriter {
libraries = { fetchNuGet }: [ libraries = { fetchNuGet }: [
(fetchNuGet { pname = "FSharp.SystemTextJson"; version = "0.17.4"; sha256 = "1bplzc9ybdqspii4q28l8gmfvzpkmgq5l1hlsiyg2h46w881lwg2"; }) (fetchNuGet { pname = "FSharp.SystemTextJson"; version = "0.17.4"; sha256 = "1bplzc9ybdqspii4q28l8gmfvzpkmgq5l1hlsiyg2h46w881lwg2"; })
]; ];
@ -183,31 +212,31 @@ let
then "success" then "success"
else "failed" else "failed"
|> printfn "%s" |> printfn "%s"
''; '');
pypy2NoLibs = writePyPy2 "test-writers-pypy2-no-libs" {} '' pypy2NoLibs = expectSuccess (writePyPy2 "test-writers-pypy2-no-libs" {} ''
print("success") print("success")
''; '');
python3NoLibs = writePython3 "test-writers-python3-no-libs" {} '' python3NoLibs = expectSuccess (writePython3 "test-writers-python3-no-libs" {} ''
print("success") print("success")
''; '');
pypy3NoLibs = writePyPy3 "test-writers-pypy3-no-libs" {} '' pypy3NoLibs = expectSuccess (writePyPy3 "test-writers-pypy3-no-libs" {} ''
print("success") print("success")
''; '');
fsharpNoNugetDeps = writeFSharp "test-writers-fsharp-no-nuget-deps" '' fsharpNoNugetDeps = expectSuccess (writeFSharp "test-writers-fsharp-no-nuget-deps" ''
printfn "success" printfn "success"
''; '');
}; };
path = lib.recurseIntoAttrs {
path = { bash = expectSuccess (writeBash "test-writers-bash-path" (writeText "test" ''
bash = writeBash "test-writers-bash-path" (writeText "test" ''
if [[ "test" == "test" ]]; then echo "success"; fi if [[ "test" == "test" ]]; then echo "success"; fi
''); ''));
haskell = writeHaskell "test-writers-haskell-path" { libraries = [ haskellPackages.acme-default ]; } (writeText "test" ''
haskell = expectSuccess (writeHaskell "test-writers-haskell-path" { libraries = [ haskellPackages.acme-default ]; } (writeText "test" ''
import Data.Default import Data.Default
int :: Int int :: Int
@ -217,26 +246,27 @@ let
main = case int of main = case int of
18871 -> putStrLn $ id "success" 18871 -> putStrLn $ id "success"
_ -> print "fail" _ -> print "fail"
''); ''));
}; };
writeTest = expectedValue: name: test: data = {
writeDash "run-${name}" '' json = expectDataEqual {
if test "$(${test})" != "${expectedValue}"; then file = writeJSON "data.json" { hello = "world"; };
echo 'test ${test} failed' expected = ''
exit 1 {
fi "hello": "world"
''; }
'';
};
in runCommand "test-writers" { toml = expectDataEqual {
passthru = { inherit writeTest bin simple path; }; file = writeTOML "data.toml" { hello = "world"; };
meta.platforms = lib.platforms.all; expected = "hello = 'world'\n";
} '' };
${lib.concatMapStringsSep "\n" (test: writeTest "success" test.name "${test}/bin/${test.name}") (lib.attrValues bin)}
${lib.concatMapStringsSep "\n" (test: writeTest "success" test.name test) (lib.attrValues simple)}
${lib.concatMapStringsSep "\n" (test: writeTest "success" test.name test) (lib.attrValues path)}
echo 'nix-writers successfully tested' >&2
touch $out
''
yaml = expectDataEqual {
file = writeYAML "data.yaml" { hello = "world"; };
expected = "hello: world\n";
};
};
}

View File

@ -55,16 +55,16 @@ assert (extraParameters != null) -> set != null;
buildNpmPackage rec { buildNpmPackage rec {
pname = if set != null then "iosevka-${set}" else "iosevka"; pname = if set != null then "iosevka-${set}" else "iosevka";
version = "25.1.0"; version = "25.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "be5invis"; owner = "be5invis";
repo = "iosevka"; repo = "iosevka";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-hxkdigJYP0bPn1+HWlq7DoL/jTYAO1WCJcQN2WI8j/U="; hash = "sha256-IEP4xxL5rez15FVCKdgNBmCv9yHFqtHz/YKTQciQWMg=";
}; };
npmDepsHash = "sha256-zIH2rt+uhYO1pwumu6LeIpKX1y4y9ajwxK/vAVwzz9Q="; npmDepsHash = "sha256-E4dC3WCXvnx9qUxOM+f6/HfBxKhUvsD9TEVmPJGwbDs=";
nativeBuildInputs = [ nativeBuildInputs = [
remarshal remarshal

View File

@ -24,6 +24,7 @@ args@
, libkrb5 , libkrb5
, krb5 , krb5
, makeWrapper , makeWrapper
, markForCudatoolkitRootHook
, ncurses5 , ncurses5
, numactl , numactl
, nss , nss
@ -31,6 +32,7 @@ args@
, python3 # FIXME: CUDAToolkit 10 may still need python27 , python3 # FIXME: CUDAToolkit 10 may still need python27
, pulseaudio , pulseaudio
, requireFile , requireFile
, setupCudaHook
, stdenv , stdenv
, backendStdenv # E.g. gcc11Stdenv, set in extension.nix , backendStdenv # E.g. gcc11Stdenv, set in extension.nix
, unixODBC , unixODBC
@ -80,11 +82,15 @@ backendStdenv.mkDerivation rec {
addOpenGLRunpath addOpenGLRunpath
autoPatchelfHook autoPatchelfHook
autoAddOpenGLRunpathHook autoAddOpenGLRunpathHook
markForCudatoolkitRootHook
] ++ lib.optionals (lib.versionOlder version "11") [ ] ++ lib.optionals (lib.versionOlder version "11") [
libsForQt5.wrapQtAppsHook libsForQt5.wrapQtAppsHook
] ++ lib.optionals (lib.versionAtLeast version "11.8") [ ] ++ lib.optionals (lib.versionAtLeast version "11.8") [
qt6Packages.wrapQtAppsHook qt6Packages.wrapQtAppsHook
]; ];
depsTargetTargetPropagated = [
setupCudaHook
];
buildInputs = lib.optionals (lib.versionOlder version "11") [ buildInputs = lib.optionals (lib.versionOlder version "11") [
libsForQt5.qt5.qtwebengine libsForQt5.qt5.qtwebengine
freeglut freeglut
@ -129,7 +135,7 @@ backendStdenv.mkDerivation rec {
(lib.getLib libtiff) (lib.getLib libtiff)
qt6Packages.qtwayland qt6Packages.qtwayland
rdma-core rdma-core
ucx (ucx.override { enableCuda = false; }) # Avoid infinite recursion
xorg.libxshmfence xorg.libxshmfence
xorg.libxkbfile xorg.libxkbfile
] ++ (lib.optionals (lib.versionAtLeast version "12.1") (map lib.getLib ([ ] ++ (lib.optionals (lib.versionAtLeast version "12.1") (map lib.getLib ([
@ -280,24 +286,12 @@ backendStdenv.mkDerivation rec {
sed -i "1 i#define _BITS_FLOATN_H" "$out/include/host_defines.h" sed -i "1 i#define _BITS_FLOATN_H" "$out/include/host_defines.h"
'' + '' +
# Point NVCC at a compatible compiler # Point NVCC at a compatible compiler
# FIXME: redist cuda_nvcc copy-pastes this code
# Refer to comments in the overrides for cuda_nvcc for explanation
# CUDA_TOOLKIT_ROOT_DIR is legacy, # CUDA_TOOLKIT_ROOT_DIR is legacy,
# Cf. https://cmake.org/cmake/help/latest/module/FindCUDA.html#input-variables # Cf. https://cmake.org/cmake/help/latest/module/FindCUDA.html#input-variables
# NOTE: We unconditionally set -Xfatbin=-compress-all, which reduces the size of the compiled
# binaries. If binaries grow over 2GB, they will fail to link. This is a problem for us, as
# the default set of CUDA capabilities we build can regularly cause this to occur (for
# example, with Magma).
'' ''
mkdir -p $out/nix-support mkdir -p $out/nix-support
cat <<EOF >> $out/nix-support/setup-hook cat <<EOF >> $out/nix-support/setup-hook
cmakeFlags+=' -DCUDA_TOOLKIT_ROOT_DIR=$out' cmakeFlags+=' -DCUDA_TOOLKIT_ROOT_DIR=$out'
cmakeFlags+=' -DCUDA_HOST_COMPILER=${backendStdenv.cc}/bin'
cmakeFlags+=' -DCMAKE_CUDA_HOST_COMPILER=${backendStdenv.cc}/bin'
if [ -z "\''${CUDAHOSTCXX-}" ]; then
export CUDAHOSTCXX=${backendStdenv.cc}/bin;
fi
export NVCC_PREPEND_FLAGS+=' --compiler-bindir=${backendStdenv.cc}/bin -Xfatbin=-compress-all'
EOF EOF
# Move some libraries to the lib output so that programs that # Move some libraries to the lib output so that programs that

View File

@ -38,10 +38,39 @@ final: prev: let
cudaFlags = final.callPackage ./flags.nix {}; cudaFlags = final.callPackage ./flags.nix {};
# Internal hook, used by cudatoolkit and cuda redist packages
# to accommodate automatic CUDAToolkit_ROOT construction
markForCudatoolkitRootHook = (final.callPackage
({ makeSetupHook }:
makeSetupHook
{ name = "mark-for-cudatoolkit-root-hook"; }
./hooks/mark-for-cudatoolkit-root-hook.sh)
{ });
# Normally propagated by cuda_nvcc or cudatoolkit through their depsHostHostPropagated
setupCudaHook = (final.callPackage
({ makeSetupHook, backendStdenv }:
makeSetupHook
{
name = "setup-cuda-hook";
substitutions.ccRoot = "${backendStdenv.cc}";
# Required in addition to ccRoot as otherwise bin/gcc is looked up
# when building CMakeCUDACompilerId.cu
substitutions.ccFullPath = "${backendStdenv.cc}/bin/${backendStdenv.cc.targetPrefix}c++";
}
./hooks/setup-cuda-hook.sh)
{ });
in in
{ {
inherit inherit
backendStdenv backendStdenv
cudatoolkit cudatoolkit
cudaFlags; cudaFlags
markForCudatoolkitRootHook
setupCudaHook;
saxpy = final.callPackage ./saxpy { };
} }

View File

@ -0,0 +1,8 @@
# shellcheck shell=bash
markForCUDAToolkit_ROOT() {
mkdir -p "${prefix}/nix-support"
touch "${prefix}/nix-support/include-in-cudatoolkit-root"
}
fixupOutputHooks+=(markForCUDAToolkit_ROOT)

View File

@ -0,0 +1,5 @@
# shellcheck shell=bash
# CMake's enable_language(CUDA) runs a compiler test and it doesn't account for
# CUDAToolkit_ROOT. We have to help it locate libcudart
export NVCC_APPEND_FLAGS+=" -L@cudartRoot@/lib -I@cudartRoot@/include"

View File

@ -0,0 +1,68 @@
# shellcheck shell=bash
echo Sourcing setup-cuda-hook >&2
extendCUDAToolkit_ROOT() {
if [[ -f "$1/nix-support/include-in-cudatoolkit-root" ]] ; then
addToSearchPathWithCustomDelimiter ";" CUDAToolkit_ROOT "$1"
if [[ -d "$1/include" ]] ; then
addToSearchPathWithCustomDelimiter ";" CUDAToolkit_INCLUDE_DIR "$1/include"
fi
fi
}
addEnvHooks "$targetOffset" extendCUDAToolkit_ROOT
setupCUDAToolkitCompilers() {
echo Executing setupCUDAToolkitCompilers >&2
if [[ -n "${dontSetupCUDAToolkitCompilers-}" ]] ; then
return
fi
# Point NVCC at a compatible compiler
# For CMake-based projects:
# https://cmake.org/cmake/help/latest/module/FindCUDA.html#input-variables
# https://cmake.org/cmake/help/latest/envvar/CUDAHOSTCXX.html
# https://cmake.org/cmake/help/latest/variable/CMAKE_CUDA_HOST_COMPILER.html
export cmakeFlags+=" -DCUDA_HOST_COMPILER=@ccFullPath@"
export cmakeFlags+=" -DCMAKE_CUDA_HOST_COMPILER=@ccFullPath@"
# For non-CMake projects:
# We prepend --compiler-bindir to nvcc flags.
# Downstream packages can override these, because NVCC
# uses the last --compiler-bindir it gets on the command line.
# FIXME: this results in "incompatible redefinition" warnings.
# https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#compiler-bindir-directory-ccbin
if [ -z "${CUDAHOSTCXX-}" ]; then
export CUDAHOSTCXX="@ccFullPath@";
fi
export NVCC_PREPEND_FLAGS+=" --compiler-bindir=@ccRoot@/bin"
# NOTE: We set -Xfatbin=-compress-all, which reduces the size of the compiled
# binaries. If binaries grow over 2GB, they will fail to link. This is a problem for us, as
# the default set of CUDA capabilities we build can regularly cause this to occur (for
# example, with Magma).
#
# @SomeoneSerge: original comment was made by @ConnorBaker in .../cudatoolkit/common.nix
if [[ -z "${dontCompressFatbin-}" ]]; then
export NVCC_PREPEND_FLAGS+=" -Xfatbin=-compress-all"
fi
# CMake's enable_language(CUDA) runs a compiler test and it doesn't account for
# CUDAToolkit_ROOT. We have to help it locate libcudart
if [[ -z "${nvccDontPrependCudartFlags-}" ]] ; then
export NVCC_APPEND_FLAGS+=" -L@cudartRoot@/lib -I@cudartRoot@/include"
fi
}
setupCMakeCUDAToolkit_ROOT() {
export cmakeFlags+=" -DCUDAToolkit_INCLUDE_DIR=$CUDAToolkit_INCLUDE_DIR -DCUDAToolkit_ROOT=$CUDAToolkit_ROOT"
}
postHooks+=(setupCUDAToolkitCompilers)
preConfigureHooks+=(setupCMakeCUDAToolkit_ROOT)

View File

@ -4,6 +4,7 @@
, fetchurl , fetchurl
, autoPatchelfHook , autoPatchelfHook
, autoAddOpenGLRunpathHook , autoAddOpenGLRunpathHook
, markForCudatoolkitRootHook
}: }:
pname: pname:
@ -28,6 +29,7 @@ backendStdenv.mkDerivation {
# directory to the rpath of all ELF binaries. # directory to the rpath of all ELF binaries.
# Check e.g. with `patchelf --print-rpath path/to/my/binary # Check e.g. with `patchelf --print-rpath path/to/my/binary
autoAddOpenGLRunpathHook autoAddOpenGLRunpathHook
markForCudatoolkitRootHook
]; ];
buildInputs = [ buildInputs = [

View File

@ -27,35 +27,27 @@ in
inherit (prev.backendStdenv) cc; inherit (prev.backendStdenv) cc;
in in
{ {
# Required by cmake's enable_language(CUDA) to build a test program
# When implementing cross-compilation support: this is
# final.pkgs.targetPackages.cudaPackages.cuda_cudart
env.cudartRoot = "${prev.lib.getDev final.cuda_cudart}";
# Point NVCC at a compatible compiler # Point NVCC at a compatible compiler
# FIXME: non-redist cudatoolkit copy-pastes this code
# For CMake-based projects: # Desiredata: whenever a package (e.g. magma) adds cuda_nvcc to
# https://cmake.org/cmake/help/latest/module/FindCUDA.html#input-variables # nativeBuildInputs (offsets `(-1, 0)`), magma should also source the
# https://cmake.org/cmake/help/latest/envvar/CUDAHOSTCXX.html # setupCudaHook, i.e. we want it the hook to be propagated into the
# https://cmake.org/cmake/help/latest/variable/CMAKE_CUDA_HOST_COMPILER.html # same nativeBuildInputs.
#
# For non-CMake projects: # Logically, cuda_nvcc should include the hook in depsHostHostPropagated,
# We prepend --compiler-bindir to nvcc flags. # so that the final offsets for the propagated hook would be `(-1, 0) +
# Downstream packages can override these, because NVCC # (0, 0) = (-1, 0)`.
# uses the last --compiler-bindir it gets on the command line. #
# FIXME: this results in "incompatible redefinition" warnings. # In practice, TargetTarget appears to work:
# https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#compiler-bindir-directory-ccbin # https://gist.github.com/fd80ff142cd25e64603618a3700e7f82
# NOTE: We unconditionally set -Xfatbin=-compress-all, which reduces the size of the depsTargetTargetPropagated = [
# compiled binaries. If binaries grow over 2GB, they will fail to link. This is a problem final.setupCudaHook
# for us, as the default set of CUDA capabilities we build can regularly cause this to ];
# occur (for example, with Magma).
postInstall = (oldAttrs.postInstall or "") + ''
mkdir -p $out/nix-support
cat <<EOF >> $out/nix-support/setup-hook
cmakeFlags+=' -DCUDA_HOST_COMPILER=${cc}/bin'
cmakeFlags+=' -DCMAKE_CUDA_HOST_COMPILER=${cc}/bin'
if [ -z "\''${CUDAHOSTCXX-}" ]; then
export CUDAHOSTCXX=${cc}/bin;
fi
export NVCC_PREPEND_FLAGS+=' --compiler-bindir=${cc}/bin -Xfatbin=-compress-all'
EOF
'';
}); });
cuda_nvprof = prev.cuda_nvprof.overrideAttrs (oldAttrs: { cuda_nvprof = prev.cuda_nvprof.overrideAttrs (oldAttrs: {

View File

@ -0,0 +1,12 @@
cmake_minimum_required(VERSION 3.25)
project(saxpy LANGUAGES CXX CUDA)
find_package(CUDAToolkit REQUIRED COMPONENTS cudart cublas)
add_executable(saxpy saxpy.cu)
target_link_libraries(saxpy PUBLIC CUDA::cublas CUDA::cudart m)
target_compile_features(saxpy PRIVATE cxx_std_14)
target_compile_options(saxpy PRIVATE $<$<COMPILE_LANGUAGE:CUDA>:
--expt-relaxed-constexpr>)
install(TARGETS saxpy)

Some files were not shown because too many files have changed in this diff Show More