Merge master into staging-next

This commit is contained in:
Frederik Rietdijk 2019-04-18 08:25:25 +02:00
commit 9d87ccabce
136 changed files with 5780 additions and 2599 deletions

View File

@ -30,9 +30,12 @@ rec {
# nix-repl> converge (x: x / 2) 16 # nix-repl> converge (x: x / 2) 16
# 0 # 0
converge = f: x: converge = f: x:
if (f x) == x let
x' = f x;
in
if x' == x
then x then x
else converge f (f x); else converge f x';
# Modify the contents of an explicitly recursive attribute set in a way that # Modify the contents of an explicitly recursive attribute set in a way that
# honors `self`-references. This is accomplished with a function # honors `self`-references. This is accomplished with a function

View File

@ -258,7 +258,6 @@ rec {
name = "armeabi-v7a"; name = "armeabi-v7a";
gcc = { gcc = {
arch = "armv7-a"; arch = "armv7-a";
float = "hard";
float-abi = "softfp"; float-abi = "softfp";
fpu = "vfpv3-d16"; fpu = "vfpv3-d16";
}; };

View File

@ -63,18 +63,49 @@ in
}; };
enable = mkEnableOption "Whether to enable Kubernetes addon manager."; enable = mkEnableOption "Whether to enable Kubernetes addon manager.";
kubeconfig = top.lib.mkKubeConfigOptions "Kubernetes addon manager";
bootstrapAddonsKubeconfig = top.lib.mkKubeConfigOptions "Kubernetes addon manager bootstrap";
}; };
###### implementation ###### implementation
config = mkIf cfg.enable { config = let
addonManagerPaths = filter (a: a != null) [
cfg.kubeconfig.caFile
cfg.kubeconfig.certFile
cfg.kubeconfig.keyFile
];
bootstrapAddonsPaths = filter (a: a != null) [
cfg.bootstrapAddonsKubeconfig.caFile
cfg.bootstrapAddonsKubeconfig.certFile
cfg.bootstrapAddonsKubeconfig.keyFile
];
in mkIf cfg.enable {
environment.etc."kubernetes/addons".source = "${addons}/"; environment.etc."kubernetes/addons".source = "${addons}/";
#TODO: Get rid of kube-addon-manager in the future for the following reasons
# - it is basically just a shell script wrapped around kubectl
# - it assumes that it is clusterAdmin or can gain clusterAdmin rights through serviceAccount
# - it is designed to be used with k8s system components only
# - it would be better with a more Nix-oriented way of managing addons
systemd.services.kube-addon-manager = { systemd.services.kube-addon-manager = {
description = "Kubernetes addon manager"; description = "Kubernetes addon manager";
wantedBy = [ "kubernetes.target" ]; wantedBy = [ "kubernetes.target" ];
after = [ "kube-apiserver.service" ]; after = [ "kube-node-online.target" ];
environment.ADDON_PATH = "/etc/kubernetes/addons/"; before = [ "kubernetes.target" ];
path = [ pkgs.gawk ]; environment = {
ADDON_PATH = "/etc/kubernetes/addons/";
KUBECONFIG = top.lib.mkKubeConfig "kube-addon-manager" cfg.kubeconfig;
};
path = with pkgs; [ gawk kubectl ];
preStart = ''
until kubectl -n kube-system get serviceaccounts/default 2>/dev/null; do
echo kubectl -n kube-system get serviceaccounts/default: exit status $?
sleep 2
done
'';
serviceConfig = { serviceConfig = {
Slice = "kubernetes.slice"; Slice = "kubernetes.slice";
ExecStart = "${top.package}/bin/kube-addons"; ExecStart = "${top.package}/bin/kube-addons";
@ -84,8 +115,52 @@ in
Restart = "on-failure"; Restart = "on-failure";
RestartSec = 10; RestartSec = 10;
}; };
unitConfig.ConditionPathExists = addonManagerPaths;
}; };
systemd.paths.kube-addon-manager = {
wantedBy = [ "kube-addon-manager.service" ];
pathConfig = {
PathExists = addonManagerPaths;
PathChanged = addonManagerPaths;
};
};
services.kubernetes.addonManager.kubeconfig.server = mkDefault top.apiserverAddress;
systemd.services.kube-addon-manager-bootstrap = mkIf (top.apiserver.enable && top.addonManager.bootstrapAddons != {}) {
wantedBy = [ "kube-control-plane-online.target" ];
after = [ "kube-apiserver.service" ];
before = [ "kube-control-plane-online.target" ];
path = [ pkgs.kubectl ];
environment = {
KUBECONFIG = top.lib.mkKubeConfig "kube-addon-manager-bootstrap" cfg.bootstrapAddonsKubeconfig;
};
preStart = with pkgs; let
files = mapAttrsToList (n: v: writeText "${n}.json" (builtins.toJSON v))
cfg.bootstrapAddons;
in ''
until kubectl auth can-i '*' '*' -q 2>/dev/null; do
echo kubectl auth can-i '*' '*': exit status $?
sleep 2
done
kubectl apply -f ${concatStringsSep " \\\n -f " files}
'';
script = "echo Ok";
unitConfig.ConditionPathExists = bootstrapAddonsPaths;
};
systemd.paths.kube-addon-manager-bootstrap = {
wantedBy = [ "kube-addon-manager-bootstrap.service" ];
pathConfig = {
PathExists = bootstrapAddonsPaths;
PathChanged = bootstrapAddonsPaths;
};
};
services.kubernetes.addonManager.bootstrapAddonsKubeconfig.server = mkDefault top.apiserverAddress;
services.kubernetes.addonManager.bootstrapAddons = mkIf isRBACEnabled services.kubernetes.addonManager.bootstrapAddons = mkIf isRBACEnabled
(let (let
name = system:kube-addon-manager; name = system:kube-addon-manager;

View File

@ -169,6 +169,23 @@ in {
}; };
}; };
kubernetes-dashboard-cm = {
apiVersion = "v1";
kind = "ConfigMap";
metadata = {
labels = {
k8s-app = "kubernetes-dashboard";
# Allows editing resource and makes sure it is created first.
"addonmanager.kubernetes.io/mode" = "EnsureExists";
};
name = "kubernetes-dashboard-settings";
namespace = "kube-system";
};
};
};
services.kubernetes.addonManager.bootstrapAddons = mkMerge [{
kubernetes-dashboard-sa = { kubernetes-dashboard-sa = {
apiVersion = "v1"; apiVersion = "v1";
kind = "ServiceAccount"; kind = "ServiceAccount";
@ -210,20 +227,9 @@ in {
}; };
type = "Opaque"; type = "Opaque";
}; };
kubernetes-dashboard-cm = { }
apiVersion = "v1";
kind = "ConfigMap"; (optionalAttrs cfg.rbac.enable
metadata = {
labels = {
k8s-app = "kubernetes-dashboard";
# Allows editing resource and makes sure it is created first.
"addonmanager.kubernetes.io/mode" = "EnsureExists";
};
name = "kubernetes-dashboard-settings";
namespace = "kube-system";
};
};
} // (optionalAttrs cfg.rbac.enable
(let (let
subjects = [{ subjects = [{
kind = "ServiceAccount"; kind = "ServiceAccount";
@ -323,6 +329,6 @@ in {
inherit subjects; inherit subjects;
}; };
}) })
)); ))];
}; };
} }

View File

@ -184,6 +184,18 @@ in
type = bool; type = bool;
}; };
proxyClientCertFile = mkOption {
description = "Client certificate to use for connections to proxy.";
default = null;
type = nullOr path;
};
proxyClientKeyFile = mkOption {
description = "Key to use for connections to proxy.";
default = null;
type = nullOr path;
};
runtimeConfig = mkOption { runtimeConfig = mkOption {
description = '' description = ''
Api runtime configuration. See Api runtime configuration. See
@ -272,11 +284,32 @@ in
###### implementation ###### implementation
config = mkMerge [ config = mkMerge [
(mkIf cfg.enable { (let
apiserverPaths = filter (a: a != null) [
cfg.clientCaFile
cfg.etcd.caFile
cfg.etcd.certFile
cfg.etcd.keyFile
cfg.kubeletClientCaFile
cfg.kubeletClientCertFile
cfg.kubeletClientKeyFile
cfg.serviceAccountKeyFile
cfg.tlsCertFile
cfg.tlsKeyFile
];
etcdPaths = filter (a: a != null) [
config.services.etcd.trustedCaFile
config.services.etcd.certFile
config.services.etcd.keyFile
];
in mkIf cfg.enable {
systemd.services.kube-apiserver = { systemd.services.kube-apiserver = {
description = "Kubernetes APIServer Service"; description = "Kubernetes APIServer Service";
wantedBy = [ "kubernetes.target" ]; wantedBy = [ "kube-control-plane-online.target" ];
after = [ "network.target" ]; after = [ "certmgr.service" ];
before = [ "kube-control-plane-online.target" ];
serviceConfig = { serviceConfig = {
Slice = "kubernetes.slice"; Slice = "kubernetes.slice";
ExecStart = ''${top.package}/bin/kube-apiserver \ ExecStart = ''${top.package}/bin/kube-apiserver \
@ -316,6 +349,10 @@ in
"--kubelet-client-certificate=${cfg.kubeletClientCertFile}"} \ "--kubelet-client-certificate=${cfg.kubeletClientCertFile}"} \
${optionalString (cfg.kubeletClientKeyFile != null) ${optionalString (cfg.kubeletClientKeyFile != null)
"--kubelet-client-key=${cfg.kubeletClientKeyFile}"} \ "--kubelet-client-key=${cfg.kubeletClientKeyFile}"} \
${optionalString (cfg.proxyClientCertFile != null)
"--proxy-client-cert-file=${cfg.proxyClientCertFile}"} \
${optionalString (cfg.proxyClientKeyFile != null)
"--proxy-client-key-file=${cfg.proxyClientKeyFile}"} \
--insecure-bind-address=${cfg.insecureBindAddress} \ --insecure-bind-address=${cfg.insecureBindAddress} \
--insecure-port=${toString cfg.insecurePort} \ --insecure-port=${toString cfg.insecurePort} \
${optionalString (cfg.runtimeConfig != "") ${optionalString (cfg.runtimeConfig != "")
@ -341,6 +378,15 @@ in
Restart = "on-failure"; Restart = "on-failure";
RestartSec = 5; RestartSec = 5;
}; };
unitConfig.ConditionPathExists = apiserverPaths;
};
systemd.paths.kube-apiserver = mkIf top.apiserver.enable {
wantedBy = [ "kube-apiserver.service" ];
pathConfig = {
PathExists = apiserverPaths;
PathChanged = apiserverPaths;
};
}; };
services.etcd = { services.etcd = {
@ -354,6 +400,18 @@ in
initialAdvertisePeerUrls = mkDefault ["https://${top.masterAddress}:2380"]; initialAdvertisePeerUrls = mkDefault ["https://${top.masterAddress}:2380"];
}; };
systemd.services.etcd = {
unitConfig.ConditionPathExists = etcdPaths;
};
systemd.paths.etcd = {
wantedBy = [ "etcd.service" ];
pathConfig = {
PathExists = etcdPaths;
PathChanged = etcdPaths;
};
};
services.kubernetes.addonManager.bootstrapAddons = mkIf isRBACEnabled { services.kubernetes.addonManager.bootstrapAddons = mkIf isRBACEnabled {
apiserver-kubelet-api-admin-crb = { apiserver-kubelet-api-admin-crb = {
@ -389,6 +447,11 @@ in
] ++ cfg.extraSANs; ] ++ cfg.extraSANs;
action = "systemctl restart kube-apiserver.service"; action = "systemctl restart kube-apiserver.service";
}; };
apiserverProxyClient = mkCert {
name = "kube-apiserver-proxy-client";
CN = "front-proxy-client";
action = "systemctl restart kube-apiserver.service";
};
apiserverKubeletClient = mkCert { apiserverKubeletClient = mkCert {
name = "kube-apiserver-kubelet-client"; name = "kube-apiserver-kubelet-client";
CN = "system:kube-apiserver"; CN = "system:kube-apiserver";

View File

@ -104,11 +104,31 @@ in
}; };
###### implementation ###### implementation
config = mkIf cfg.enable { config = let
systemd.services.kube-controller-manager = {
controllerManagerPaths = filter (a: a != null) [
cfg.kubeconfig.caFile
cfg.kubeconfig.certFile
cfg.kubeconfig.keyFile
cfg.rootCaFile
cfg.serviceAccountKeyFile
cfg.tlsCertFile
cfg.tlsKeyFile
];
in mkIf cfg.enable {
systemd.services.kube-controller-manager = rec {
description = "Kubernetes Controller Manager Service"; description = "Kubernetes Controller Manager Service";
wantedBy = [ "kubernetes.target" ]; wantedBy = [ "kube-control-plane-online.target" ];
after = [ "kube-apiserver.service" ]; after = [ "kube-apiserver.service" ];
before = [ "kube-control-plane-online.target" ];
environment.KUBECONFIG = top.lib.mkKubeConfig "kube-controller-manager" cfg.kubeconfig;
preStart = ''
until kubectl auth can-i get /api -q 2>/dev/null; do
echo kubectl auth can-i get /api: exit status $?
sleep 2
done
'';
serviceConfig = { serviceConfig = {
RestartSec = "30s"; RestartSec = "30s";
Restart = "on-failure"; Restart = "on-failure";
@ -120,7 +140,7 @@ in
"--cluster-cidr=${cfg.clusterCidr}"} \ "--cluster-cidr=${cfg.clusterCidr}"} \
${optionalString (cfg.featureGates != []) ${optionalString (cfg.featureGates != [])
"--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \ "--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \
--kubeconfig=${top.lib.mkKubeConfig "kube-controller-manager" cfg.kubeconfig} \ --kubeconfig=${environment.KUBECONFIG} \
--leader-elect=${boolToString cfg.leaderElect} \ --leader-elect=${boolToString cfg.leaderElect} \
${optionalString (cfg.rootCaFile!=null) ${optionalString (cfg.rootCaFile!=null)
"--root-ca-file=${cfg.rootCaFile}"} \ "--root-ca-file=${cfg.rootCaFile}"} \
@ -141,7 +161,16 @@ in
User = "kubernetes"; User = "kubernetes";
Group = "kubernetes"; Group = "kubernetes";
}; };
path = top.path; path = top.path ++ [ pkgs.kubectl ];
unitConfig.ConditionPathExists = controllerManagerPaths;
};
systemd.paths.kube-controller-manager = {
wantedBy = [ "kube-controller-manager.service" ];
pathConfig = {
PathExists = controllerManagerPaths;
PathChanged = controllerManagerPaths;
};
}; };
services.kubernetes.pki.certs = with top.lib; { services.kubernetes.pki.certs = with top.lib; {

View File

@ -263,6 +263,30 @@ in {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
}; };
systemd.targets.kube-control-plane-online = {
wantedBy = [ "kubernetes.target" ];
before = [ "kubernetes.target" ];
};
systemd.services.kube-control-plane-online = rec {
description = "Kubernetes control plane is online";
wantedBy = [ "kube-control-plane-online.target" ];
after = [ "kube-scheduler.service" "kube-controller-manager.service" ];
before = [ "kube-control-plane-online.target" ];
environment.KUBECONFIG = cfg.lib.mkKubeConfig "default" cfg.kubeconfig;
path = [ pkgs.kubectl ];
preStart = ''
until kubectl get --raw=/healthz 2>/dev/null; do
echo kubectl get --raw=/healthz: exit status $?
sleep 3
done
'';
script = "echo Ok";
serviceConfig = {
TimeoutSec = "500";
};
};
systemd.tmpfiles.rules = [ systemd.tmpfiles.rules = [
"d /opt/cni/bin 0755 root root -" "d /opt/cni/bin 0755 root root -"
"d /run/kubernetes 0755 kubernetes kubernetes -" "d /run/kubernetes 0755 kubernetes kubernetes -"
@ -286,6 +310,8 @@ in {
services.kubernetes.apiserverAddress = mkDefault ("https://${if cfg.apiserver.advertiseAddress != null services.kubernetes.apiserverAddress = mkDefault ("https://${if cfg.apiserver.advertiseAddress != null
then cfg.apiserver.advertiseAddress then cfg.apiserver.advertiseAddress
else "${cfg.masterAddress}:${toString cfg.apiserver.securePort}"}"); else "${cfg.masterAddress}:${toString cfg.apiserver.securePort}"}");
services.kubernetes.kubeconfig.server = mkDefault cfg.apiserverAddress;
}) })
]; ];
} }

View File

@ -24,16 +24,26 @@ in
###### interface ###### interface
options.services.kubernetes.flannel = { options.services.kubernetes.flannel = {
enable = mkEnableOption "enable flannel networking"; enable = mkEnableOption "enable flannel networking";
kubeconfig = top.lib.mkKubeConfigOptions "Kubernetes flannel";
}; };
###### implementation ###### implementation
config = mkIf cfg.enable { config = let
flannelPaths = filter (a: a != null) [
cfg.kubeconfig.caFile
cfg.kubeconfig.certFile
cfg.kubeconfig.keyFile
];
kubeconfig = top.lib.mkKubeConfig "flannel" cfg.kubeconfig;
in mkIf cfg.enable {
services.flannel = { services.flannel = {
enable = mkDefault true; enable = mkDefault true;
network = mkDefault top.clusterCidr; network = mkDefault top.clusterCidr;
inherit storageBackend; inherit storageBackend kubeconfig;
nodeName = config.services.kubernetes.kubelet.hostname; nodeName = top.kubelet.hostname;
}; };
services.kubernetes.kubelet = { services.kubernetes.kubelet = {
@ -48,24 +58,66 @@ in
}]; }];
}; };
systemd.services."mk-docker-opts" = { systemd.services.mk-docker-opts = {
description = "Pre-Docker Actions"; description = "Pre-Docker Actions";
wantedBy = [ "flannel.target" ];
before = [ "flannel.target" ];
path = with pkgs; [ gawk gnugrep ]; path = with pkgs; [ gawk gnugrep ];
script = '' script = ''
${mkDockerOpts}/mk-docker-opts -d /run/flannel/docker ${mkDockerOpts}/mk-docker-opts -d /run/flannel/docker
systemctl restart docker systemctl restart docker
''; '';
unitConfig.ConditionPathExists = [ "/run/flannel/subnet.env" ];
serviceConfig.Type = "oneshot"; serviceConfig.Type = "oneshot";
}; };
systemd.paths."flannel-subnet-env" = { systemd.paths.flannel-subnet-env = {
wantedBy = [ "flannel.service" ]; wantedBy = [ "mk-docker-opts.service" ];
pathConfig = { pathConfig = {
PathModified = "/run/flannel/subnet.env"; PathExists = [ "/run/flannel/subnet.env" ];
PathChanged = [ "/run/flannel/subnet.env" ];
Unit = "mk-docker-opts.service"; Unit = "mk-docker-opts.service";
}; };
}; };
systemd.targets.flannel = {
wantedBy = [ "kube-node-online.target" ];
before = [ "kube-node-online.target" ];
};
systemd.services.flannel = {
wantedBy = [ "flannel.target" ];
after = [ "kubelet.target" ];
before = [ "flannel.target" ];
path = with pkgs; [ iptables kubectl ];
environment.KUBECONFIG = kubeconfig;
preStart = let
args = [
"--selector=kubernetes.io/hostname=${top.kubelet.hostname}"
# flannel exits if node is not registered yet, before that there is no podCIDR
"--output=jsonpath={.items[0].spec.podCIDR}"
# if jsonpath cannot be resolved exit with status 1
"--allow-missing-template-keys=false"
];
in ''
until kubectl get nodes ${concatStringsSep " " args} 2>/dev/null; do
echo Waiting for ${top.kubelet.hostname} to be RegisteredNode
sleep 1
done
'';
unitConfig.ConditionPathExists = flannelPaths;
};
systemd.paths.flannel = {
wantedBy = [ "flannel.service" ];
pathConfig = {
PathExists = flannelPaths;
PathChanged = flannelPaths;
};
};
services.kubernetes.flannel.kubeconfig.server = mkDefault top.apiserverAddress;
systemd.services.docker = { systemd.services.docker = {
environment.DOCKER_OPTS = "-b none"; environment.DOCKER_OPTS = "-b none";
serviceConfig.EnvironmentFile = "-/run/flannel/docker"; serviceConfig.EnvironmentFile = "-/run/flannel/docker";
@ -92,7 +144,6 @@ in
# give flannel som kubernetes rbac permissions if applicable # give flannel som kubernetes rbac permissions if applicable
services.kubernetes.addonManager.bootstrapAddons = mkIf ((storageBackend == "kubernetes") && (elem "RBAC" top.apiserver.authorizationMode)) { services.kubernetes.addonManager.bootstrapAddons = mkIf ((storageBackend == "kubernetes") && (elem "RBAC" top.apiserver.authorizationMode)) {
flannel-cr = { flannel-cr = {
apiVersion = "rbac.authorization.k8s.io/v1beta1"; apiVersion = "rbac.authorization.k8s.io/v1beta1";
kind = "ClusterRole"; kind = "ClusterRole";
@ -128,7 +179,6 @@ in
name = "flannel-client"; name = "flannel-client";
}]; }];
}; };
}; };
}; };
} }

View File

@ -241,21 +241,28 @@ in
###### implementation ###### implementation
config = mkMerge [ config = mkMerge [
(mkIf cfg.enable { (let
kubeletPaths = filter (a: a != null) [
cfg.kubeconfig.caFile
cfg.kubeconfig.certFile
cfg.kubeconfig.keyFile
cfg.clientCaFile
cfg.tlsCertFile
cfg.tlsKeyFile
];
in mkIf cfg.enable {
services.kubernetes.kubelet.seedDockerImages = [infraContainer]; services.kubernetes.kubelet.seedDockerImages = [infraContainer];
systemd.services.kubelet = { systemd.services.kubelet = {
description = "Kubernetes Kubelet Service"; description = "Kubernetes Kubelet Service";
wantedBy = [ "kubernetes.target" ]; wantedBy = [ "kubelet.target" ];
after = [ "network.target" "docker.service" "kube-apiserver.service" ]; after = [ "kube-control-plane-online.target" ];
before = [ "kubelet.target" ];
path = with pkgs; [ gitMinimal openssh docker utillinux iproute ethtool thin-provisioning-tools iptables socat ] ++ top.path; path = with pkgs; [ gitMinimal openssh docker utillinux iproute ethtool thin-provisioning-tools iptables socat ] ++ top.path;
preStart = '' preStart = ''
${concatMapStrings (img: '' rm -f /opt/cni/bin/* || true
echo "Seeding docker image: ${img}"
docker load <${img}
'') cfg.seedDockerImages}
rm /opt/cni/bin/* || true
${concatMapStrings (package: '' ${concatMapStrings (package: ''
echo "Linking cni package: ${package}" echo "Linking cni package: ${package}"
ln -fs ${package}/bin/* /opt/cni/bin ln -fs ${package}/bin/* /opt/cni/bin
@ -308,6 +315,56 @@ in
''; '';
WorkingDirectory = top.dataDir; WorkingDirectory = top.dataDir;
}; };
unitConfig.ConditionPathExists = kubeletPaths;
};
systemd.paths.kubelet = {
wantedBy = [ "kubelet.service" ];
pathConfig = {
PathExists = kubeletPaths;
PathChanged = kubeletPaths;
};
};
systemd.services.docker.before = [ "kubelet.service" ];
systemd.services.docker-seed-images = {
wantedBy = [ "docker.service" ];
after = [ "docker.service" ];
before = [ "kubelet.service" ];
path = with pkgs; [ docker ];
preStart = ''
${concatMapStrings (img: ''
echo "Seeding docker image: ${img}"
docker load <${img}
'') cfg.seedDockerImages}
'';
script = "echo Ok";
serviceConfig.Type = "oneshot";
serviceConfig.RemainAfterExit = true;
serviceConfig.Slice = "kubernetes.slice";
};
systemd.services.kubelet-online = {
wantedBy = [ "kube-node-online.target" ];
after = [ "flannel.target" "kubelet.target" ];
before = [ "kube-node-online.target" ];
# it is complicated. flannel needs kubelet to run the pause container before
# it discusses the node CIDR with apiserver and afterwards configures and restarts
# dockerd. Until then prevent creating any pods because they have to be recreated anyway
# because the network of docker0 has been changed by flannel.
script = let
docker-env = "/run/flannel/docker";
flannel-date = "stat --print=%Y ${docker-env}";
docker-date = "systemctl show --property=ActiveEnterTimestamp --value docker";
in ''
until test -f ${docker-env} ; do sleep 1 ; done
while test `${flannel-date}` -gt `date +%s --date="$(${docker-date})"` ; do
sleep 1
done
'';
serviceConfig.Type = "oneshot";
serviceConfig.Slice = "kubernetes.slice";
}; };
# Allways include cni plugins # Allways include cni plugins
@ -354,5 +411,16 @@ in
}; };
}) })
{
systemd.targets.kubelet = {
wantedBy = [ "kube-node-online.target" ];
before = [ "kube-node-online.target" ];
};
systemd.targets.kube-node-online = {
wantedBy = [ "kubernetes.target" ];
before = [ "kubernetes.target" ];
};
}
]; ];
} }

View File

@ -27,8 +27,7 @@ let
certmgrAPITokenPath = "${top.secretsPath}/${cfsslAPITokenBaseName}"; certmgrAPITokenPath = "${top.secretsPath}/${cfsslAPITokenBaseName}";
cfsslAPITokenLength = 32; cfsslAPITokenLength = 32;
clusterAdminKubeconfig = with cfg.certs.clusterAdmin; clusterAdminKubeconfig = with cfg.certs.clusterAdmin; {
top.lib.mkKubeConfig "cluster-admin" {
server = top.apiserverAddress; server = top.apiserverAddress;
certFile = cert; certFile = cert;
keyFile = key; keyFile = key;
@ -119,6 +118,12 @@ in
cfsslCertPathPrefix = "${config.services.cfssl.dataDir}/cfssl"; cfsslCertPathPrefix = "${config.services.cfssl.dataDir}/cfssl";
cfsslCert = "${cfsslCertPathPrefix}.pem"; cfsslCert = "${cfsslCertPathPrefix}.pem";
cfsslKey = "${cfsslCertPathPrefix}-key.pem"; cfsslKey = "${cfsslCertPathPrefix}-key.pem";
cfsslPort = toString config.services.cfssl.port;
certmgrPaths = [
top.caFile
certmgrAPITokenPath
];
in in
{ {
@ -168,13 +173,40 @@ in
chown cfssl "${cfsslAPITokenPath}" && chmod 400 "${cfsslAPITokenPath}" chown cfssl "${cfsslAPITokenPath}" && chmod 400 "${cfsslAPITokenPath}"
'')]); '')]);
systemd.targets.cfssl-online = {
wantedBy = [ "network-online.target" ];
after = [ "cfssl.service" "network-online.target" "cfssl-online.service" ];
};
systemd.services.cfssl-online = {
description = "Wait for ${remote} to be reachable.";
wantedBy = [ "cfssl-online.target" ];
before = [ "cfssl-online.target" ];
path = [ pkgs.curl ];
preStart = ''
until curl --fail-early -fskd '{}' ${remote}/api/v1/cfssl/info -o /dev/null; do
echo curl ${remote}/api/v1/cfssl/info: exit status $?
sleep 2
done
'';
script = "echo Ok";
serviceConfig = {
TimeoutSec = "300";
};
};
systemd.services.kube-certmgr-bootstrap = { systemd.services.kube-certmgr-bootstrap = {
description = "Kubernetes certmgr bootstrapper"; description = "Kubernetes certmgr bootstrapper";
wantedBy = [ "certmgr.service" ]; wantedBy = [ "cfssl-online.target" ];
after = [ "cfssl.target" ]; after = [ "cfssl-online.target" ];
before = [ "certmgr.service" ];
path = with pkgs; [ curl cfssl ];
script = concatStringsSep "\n" ['' script = concatStringsSep "\n" [''
set -e set -e
mkdir -p $(dirname ${certmgrAPITokenPath})
mkdir -p $(dirname ${top.caFile})
# If there's a cfssl (cert issuer) running locally, then don't rely on user to # If there's a cfssl (cert issuer) running locally, then don't rely on user to
# manually paste it in place. Just symlink. # manually paste it in place. Just symlink.
# otherwise, create the target file, ready for users to insert the token # otherwise, create the target file, ready for users to insert the token
@ -186,15 +218,18 @@ in
fi fi
'' ''
(optionalString (cfg.pkiTrustOnBootstrap) '' (optionalString (cfg.pkiTrustOnBootstrap) ''
if [ ! -f "${top.caFile}" ] || [ $(cat "${top.caFile}" | wc -c) -lt 1 ]; then if [ ! -s "${top.caFile}" ]; then
${pkgs.curl}/bin/curl --fail-early -f -kd '{}' ${remote}/api/v1/cfssl/info | \ until test -s ${top.caFile}.json; do
${pkgs.cfssl}/bin/cfssljson -stdout >${top.caFile} sleep 2
curl --fail-early -fskd '{}' ${remote}/api/v1/cfssl/info -o ${top.caFile}.json
done
cfssljson -f ${top.caFile}.json -stdout >${top.caFile}
rm ${top.caFile}.json
fi fi
'') '')
]; ];
serviceConfig = { serviceConfig = {
RestartSec = "10s"; TimeoutSec = "500";
Restart = "on-failure";
}; };
}; };
@ -230,35 +265,28 @@ in
mapAttrs mkSpec cfg.certs; mapAttrs mkSpec cfg.certs;
}; };
#TODO: Get rid of kube-addon-manager in the future for the following reasons systemd.services.certmgr = {
# - it is basically just a shell script wrapped around kubectl wantedBy = [ "cfssl-online.target" ];
# - it assumes that it is clusterAdmin or can gain clusterAdmin rights through serviceAccount after = [ "cfssl-online.target" "kube-certmgr-bootstrap.service" ];
# - it is designed to be used with k8s system components only preStart = ''
# - it would be better with a more Nix-oriented way of managing addons while ! test -s ${certmgrAPITokenPath} ; do
systemd.services.kube-addon-manager = mkIf top.addonManager.enable (mkMerge [{ sleep 1
environment.KUBECONFIG = with cfg.certs.addonManager; echo Waiting for ${certmgrAPITokenPath}
top.lib.mkKubeConfig "addon-manager" { done
server = top.apiserverAddress;
certFile = cert;
keyFile = key;
};
}
(optionalAttrs (top.addonManager.bootstrapAddons != {}) {
serviceConfig.PermissionsStartOnly = true;
preStart = with pkgs;
let
files = mapAttrsToList (n: v: writeText "${n}.json" (builtins.toJSON v))
top.addonManager.bootstrapAddons;
in
''
export KUBECONFIG=${clusterAdminKubeconfig}
${kubectl}/bin/kubectl apply -f ${concatStringsSep " \\\n -f " files}
''; '';
})]); unitConfig.ConditionPathExists = certmgrPaths;
};
systemd.paths.certmgr = {
wantedBy = [ "certmgr.service" ];
pathConfig = {
PathExists = certmgrPaths;
PathChanged = certmgrPaths;
};
};
environment.etc.${cfg.etcClusterAdminKubeconfig}.source = mkIf (!isNull cfg.etcClusterAdminKubeconfig) environment.etc.${cfg.etcClusterAdminKubeconfig}.source = mkIf (!isNull cfg.etcClusterAdminKubeconfig)
clusterAdminKubeconfig; (top.lib.mkKubeConfig "cluster-admin" clusterAdminKubeconfig);
environment.systemPackages = mkIf (top.kubelet.enable || top.proxy.enable) [ environment.systemPackages = mkIf (top.kubelet.enable || top.proxy.enable) [
(pkgs.writeScriptBin "nixos-kubernetes-node-join" '' (pkgs.writeScriptBin "nixos-kubernetes-node-join" ''
@ -284,38 +312,22 @@ in
exit 1 exit 1
fi fi
do_restart=$(test -s ${certmgrAPITokenPath} && echo -n y || echo -n n)
echo $token > ${certmgrAPITokenPath} echo $token > ${certmgrAPITokenPath}
chmod 600 ${certmgrAPITokenPath} chmod 600 ${certmgrAPITokenPath}
if [ y = $do_restart ]; then
echo "Restarting certmgr..." >&1 echo "Restarting certmgr..." >&1
systemctl restart certmgr systemctl restart certmgr
fi
echo "Waiting for certs to appear..." >&1 echo "Node joined succesfully" >&1
${optionalString top.kubelet.enable ''
while [ ! -f ${cfg.certs.kubelet.cert} ]; do sleep 1; done
echo "Restarting kubelet..." >&1
systemctl restart kubelet
''}
${optionalString top.proxy.enable ''
while [ ! -f ${cfg.certs.kubeProxyClient.cert} ]; do sleep 1; done
echo "Restarting kube-proxy..." >&1
systemctl restart kube-proxy
''}
${optionalString top.flannel.enable ''
while [ ! -f ${cfg.certs.flannelClient.cert} ]; do sleep 1; done
echo "Restarting flannel..." >&1
systemctl restart flannel
''}
echo "Node joined succesfully"
'')]; '')];
# isolate etcd on loopback at the master node # isolate etcd on loopback at the master node
# easyCerts doesn't support multimaster clusters anyway atm. # easyCerts doesn't support multimaster clusters anyway atm.
services.etcd = with cfg.certs.etcd; { services.etcd = mkIf top.apiserver.enable (with cfg.certs.etcd; {
listenClientUrls = ["https://127.0.0.1:2379"]; listenClientUrls = ["https://127.0.0.1:2379"];
listenPeerUrls = ["https://127.0.0.1:2380"]; listenPeerUrls = ["https://127.0.0.1:2380"];
advertiseClientUrls = ["https://etcd.local:2379"]; advertiseClientUrls = ["https://etcd.local:2379"];
@ -324,19 +336,11 @@ in
certFile = mkDefault cert; certFile = mkDefault cert;
keyFile = mkDefault key; keyFile = mkDefault key;
trustedCaFile = mkDefault caCert; trustedCaFile = mkDefault caCert;
}; });
networking.extraHosts = mkIf (config.services.etcd.enable) '' networking.extraHosts = mkIf (config.services.etcd.enable) ''
127.0.0.1 etcd.${top.addons.dns.clusterDomain} etcd.local 127.0.0.1 etcd.${top.addons.dns.clusterDomain} etcd.local
''; '';
services.flannel = with cfg.certs.flannelClient; {
kubeconfig = top.lib.mkKubeConfig "flannel" {
server = top.apiserverAddress;
certFile = cert;
keyFile = key;
};
};
services.kubernetes = { services.kubernetes = {
apiserver = mkIf top.apiserver.enable (with cfg.certs.apiServer; { apiserver = mkIf top.apiserver.enable (with cfg.certs.apiServer; {
@ -353,7 +357,16 @@ in
kubeletClientCaFile = mkDefault caCert; kubeletClientCaFile = mkDefault caCert;
kubeletClientCertFile = mkDefault cfg.certs.apiserverKubeletClient.cert; kubeletClientCertFile = mkDefault cfg.certs.apiserverKubeletClient.cert;
kubeletClientKeyFile = mkDefault cfg.certs.apiserverKubeletClient.key; kubeletClientKeyFile = mkDefault cfg.certs.apiserverKubeletClient.key;
proxyClientCertFile = mkDefault cfg.certs.apiserverProxyClient.cert;
proxyClientKeyFile = mkDefault cfg.certs.apiserverProxyClient.key;
}); });
addonManager = mkIf top.addonManager.enable {
kubeconfig = with cfg.certs.addonManager; {
certFile = mkDefault cert;
keyFile = mkDefault key;
};
bootstrapAddonsKubeconfig = clusterAdminKubeconfig;
};
controllerManager = mkIf top.controllerManager.enable { controllerManager = mkIf top.controllerManager.enable {
serviceAccountKeyFile = mkDefault cfg.certs.serviceAccount.key; serviceAccountKeyFile = mkDefault cfg.certs.serviceAccount.key;
rootCaFile = cfg.certs.controllerManagerClient.caCert; rootCaFile = cfg.certs.controllerManagerClient.caCert;
@ -362,6 +375,12 @@ in
keyFile = mkDefault key; keyFile = mkDefault key;
}; };
}; };
flannel = mkIf top.flannel.enable {
kubeconfig = with cfg.certs.flannelClient; {
certFile = cert;
keyFile = key;
};
};
scheduler = mkIf top.scheduler.enable { scheduler = mkIf top.scheduler.enable {
kubeconfig = with cfg.certs.schedulerClient; { kubeconfig = with cfg.certs.schedulerClient; {
certFile = mkDefault cert; certFile = mkDefault cert;

View File

@ -45,12 +45,28 @@ in
}; };
###### implementation ###### implementation
config = mkIf cfg.enable { config = let
systemd.services.kube-proxy = {
proxyPaths = filter (a: a != null) [
cfg.kubeconfig.caFile
cfg.kubeconfig.certFile
cfg.kubeconfig.keyFile
];
in mkIf cfg.enable {
systemd.services.kube-proxy = rec {
description = "Kubernetes Proxy Service"; description = "Kubernetes Proxy Service";
wantedBy = [ "kubernetes.target" ]; wantedBy = [ "kube-node-online.target" ];
after = [ "kube-apiserver.service" ]; after = [ "kubelet-online.service" ];
path = with pkgs; [ iptables conntrack_tools ]; before = [ "kube-node-online.target" ];
environment.KUBECONFIG = top.lib.mkKubeConfig "kube-proxy" cfg.kubeconfig;
path = with pkgs; [ iptables conntrack_tools kubectl ];
preStart = ''
until kubectl auth can-i get nodes/${top.kubelet.hostname} -q 2>/dev/null; do
echo kubectl auth can-i get nodes/${top.kubelet.hostname}: exit status $?
sleep 2
done
'';
serviceConfig = { serviceConfig = {
Slice = "kubernetes.slice"; Slice = "kubernetes.slice";
ExecStart = ''${top.package}/bin/kube-proxy \ ExecStart = ''${top.package}/bin/kube-proxy \
@ -59,7 +75,7 @@ in
"--cluster-cidr=${top.clusterCidr}"} \ "--cluster-cidr=${top.clusterCidr}"} \
${optionalString (cfg.featureGates != []) ${optionalString (cfg.featureGates != [])
"--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \ "--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \
--kubeconfig=${top.lib.mkKubeConfig "kube-proxy" cfg.kubeconfig} \ --kubeconfig=${environment.KUBECONFIG} \
${optionalString (cfg.verbosity != null) "--v=${toString cfg.verbosity}"} \ ${optionalString (cfg.verbosity != null) "--v=${toString cfg.verbosity}"} \
${cfg.extraOpts} ${cfg.extraOpts}
''; '';
@ -67,6 +83,15 @@ in
Restart = "on-failure"; Restart = "on-failure";
RestartSec = 5; RestartSec = 5;
}; };
unitConfig.ConditionPathExists = proxyPaths;
};
systemd.paths.kube-proxy = {
wantedBy = [ "kube-proxy.service" ];
pathConfig = {
PathExists = proxyPaths;
PathChanged = proxyPaths;
};
}; };
services.kubernetes.pki.certs = { services.kubernetes.pki.certs = {

View File

@ -56,18 +56,35 @@ in
}; };
###### implementation ###### implementation
config = mkIf cfg.enable { config = let
systemd.services.kube-scheduler = {
schedulerPaths = filter (a: a != null) [
cfg.kubeconfig.caFile
cfg.kubeconfig.certFile
cfg.kubeconfig.keyFile
];
in mkIf cfg.enable {
systemd.services.kube-scheduler = rec {
description = "Kubernetes Scheduler Service"; description = "Kubernetes Scheduler Service";
wantedBy = [ "kubernetes.target" ]; wantedBy = [ "kube-control-plane-online.target" ];
after = [ "kube-apiserver.service" ]; after = [ "kube-apiserver.service" ];
before = [ "kube-control-plane-online.target" ];
environment.KUBECONFIG = top.lib.mkKubeConfig "kube-scheduler" cfg.kubeconfig;
path = [ pkgs.kubectl ];
preStart = ''
until kubectl auth can-i get /api -q 2>/dev/null; do
echo kubectl auth can-i get /api: exit status $?
sleep 2
done
'';
serviceConfig = { serviceConfig = {
Slice = "kubernetes.slice"; Slice = "kubernetes.slice";
ExecStart = ''${top.package}/bin/kube-scheduler \ ExecStart = ''${top.package}/bin/kube-scheduler \
--address=${cfg.address} \ --address=${cfg.address} \
${optionalString (cfg.featureGates != []) ${optionalString (cfg.featureGates != [])
"--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \ "--feature-gates=${concatMapStringsSep "," (feature: "${feature}=true") cfg.featureGates}"} \
--kubeconfig=${top.lib.mkKubeConfig "kube-scheduler" cfg.kubeconfig} \ --kubeconfig=${environment.KUBECONFIG} \
--leader-elect=${boolToString cfg.leaderElect} \ --leader-elect=${boolToString cfg.leaderElect} \
--port=${toString cfg.port} \ --port=${toString cfg.port} \
${optionalString (cfg.verbosity != null) "--v=${toString cfg.verbosity}"} \ ${optionalString (cfg.verbosity != null) "--v=${toString cfg.verbosity}"} \
@ -79,6 +96,15 @@ in
Restart = "on-failure"; Restart = "on-failure";
RestartSec = 5; RestartSec = 5;
}; };
unitConfig.ConditionPathExists = schedulerPaths;
};
systemd.paths.kube-scheduler = {
wantedBy = [ "kube-scheduler.service" ];
pathConfig = {
PathExists = schedulerPaths;
PathChanged = schedulerPaths;
};
}; };
services.kubernetes.pki.certs = { services.kubernetes.pki.certs = {

View File

@ -5,7 +5,7 @@ with lib;
let let
inherit (config.boot) kernelPatches; inherit (config.boot) kernelPatches;
inherit (config.boot.kernel) features; inherit (config.boot.kernel) features randstructSeed;
inherit (config.boot.kernelPackages) kernel; inherit (config.boot.kernelPackages) kernel;
kernelModulesConf = pkgs.writeText "nixos.conf" kernelModulesConf = pkgs.writeText "nixos.conf"
@ -38,6 +38,7 @@ in
default = pkgs.linuxPackages; default = pkgs.linuxPackages;
apply = kernelPackages: kernelPackages.extend (self: super: { apply = kernelPackages: kernelPackages.extend (self: super: {
kernel = super.kernel.override { kernel = super.kernel.override {
inherit randstructSeed;
kernelPatches = super.kernel.kernelPatches ++ kernelPatches; kernelPatches = super.kernel.kernelPatches ++ kernelPatches;
features = lib.recursiveUpdate super.kernel.features features; features = lib.recursiveUpdate super.kernel.features features;
}; };
@ -67,6 +68,19 @@ in
description = "A list of additional patches to apply to the kernel."; description = "A list of additional patches to apply to the kernel.";
}; };
boot.kernel.randstructSeed = mkOption {
type = types.str;
default = "";
example = "my secret seed";
description = ''
Provides a custom seed for the <varname>RANDSTRUCT</varname> security
option of the Linux kernel. Note that <varname>RANDSTRUCT</varname> is
only enabled in NixOS hardened kernels. Using a custom seed requires
building the kernel and dependent packages locally, since this
customization happens at build time.
'';
};
boot.kernelParams = mkOption { boot.kernelParams = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = [ ]; default = [ ];
@ -298,7 +312,7 @@ in
# !!! Should this really be needed? # !!! Should this really be needed?
(isYes "MODULES") (isYes "MODULES")
(isYes "BINFMT_ELF") (isYes "BINFMT_ELF")
]; ] ++ (optional (randstructSeed != "") (isYes "GCC_PLUGIN_RANDSTRUCT"));
# nixpkgs kernels are assumed to have all required features # nixpkgs kernels are assumed to have all required features
assertions = if config.boot.kernelPackages.kernel ? features then [] else assertions = if config.boot.kernelPackages.kernel ? features then [] else

View File

@ -30,7 +30,10 @@ let
{ config, pkgs, lib, nodes, ... }: { config, pkgs, lib, nodes, ... }:
mkMerge [ mkMerge [
{ {
boot.postBootCommands = "rm -fr /var/lib/kubernetes/secrets /tmp/shared/*"; boot = {
postBootCommands = "rm -fr /var/lib/kubernetes/secrets /tmp/shared/*";
kernel.sysctl = { "fs.inotify.max_user_instances" = 256; };
};
virtualisation.memorySize = mkDefault 1536; virtualisation.memorySize = mkDefault 1536;
virtualisation.diskSize = mkDefault 4096; virtualisation.diskSize = mkDefault 4096;
networking = { networking = {

View File

@ -77,6 +77,7 @@ let
singleNodeTest = { singleNodeTest = {
test = '' test = ''
# prepare machine1 for test # prepare machine1 for test
$machine1->waitForUnit("kubernetes.target");
$machine1->waitUntilSucceeds("kubectl get node machine1.${domain} | grep -w Ready"); $machine1->waitUntilSucceeds("kubectl get node machine1.${domain} | grep -w Ready");
$machine1->waitUntilSucceeds("docker load < ${redisImage}"); $machine1->waitUntilSucceeds("docker load < ${redisImage}");
$machine1->waitUntilSucceeds("kubectl create -f ${redisPod}"); $machine1->waitUntilSucceeds("kubectl create -f ${redisPod}");
@ -102,6 +103,8 @@ let
# Node token exchange # Node token exchange
$machine1->waitUntilSucceeds("cp -f /var/lib/cfssl/apitoken.secret /tmp/shared/apitoken.secret"); $machine1->waitUntilSucceeds("cp -f /var/lib/cfssl/apitoken.secret /tmp/shared/apitoken.secret");
$machine2->waitUntilSucceeds("cat /tmp/shared/apitoken.secret | nixos-kubernetes-node-join"); $machine2->waitUntilSucceeds("cat /tmp/shared/apitoken.secret | nixos-kubernetes-node-join");
$machine1->waitForUnit("kubernetes.target");
$machine2->waitForUnit("kubernetes.target");
# prepare machines for test # prepare machines for test
$machine1->waitUntilSucceeds("kubectl get node machine2.${domain} | grep -w Ready"); $machine1->waitUntilSucceeds("kubectl get node machine2.${domain} | grep -w Ready");

View File

@ -94,6 +94,8 @@ let
singlenode = base // { singlenode = base // {
test = '' test = ''
$machine1->waitForUnit("kubernetes.target");
$machine1->waitUntilSucceeds("kubectl get node machine1.my.zyx | grep -w Ready"); $machine1->waitUntilSucceeds("kubectl get node machine1.my.zyx | grep -w Ready");
$machine1->waitUntilSucceeds("docker load < ${kubectlImage}"); $machine1->waitUntilSucceeds("docker load < ${kubectlImage}");
@ -116,6 +118,8 @@ let
# Node token exchange # Node token exchange
$machine1->waitUntilSucceeds("cp -f /var/lib/cfssl/apitoken.secret /tmp/shared/apitoken.secret"); $machine1->waitUntilSucceeds("cp -f /var/lib/cfssl/apitoken.secret /tmp/shared/apitoken.secret");
$machine2->waitUntilSucceeds("cat /tmp/shared/apitoken.secret | nixos-kubernetes-node-join"); $machine2->waitUntilSucceeds("cat /tmp/shared/apitoken.secret | nixos-kubernetes-node-join");
$machine1->waitForUnit("kubernetes.target");
$machine2->waitForUnit("kubernetes.target");
$machine1->waitUntilSucceeds("kubectl get node machine2.my.zyx | grep -w Ready"); $machine1->waitUntilSucceeds("kubectl get node machine2.my.zyx | grep -w Ready");

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "drumkv1-${version}"; name = "drumkv1-${version}";
version = "0.9.5"; version = "0.9.6";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/drumkv1/${name}.tar.gz"; url = "mirror://sourceforge/drumkv1/${name}.tar.gz";
sha256 = "1azzwqgrrr4zr509sib2jvigfvz5bkwnx82chdadxdwfarai8586"; sha256 = "0d0kskr9pzdckw7sz4djjkkkgz1fa83zrq5my6qlxn68wqdj6800";
}; };
buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ]; buildInputs = [ libjack2 alsaLib libsndfile liblo lv2 qt5.qtbase qt5.qttools ];

View File

@ -5,13 +5,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "flacon-${version}"; name = "flacon-${version}";
version = "5.1.0"; version = "5.2.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "flacon"; owner = "flacon";
repo = "flacon"; repo = "flacon";
rev = "v${version}"; rev = "v${version}";
sha256 = "18m077z1hqjg10chy5rgajd9q1wnrcxhiidivgjcdchc9q5d4b08"; sha256 = "0vmbwpfjq66qv3zp7mss3hsxy6dxjybqfm7k2xyc0w181qclg1ya";
}; };
nativeBuildInputs = [ cmake pkgconfig makeWrapper ]; nativeBuildInputs = [ cmake pkgconfig makeWrapper ];

View File

@ -1,15 +0,0 @@
Dump temacs in an empty environment to prevent -dev paths from ending
up in the dumped image.
diff -ru -x '*~' emacs-25.3/src/Makefile.in emacs-25.3-new/src/Makefile.in
--- emacs-25.3/src/Makefile.in 2017-04-14 17:02:47.000000000 +0200
+++ emacs-25.3-new/src/Makefile.in 2017-09-25 19:03:02.173861038 +0200
@@ -532,7 +532,7 @@
ifeq ($(CANNOT_DUMP),yes)
ln -f temacs$(EXEEXT) $@
else
- LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup dump
+ env -i LC_ALL=C $(RUN_TEMACS) -batch $(BUILD_DETAILS) -l loadup dump
ifneq ($(PAXCTL_dumped),)
$(PAXCTL_dumped) $@
endif

View File

@ -4,19 +4,19 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
emacsVersion = "26.1"; emacsVersion = "26.2";
emacsName = "emacs-${emacsVersion}"; emacsName = "emacs-${emacsVersion}";
macportVersion = "7.4"; macportVersion = "7.6";
name = "emacs-mac-${emacsVersion}-${macportVersion}"; name = "emacs-mac-${emacsVersion}-${macportVersion}";
src = fetchurl { src = fetchurl {
url = "mirror://gnu/emacs/${emacsName}.tar.xz"; url = "mirror://gnu/emacs/${emacsName}.tar.xz";
sha256 = "0b6k1wq44rc8gkvxhi1bbjxbz3cwg29qbq8mklq2az6p1hjgrx0w"; sha256 = "13n5m60i47k96mpv5pp6km2ph9rv2m5lmbpzj929v02vpsfyc70m";
}; };
macportSrc = fetchurl { macportSrc = fetchurl {
url = "ftp://ftp.math.s.chiba-u.ac.jp/emacs/${emacsName}-mac-${macportVersion}.tar.gz"; url = "ftp://ftp.math.s.chiba-u.ac.jp/emacs/${emacsName}-mac-${macportVersion}.tar.gz";
sha256 = "1xl3rfqw1f3jil20xf6iy0f1hdk9adj8rnv7xhcjq4pymj4w8ka6"; sha256 = "00szqb74ds89m34sx5mq0gxhsrz64j691sxyvqncj10hw17d0y61";
}; };
hiresSrc = fetchurl { hiresSrc = fetchurl {
@ -24,7 +24,7 @@ stdenv.mkDerivation rec {
sha256 = "0f2wzdw2a3ac581322b2y79rlj3c9f33ddrq9allj97r1si6v5xk"; sha256 = "0f2wzdw2a3ac581322b2y79rlj3c9f33ddrq9allj97r1si6v5xk";
}; };
patches = [ ./clean-env-macport.patch ]; patches = [ ./clean-env.patch ];
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -108,6 +108,10 @@ in
mkdir -p $out/share/pixmaps mkdir -p $out/share/pixmaps
cp $out/lib/vscode/resources/app/resources/linux/code.png $out/share/pixmaps/code.png cp $out/lib/vscode/resources/app/resources/linux/code.png $out/share/pixmaps/code.png
# Override the previously determined VSCODE_PATH with the one we know to be correct
sed -i "/ELECTRON=/iVSCODE_PATH='$out/lib/vscode'" $out/bin/code
grep -q "VSCODE_PATH='$out/lib/vscode'" $out/bin/code # check if sed succeeded
''; '';
preFixup = lib.optionalString (system == "i686-linux" || system == "x86_64-linux") '' preFixup = lib.optionalString (system == "i686-linux" || system == "x86_64-linux") ''
@ -129,7 +133,7 @@ in
homepage = https://code.visualstudio.com/; homepage = https://code.visualstudio.com/;
downloadPage = https://code.visualstudio.com/Updates; downloadPage = https://code.visualstudio.com/Updates;
license = licenses.unfree; license = licenses.unfree;
maintainers = with maintainers; [ eadwu ]; maintainers = with maintainers; [ eadwu synthetica ];
platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ]; platforms = [ "i686-linux" "x86_64-linux" "x86_64-darwin" ];
}; };
} }

View File

@ -1,27 +1,27 @@
{ stdenv, pythonPackages, fetchurl }: { stdenv, pythonPackages, fetchurl, gettext }:
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
name = "bleachbit-${version}"; pname = "bleachbit";
version = "2.0"; version = "2.2";
namePrefix = ""; format = "other";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/bleachbit/${name}.tar.bz2"; url = "mirror://sourceforge/${pname}/${pname}-${version}.tar.bz2";
sha256 = "0ps98zx4n13q92bq7ykqi6hj3i7brdqgm87i9gk6ibvljp1vxdz9"; sha256 = "1yj9bc3k6s1aib7znb79h5rybfv691zz4szxkwf9fm9nr0dws603";
}; };
buildInputs = [ pythonPackages.wrapPython ]; nativeBuildInputs = [ gettext ];
doCheck = false; # Patch the many hardcoded uses of /usr/share/ and /usr/bin
postPatch = ''
postInstall = '' find -type f -exec sed -i -e 's@/usr/share@${placeholder "out"}/share@g' {} \;
mkdir -p $out/bin find -type f -exec sed -i -e 's@/usr/bin@${placeholder "out"}/bin@g' {} \;
cp bleachbit.py $out/bin/bleachbit
chmod +x $out/bin/bleachbit
substituteInPlace $out/bin/bleachbit --replace "#!/usr/bin/env python" "#!${pythonPackages.python.interpreter}"
''; '';
dontBuild = true;
installFlags = [ "prefix=${placeholder "out"}" ];
propagatedBuildInputs = with pythonPackages; [ pygtk ]; propagatedBuildInputs = with pythonPackages; [ pygtk ];
meta = { meta = {

View File

@ -2,7 +2,7 @@
buildGoPackage rec { buildGoPackage rec {
name = "exercism-${version}"; name = "exercism-${version}";
version = "3.0.9"; version = "3.0.11";
goPackagePath = "github.com/exercism/cli"; goPackagePath = "github.com/exercism/cli";
@ -10,7 +10,7 @@ buildGoPackage rec {
owner = "exercism"; owner = "exercism";
repo = "cli"; repo = "cli";
rev = "v${version}"; rev = "v${version}";
sha256 = "0nr3dzipylicrbplh25dw0w84qklr0xcyq442i9aswzibqrb2vc6"; sha256 = "1wg23bvibsk6j4iqwyw35wl9plfwdqxiql81zci7r1x4d5cp26av";
}; };
goDeps = ./deps.nix; goDeps = ./deps.nix;

View File

@ -1,26 +1,29 @@
{ stdenv, fetchFromGitHub, cmake, makeWrapper, qttools { stdenv, fetchFromGitHub, cmake, makeWrapper, qttools
, curl , curl
, glibcLocales
, libXi
, libXtst
, libargon2 , libargon2
, libgcrypt , libgcrypt
, libsodium
, zlib
, libmicrohttpd
, libXtst
, qtbase
, libgpgerror , libgpgerror
, glibcLocales , libmicrohttpd
, libsodium
, libyubikey , libyubikey
, yubikey-personalization , pkg-config
, libXi , qrencode
, qtx11extras , qtbase
, qtmacextras , qtmacextras
, qtsvg , qtsvg
, qrencode , qtx11extras
, quazip
, yubikey-personalization
, zlib
, withKeePassBrowser ? true , withKeePassBrowser ? true
, withKeePassKeeShare ? true
, withKeePassKeeShareSecure ? true
, withKeePassSSHAgent ? true , withKeePassSSHAgent ? true
, withKeePassHTTP ? false
, withKeePassNetworking ? false , withKeePassNetworking ? false
}: }:
@ -28,13 +31,13 @@ with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "keepassxc-${version}"; name = "keepassxc-${version}";
version = "2.4.0"; version = "2.4.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "keepassxreboot"; owner = "keepassxreboot";
repo = "keepassxc"; repo = "keepassxc";
rev = "${version}"; rev = "${version}";
sha256 = "1k8s56003gym2dv6c54gxwzs20i7lf6w5g5qnr449jfmf6wvbivr"; sha256 = "1cbfsfdvb4qw6yb0zl6mymdbphnb7lxbfrc5a8cjmn9w8b09kv6m";
}; };
NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang [ NIX_CFLAGS_COMPILE = stdenv.lib.optionalString stdenv.cc.isClang [
@ -52,17 +55,19 @@ stdenv.mkDerivation rec {
patches = [ patches = [
./darwin.patch ./darwin.patch
./quazip5.patch
]; ];
cmakeFlags = [ cmakeFlags = [
"-DKEEPASSXC_BUILD_TYPE=Release" "-DKEEPASSXC_BUILD_TYPE=Release"
"-DWITH_GUI_TESTS=ON" "-DWITH_GUI_TESTS=ON"
"-DWITH_XC_AUTOTYPE=ON" "-DWITH_XC_AUTOTYPE=ON"
"-DWITH_XC_UPDATECHECK=OFF"
"-DWITH_XC_YUBIKEY=ON" "-DWITH_XC_YUBIKEY=ON"
"-DWITH_XC_KEESHARE=ON"
] ]
++ (optional withKeePassBrowser "-DWITH_XC_BROWSER=ON") ++ (optional withKeePassBrowser "-DWITH_XC_BROWSER=ON")
++ (optional withKeePassHTTP "-DWITH_XC_HTTP=ON") ++ (optional withKeePassKeeShare "-DWITH_XC_KEESHARE=ON")
++ (optional withKeePassKeeShareSecure "-DWITH_XC_KEESHARE_SECURE=ON")
++ (optional withKeePassNetworking "-DWITH_XC_NETWORKING=ON") ++ (optional withKeePassNetworking "-DWITH_XC_NETWORKING=ON")
++ (optional withKeePassSSHAgent "-DWITH_XC_SSHAGENT=ON"); ++ (optional withKeePassSSHAgent "-DWITH_XC_SSHAGENT=ON");
@ -87,13 +92,16 @@ stdenv.mkDerivation rec {
libmicrohttpd libmicrohttpd
libsodium libsodium
libyubikey libyubikey
pkg-config
qrencode
qtbase qtbase
qtx11extras
qtsvg qtsvg
qtx11extras
yubikey-personalization yubikey-personalization
zlib zlib
qrencode ]
] ++ stdenv.lib.optional stdenv.isDarwin qtmacextras; ++ stdenv.lib.optional withKeePassKeeShareSecure quazip
++ stdenv.lib.optional stdenv.isDarwin qtmacextras;
postInstall = optionalString stdenv.isDarwin '' postInstall = optionalString stdenv.isDarwin ''
# Make it work without Qt in PATH. # Make it work without Qt in PATH.
@ -103,7 +111,7 @@ stdenv.mkDerivation rec {
meta = { meta = {
description = "Password manager to store your passwords safely and auto-type them into your everyday websites and applications"; description = "Password manager to store your passwords safely and auto-type them into your everyday websites and applications";
longDescription = "A community fork of KeePassX, which is itself a port of KeePass Password Safe. The goal is to extend and improve KeePassX with new features and bugfixes to provide a feature-rich, fully cross-platform and modern open-source password manager. Accessible via native cross-platform GUI and via CLI. Includes optional http-interface to allow browser-integration with plugins like PassIFox (https://github.com/pfn/passifox)."; longDescription = "A community fork of KeePassX, which is itself a port of KeePass Password Safe. The goal is to extend and improve KeePassX with new features and bugfixes to provide a feature-rich, fully cross-platform and modern open-source password manager. Accessible via native cross-platform GUI, CLI, and browser integration with the KeePassXC Browser Extension (https://github.com/keepassxreboot/keepassxc-browser).";
homepage = https://keepassxc.org/; homepage = https://keepassxc.org/;
license = licenses.gpl2; license = licenses.gpl2;
maintainers = with maintainers; [ s1lvester jonafato ]; maintainers = with maintainers; [ s1lvester jonafato ];

View File

@ -1,15 +0,0 @@
diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp
index 6fd65c1a..e99275b0 100644
--- a/src/gui/entry/EditEntryWidget.cpp
+++ b/src/gui/entry/EditEntryWidget.cpp
@@ -29,6 +29,7 @@
#include <QMenu>
#include <QSortFilterProxyModel>
#include <QTemporaryFile>
+#include <QButtonGroup>
#include <QMimeData>
#include <QEvent>
#include <QColorDialog>
--
2.17.1

View File

@ -0,0 +1,27 @@
diff --git a/cmake/FindQuaZip.cmake b/cmake/FindQuaZip.cmake
index 8d309181..92aa892c 100644
--- a/cmake/FindQuaZip.cmake
+++ b/cmake/FindQuaZip.cmake
@@ -9,7 +9,6 @@ IF(QUAZIP_INCLUDE_DIRS AND QUAZIP_LIBRARIES)
SET(QUAZIP_FOUND TRUE)
ELSE(QUAZIP_INCLUDE_DIRS AND QUAZIP_LIBRARIES)
IF(Qt5Core_FOUND)
- set(QUAZIP_LIB_VERSION_SUFFIX 5)
ENDIF()
IF(WIN32)
FIND_PATH(QUAZIP_LIBRARY_DIR
diff --git a/src/keeshare/ShareObserver.cpp b/src/keeshare/ShareObserver.cpp
index 33f5ed1f..5fcd9202 100644
--- a/src/keeshare/ShareObserver.cpp
+++ b/src/keeshare/ShareObserver.cpp
@@ -46,8 +46,8 @@
#include <QStringBuilder>
#if defined(WITH_XC_KEESHARE_SECURE)
-#include <quazip5/quazip.h>
-#include <quazip5/quazipfile.h>
+#include <quazip/quazip.h>
+#include <quazip/quazipfile.h>
#endif
namespace

View File

@ -20,6 +20,8 @@
, which , which
, curl , curl
, jq , jq
, xorg
, libGL
}: }:
let let
@ -50,7 +52,7 @@ let
else if stdenv.hostPlatform.system == "i686-linux" then "${stdenv.cc}/nix-support/dynamic-linker" else if stdenv.hostPlatform.system == "i686-linux" then "${stdenv.cc}/nix-support/dynamic-linker"
else throw "Unsupported platform for PlayOnLinux: ${stdenv.hostPlatform.system}"; else throw "Unsupported platform for PlayOnLinux: ${stdenv.hostPlatform.system}";
ld64 = "${stdenv.cc}/nix-support/dynamic-linker"; ld64 = "${stdenv.cc}/nix-support/dynamic-linker";
libs = pkgs: stdenv.lib.makeLibraryPath [ pkgs.xorg.libX11 ]; libs = pkgs: stdenv.lib.makeLibraryPath [ xorg.libX11 libGL ];
in stdenv.mkDerivation { in stdenv.mkDerivation {
name = "playonlinux-${version}"; name = "playonlinux-${version}";
@ -66,6 +68,8 @@ in stdenv.mkDerivation {
[ python2Packages.python [ python2Packages.python
python2Packages.wxPython python2Packages.wxPython
python2Packages.setuptools python2Packages.setuptools
xorg.libX11
libGL
]; ];
patchPhase = '' patchPhase = ''
@ -102,6 +106,5 @@ in stdenv.mkDerivation {
license = licenses.gpl3; license = licenses.gpl3;
maintainers = [ maintainers.a1russell ]; maintainers = [ maintainers.a1russell ];
platforms = [ "x86_64-linux" "i686-linux" ]; platforms = [ "x86_64-linux" "i686-linux" ];
broken = true;
}; };
} }

View File

@ -0,0 +1,139 @@
{ GConf
, alsaLib
, at-spi2-atk
, atk
, cairo
, cups
, dbus
, expat
, fetchurl
, fontconfig
, gdk_pixbuf
, glib
, gtk2
, gtk3
, lib
, libX11
, libXScrnSaver
, libXcomposite
, libXcursor
, libXdamage
, libXext
, libXfixes
, libXi
, libXrandr
, libXrender
, libXtst
, libappindicator
, libdrm
, libnotify
, libpciaccess
, libpng12
, libxcb
, nspr
, nss
, pango
, pciutils
, pulseaudio
, stdenv
, udev
, wrapGAppsHook
}:
let
libs = [
GConf
alsaLib
at-spi2-atk
atk
cairo
cups
dbus
expat
fontconfig
gdk_pixbuf
glib
gtk2
gtk3
libX11
libXScrnSaver
libXcomposite
libXcursor
libXdamage
libXext
libXfixes
libXi
libXrandr
libXrender
libXtst
libappindicator
libdrm
libnotify
libpciaccess
libpng12
libxcb
nspr
nss
pango
pciutils
pulseaudio
stdenv.cc.cc.lib
udev
];
libPath = lib.makeLibraryPath libs;
in
stdenv.mkDerivation rec {
pname = "stretchly";
version = "0.19.1";
src = fetchurl {
url = "https://github.com/hovancik/stretchly/releases/download/v${version}/stretchly-${version}.tar.xz";
sha256 = "1q2wxfqs8qv9b1rfh5lhmyp3rrgdl05m6ihsgkxlgp0yzi07afz8";
};
nativeBuildInputs = [
wrapGAppsHook
];
buildInputs = libs;
dontPatchELF = true;
dontBuild = true;
dontConfigure = true;
installPhase = ''
mkdir -p $out/bin $out/lib/stretchly
cp -r ./* $out/lib/stretchly/
ln -s $out/lib/stretchly/libffmpeg.so $out/lib/
ln -s $out/lib/stretchly/libnode.so $out/lib/
ln -s $out/lib/stretchly/stretchly $out/bin/
'';
preFixup = ''
patchelf --set-rpath "${libPath}" $out/lib/stretchly/libffmpeg.so
patchelf --set-rpath "${libPath}" $out/lib/stretchly/libnode.so
patchelf \
--set-rpath "$out/lib/stretchly:${libPath}" \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
$out/lib/stretchly/stretchly
'';
meta = with stdenv.lib; {
description = "A break time reminder app";
longDescription = ''
stretchly is a cross-platform electron app that reminds you to take
breaks when working on your computer. By default, it runs in your tray
and displays a reminder window containing an idea for a microbreak for 20
seconds every 10 minutes. Every 30 minutes, it displays a window
containing an idea for a longer 5 minute break.
'';
homepage = https://hovancik.net/stretchly;
downloadPage = https://hovancik.net/stretchly/downloads/;
license = licenses.bsd2;
maintainers = with maintainers; [ cdepillabout ];
platforms = platforms.linux;
};
}

View File

@ -302,10 +302,12 @@ stdenv.mkDerivation rec {
# easily generated by firefox at startup. # easily generated by firefox at startup.
rm -f "\$HOME/TorBrowser/Data/Browser/profile.default"/{compatibility.ini,extensions.ini,extensions.json} rm -f "\$HOME/TorBrowser/Data/Browser/profile.default"/{compatibility.ini,extensions.ini,extensions.json}
${optionalString pulseaudioSupport '' # XDG
# Figure out some envvars for pulseaudio
: "\''${XDG_RUNTIME_DIR:=/run/user/\$(id -u)}" : "\''${XDG_RUNTIME_DIR:=/run/user/\$(id -u)}"
: "\''${XDG_CONFIG_HOME:=\$REAL_HOME/.config}" : "\''${XDG_CONFIG_HOME:=\$REAL_HOME/.config}"
${optionalString pulseaudioSupport ''
# Figure out some envvars for pulseaudio
: "\''${PULSE_SERVER:=\$XDG_RUNTIME_DIR/pulse/native}" : "\''${PULSE_SERVER:=\$XDG_RUNTIME_DIR/pulse/native}"
: "\''${PULSE_COOKIE:=\$XDG_CONFIG_HOME/pulse/cookie}" : "\''${PULSE_COOKIE:=\$XDG_CONFIG_HOME/pulse/cookie}"
''} ''}
@ -336,9 +338,9 @@ stdenv.mkDerivation rec {
\ \
TMPDIR="\''${TMPDIR:-/tmp}" \ TMPDIR="\''${TMPDIR:-/tmp}" \
HOME="\$HOME" \ HOME="\$HOME" \
XAUTHORITY="\''${XAUTHORITY:-}" \ XAUTHORITY="\''${XAUTHORITY:-\$HOME/.Xauthority}" \
DISPLAY="\$DISPLAY" \ DISPLAY="\$DISPLAY" \
DBUS_SESSION_BUS_ADDRESS="\$DBUS_SESSION_BUS_ADDRESS" \ DBUS_SESSION_BUS_ADDRESS="\''${DBUS_SESSION_BUS_ADDRESS:-unix:path=\$XDG_RUNTIME_DIR/bus}" \\
\ \
XDG_DATA_HOME="\$HOME/.local/share" \ XDG_DATA_HOME="\$HOME/.local/share" \
XDG_DATA_DIRS="$WRAPPER_XDG_DATA_DIRS" \ XDG_DATA_DIRS="$WRAPPER_XDG_DATA_DIRS" \

View File

@ -57,11 +57,11 @@ let
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "signal-desktop-${version}"; name = "signal-desktop-${version}";
version = "1.23.2"; version = "1.24.0";
src = fetchurl { src = fetchurl {
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb"; url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
sha256 = "0nl8rv0lgp4cwv029kl7y09ngcrik2657m4wjn0rnls8kpmdhd8j"; sha256 = "0h5f1y29glq3l59gr54vln1jqfg5w9br3kg37wzwjjgvcac81ck9";
}; };
phases = [ "unpackPhase" "installPhase" ]; phases = [ "unpackPhase" "installPhase" ];

View File

@ -49,11 +49,11 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "wire-desktop"; pname = "wire-desktop";
version = "3.7.2891"; version = "3.9.2895";
src = fetchurl { src = fetchurl {
url = "https://wire-app.wire.com/linux/debian/pool/main/Wire-${version}_amd64.deb"; url = "https://wire-app.wire.com/linux/debian/pool/main/Wire-${version}_amd64.deb";
sha256 = "0x4nx1rpr9wai0h3n14h1r0f0lj5m29a3pkx1w6mfz5la74iczqc"; sha256 = "0wrn95m64j4b7ym44h9zawq13kg4m12aixlyyzp56bfyczmjq4a5";
}; };
desktopItem = makeDesktopItem { desktopItem = makeDesktopItem {

View File

@ -1,30 +0,0 @@
{ stdenv, fetchurl, unzip, firefox-unwrapped, makeWrapper }:
stdenv.mkDerivation rec {
name = "chatzilla-0.9.92";
src = fetchurl {
# Obtained from http://chatzilla.rdmsoft.com/xulrunner/.
url = "https://chatzilla.rdmsoft.com/xulrunner/download/${name}.en-US.xulapp";
sha256 = "09asg7ixjrin46xd19ri71g4jdrgb1gg0pk0lwk0dlb1qjxyf1xy";
};
buildInputs = [ unzip makeWrapper ];
buildCommand = ''
mkdir -p $out/libexec/chatzilla
unzip $src -d $out/libexec/chatzilla
makeWrapper ${firefox-unwrapped}/bin/firefox $out/bin/chatzilla \
--add-flags "-app $out/libexec/chatzilla/application.ini"
sed -i $out/libexec/chatzilla/application.ini -e 's/.*MaxVersion.*/MaxVersion=99.*/'
'';
meta = {
homepage = http://chatzilla.hacksrus.com/;
description = "Stand-alone version of Chatzilla, an IRC client";
maintainers = [ stdenv.lib.maintainers.eelco ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -2,7 +2,7 @@
libsecret, libGL, libpulseaudio, glib, makeWrapper, makeDesktopItem }: libsecret, libGL, libpulseaudio, glib, makeWrapper, makeDesktopItem }:
let let
version = "1.1.3-1"; version = "1.1.4-1";
description = '' description = ''
An application that runs on your computer in the background and seamlessly encrypts An application that runs on your computer in the background and seamlessly encrypts
@ -25,7 +25,7 @@ in stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "https://protonmail.com/download/protonmail-bridge_${version}_amd64.deb"; url = "https://protonmail.com/download/protonmail-bridge_${version}_amd64.deb";
sha256 = "15kyhyx1v4bb2sqzwq7bqrxxw7g733p5jnsgjqka2ygzg6dl2c5n"; sha256 = "16w3l81j10syl2pis08sl752yapbgjy531qs0n1ghmsx2d12n7kl";
}; };
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];

View File

@ -72,6 +72,12 @@ stdenv.mkDerivation rec {
url = "https://git.sagemath.org/sage.git/patch?id2=10407524b18659e14e184114b61c043fb816f3c2&id=c9b0cc9d0b8748ab85e568f8f57f316c5e8cbe54"; url = "https://git.sagemath.org/sage.git/patch?id2=10407524b18659e14e184114b61c043fb816f3c2&id=c9b0cc9d0b8748ab85e568f8f57f316c5e8cbe54";
sha256 = "0wgp7yvn9sm1ynlhcr4l0hzmvr2n28llg4xc01p6k1zz4im64c17"; sha256 = "0wgp7yvn9sm1ynlhcr4l0hzmvr2n28llg4xc01p6k1zz4im64c17";
}) })
# https://trac.sagemath.org/ticket/27224
(fetchpatch {
name = "sig_on_in_matrix_misc.patch";
url = "https://git.sagemath.org/sage.git/patch?id=85d25bf2eb73f7d3c6de4ee6222b0c399be43b07";
sha256 = "1ciwhh57pnb9b4i8m3vb07wfsibsay5sg0jp5giq1pzc5zc79a4p";
})
]; ];
# Patches needed because of package updates. We could just pin the versions of # Patches needed because of package updates. We could just pin the versions of

View File

@ -1,12 +1,12 @@
{ stdenv, python3Packages }: { stdenv, python3Packages }:
with python3Packages; buildPythonApplication rec { with python3Packages; buildPythonApplication rec {
pname = "pre-commit"; pname = "pre-commit";
version = "1.14.4"; version = "1.15.1";
src = fetchPypi { src = fetchPypi {
inherit version; inherit version;
pname = "pre_commit"; pname = "pre_commit";
sha256 = "1ly40348x9lkzsr7a9grkn7m8m6lhfsv0ihlnp288xbvmrirrmnk"; sha256 = "1c4a6g3x44xkr75196m2qhb7fbm0lv40yv312g4hkl00mq713abm";
}; };
propagatedBuildInputs = [ propagatedBuildInputs = [

View File

@ -1,14 +1,14 @@
{ stdenv, pythonPackages, fetchFromGitHub, rtmpdump, ffmpeg }: { stdenv, pythonPackages, fetchFromGitHub, rtmpdump, ffmpeg }:
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
version = "1.0.0"; version = "1.1.1";
name = "streamlink-${version}"; name = "streamlink-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "streamlink"; owner = "streamlink";
repo = "streamlink"; repo = "streamlink";
rev = "${version}"; rev = "${version}";
sha256 = "12x8gnp6lv3vi1z2wfb0vjim2wm6abpr938yy48kqj7qff385ihd"; sha256 = "1vyf0pifdqygg98azdkfhy5fdckb0w2ca7c46mkrj452gkvmcq33";
}; };
checkInputs = with pythonPackages; [ pytest mock requests-mock freezegun ]; checkInputs = with pythonPackages; [ pytest mock requests-mock freezegun ];

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "zafiro-icons"; pname = "zafiro-icons";
version = "0.8.7"; version = "0.9";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "zayronxio"; owner = "zayronxio";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "09zdaly9g11k6p36xdd7skgl78s6j78hn3gy1jnpsxh0136md89h"; sha256 = "0zmnhih4gz8bidyzf1wimy85z7zx9i29mv1zirmykpqj819g7mx9";
}; };
nativeBuildInputs = [ gtk3 ]; nativeBuildInputs = [ gtk3 ];

View File

@ -1,23 +1,25 @@
{ stdenv, fetchurl }: { stdenv, fetchurl, gnome3 }:
let
version = "20190116";
pname = "mobile-broadband-provider-info";
name = "${pname}-${version}";
in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
inherit name; pname = "mobile-broadband-provider-info";
version = "20190116";
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/${pname}/${version}/${name}.tar.xz"; url = "mirror://gnome/sources/${pname}/${version}/${pname}-${version}.tar.xz";
sha256 = "16y5lc7pfdvai9c8xwb825zc3v46039gghbip13fqslf5gw11fic"; sha256 = "16y5lc7pfdvai9c8xwb825zc3v46039gghbip13fqslf5gw11fic";
}; };
meta = { passthru = {
updateScript = gnome3.updateScript {
packageName = pname;
};
};
meta = with stdenv.lib; {
description = "Mobile broadband service provider database"; description = "Mobile broadband service provider database";
homepage = http://live.gnome.org/NetworkManager/MobileBroadband/ServiceProviders; homepage = https://wiki.gnome.org/Projects/NetworkManager/MobileBroadband/ServiceProviders;
platforms = stdenv.lib.platforms.all; license = licenses.publicDomain;
license = stdenv.lib.licenses.publicDomain;
maintainers = [ ]; maintainers = [ ];
platforms = platforms.all;
}; };
} }

View File

@ -9,7 +9,7 @@
, gtk3, glib, glib-networking, gsettings-desktop-schemas , gtk3, glib, glib-networking, gsettings-desktop-schemas
, gnome-desktop, gnome-settings-daemon, gnome-online-accounts , gnome-desktop, gnome-settings-daemon, gnome-online-accounts
, vino, gnome-bluetooth, tracker, adwaita-icon-theme , vino, gnome-bluetooth, tracker, adwaita-icon-theme
, udisks2, gsound, libhandy, cups }: , udisks2, gsound, libhandy, cups, mutter }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "gnome-control-center"; pname = "gnome-control-center";
@ -60,6 +60,8 @@ stdenv.mkDerivation rec {
# Thumbnailers (for setting user profile pictures) # Thumbnailers (for setting user profile pictures)
--prefix XDG_DATA_DIRS : "${gdk_pixbuf}/share" --prefix XDG_DATA_DIRS : "${gdk_pixbuf}/share"
--prefix XDG_DATA_DIRS : "${librsvg}/share" --prefix XDG_DATA_DIRS : "${librsvg}/share"
# WM keyboard shortcuts
--prefix XDG_DATA_DIRS : "${mutter}/share"
) )
for i in $out/share/applications/*; do for i in $out/share/applications/*; do
substituteInPlace $i --replace "Exec=gnome-control-center" "Exec=$out/bin/gnome-control-center" substituteInPlace $i --replace "Exec=gnome-control-center" "Exec=$out/bin/gnome-control-center"

View File

@ -1,24 +1,67 @@
{ stdenv, fetchurl, meson, ninja, pkgconfig, gettext, sqlite, librest { stdenv
, gnome3, libxml2, gupnp, gssdp, lua5, liboauth, gupnp-av, libgdata, libmediaart , fetchurl
, gmime, json-glib, avahi, tracker, dleyna-server, itstool, totem-pl-parser }: , meson
, ninja
, pkgconfig
, gettext
, gperf
, sqlite
, librest
, libarchive
, libsoup
, gnome3
, libxml2
, lua5_3
, liboauth
, libgdata
, libmediaart
, grilo
, gnome-online-accounts
, gmime
, json-glib
, avahi
, tracker
, dleyna-server
, itstool
, totem-pl-parser
}:
let stdenv.mkDerivation rec {
pname = "grilo-plugins"; pname = "grilo-plugins";
version = "0.3.8"; version = "0.3.8";
in stdenv.mkDerivation rec {
name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0nync07gah3jkpb5ph5d3gwbygmabnih2m3hfz7lkvjl2l5pgpac"; sha256 = "0nync07gah3jkpb5ph5d3gwbygmabnih2m3hfz7lkvjl2l5pgpac";
}; };
nativeBuildInputs = [ meson ninja pkgconfig gettext itstool ]; nativeBuildInputs = [
meson
ninja
pkgconfig
gettext
itstool
gperf # for lua-factory
];
buildInputs = [ buildInputs = [
gnome3.grilo libxml2 gupnp gssdp libgdata grilo
lua5 liboauth gupnp-av sqlite gnome3.gnome-online-accounts libxml2
totem-pl-parser librest gmime json-glib libgdata
avahi libmediaart tracker dleyna-server lua5_3
liboauth
sqlite
gnome-online-accounts
totem-pl-parser
librest
libarchive
libsoup
gmime
json-glib
avahi
libmediaart
tracker
dleyna-server
]; ];
passthru = { passthru = {

View File

@ -1,41 +1,90 @@
{ stdenv, fetchurl, pkgconfig, vala, gettext, libxml2, gobject-introspection, gtk-doc, wrapGAppsHook, glib, gssdp, gupnp, gupnp-av, gupnp-dlna, gst_all_1, libgee, libsoup, gtk3, libmediaart, sqlite, systemd, tracker, shared-mime-info, gnome3 }: { stdenv
, fetchurl
, meson
, ninja
, pkgconfig
, vala
, gettext
, libxml2
, gobject-introspection
, gtk-doc
, wrapGAppsHook
, python3
, glib
, gssdp
, gupnp
, gupnp-av
, gupnp-dlna
, gst_all_1
, libgee
, libsoup
, gtk3
, libmediaart
, sqlite
, systemd
, tracker
, shared-mime-info
, gnome3
}:
let stdenv.mkDerivation rec {
pname = "rygel"; pname = "rygel";
version = "0.36.2"; version = "0.38.0";
in stdenv.mkDerivation rec {
name = "${pname}-${version}";
# TODO: split out lib # TODO: split out lib
outputs = [ "out" "dev" "devdoc" ]; outputs = [ "out" "dev" "devdoc" ];
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0i12z6bzfzgcjidhxa2jsvpm4hqpab0s032z13jy2vbifrncfcnk"; sha256 = "03ky18hwcz362lbhqm1zm0ax2a075r69xms5cznchn9p9w8z5axc";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
pkgconfig vala gettext libxml2 gobject-introspection gtk-doc wrapGAppsHook meson
ninja
pkgconfig
vala
gettext
libxml2
gobject-introspection
gtk-doc
wrapGAppsHook
python3
]; ];
buildInputs = [ buildInputs = [
glib gssdp gupnp gupnp-av gupnp-dlna libgee libsoup gtk3 libmediaart sqlite systemd tracker shared-mime-info glib
gssdp
gupnp
gupnp-av
gupnp-dlna
libgee
libsoup
gtk3
libmediaart
sqlite
systemd
tracker
shared-mime-info
] ++ (with gst_all_1; [ ] ++ (with gst_all_1; [
gstreamer gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly gstreamer
gst-plugins-base
gst-plugins-good
gst-plugins-bad
gst-plugins-ugly
]); ]);
configureFlags = [ mesonFlags = [
"--with-systemduserunitdir=$(out)/lib/systemd/user" "-Dsystemd-user-units-dir=${placeholder "out"}/lib/systemd/user"
"--enable-apidocs" "-Dapi-docs=true"
"--sysconfdir=/etc" "--sysconfdir=/etc"
]; ];
installFlags = [
"sysconfdir=$(out)/etc"
];
doCheck = true; doCheck = true;
enableParallelBuilding = true; postPatch = ''
patchShebangs data/xml/process-xml.py
'';
passthru = { passthru = {
updateScript = gnome3.updateScript { updateScript = gnome3.updateScript {

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "gnome-shell-extension-sound-output-device-chooser"; pname = "gnome-shell-extension-sound-output-device-chooser";
version = "unstable-2019-03-10"; version = "unstable-2019-04-01";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "kgshank"; owner = "kgshank";
repo = "gse-sound-output-device-chooser"; repo = "gse-sound-output-device-chooser";
rev = "26c66da6795104802f3240bd9f5741f64367c8e7"; rev = "37098909a50bafe2f2538819f988cb2327ed7c60";
sha256 = "153cdd0pip4nbpc2a9y1v3y7qivafv3wk296zqdamcjrd0p94nqz"; sha256 = "09sbby8zi9xn21lbdry57bp1vwgd5c73anvqpw9css3x2ryda5li";
}; };
dontBuild = true; dontBuild = true;

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "gnome-shell-extension-window-corner-preview"; pname = "gnome-shell-extension-window-corner-preview";
version = "unstable-2019-02-27"; version = "unstable-2019-04-03";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "medenagan"; owner = "medenagan";
repo = "window-corner-preview"; repo = "window-corner-preview";
rev = "9c1e97c7f7ecd530abac572050f6ec89c1ac7571"; rev = "a95bb1389d94474efab7509aac592fb58fff6006";
sha256 = "12yx3zfnqkpy9g8mhniw02q61axgb14aqiyj6pdfcdmd6hrgsmz6"; sha256 = "03v18j9l0fb64xrg3swf1vcgl0kpgwjlp8ddn068bpvghrsvgfah";
}; };
dontBuild = true; dontBuild = true;

View File

@ -1,49 +1,73 @@
{ stdenv, fetchFromGitHub, fetchpatch, autoconf-archive, appstream-glib, intltool, pkgconfig, libtool, wrapGAppsHook, { stdenv
dbus-glib, libcanberra, gst_all_1, vala, gnome3, gtk3, libxml2, autoreconfHook, , fetchFromGitHub
glib, gobject-introspection, libpeas , autoconf-archive
, appstream-glib
, pkgconfig
, wrapGAppsHook
, libcanberra
, gst_all_1
, vala
, gtk3
, gom
, sqlite
, libxml2
, autoreconfHook
, glib
, gobject-introspection
, libpeas
, gnome-shell
, gsettings-desktop-schemas
, adwaita-icon-theme
, gettext
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.13.4"; pname = "gnome-shell-pomodoro";
name = "gnome-shell-pomodoro-${version}"; version = "0.15.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "codito"; owner = "codito";
repo = "gnome-pomodoro"; repo = "gnome-pomodoro";
rev = "${version}"; rev = version;
sha256 = "0fiql99nhj168wbfhvzrhfcm4c4569gikd2zaf10vzszdqjahrl1"; sha256 = "0nmgd122gsfka0p50mila88iwrzckq2r36a3h20lswn5qkn321i1";
}; };
patches = [
# build with Vala ≥ 0.42
(fetchpatch {
url = https://github.com/codito/gnome-pomodoro/commit/36778823ca5bd94b2aa948e5d8718f84d99d9af0.patch;
sha256 = "0a9x0p5wny3an9xawam9nhpffw5m4kgwj5jvv0g6c2lwlfzrx2rh";
})
];
nativeBuildInputs = [ nativeBuildInputs = [
autoreconfHook vala autoconf-archive libtool intltool appstream-glib appstream-glib
wrapGAppsHook pkgconfig libxml2 autoconf-archive
autoreconfHook
gettext
gobject-introspection
libxml2
pkgconfig
vala
wrapGAppsHook
]; ];
buildInputs = [ buildInputs = [
glib gobject-introspection libpeas adwaita-icon-theme
dbus-glib libcanberra gst_all_1.gstreamer glib
gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gnome-shell
gnome3.gsettings-desktop-schemas gom
gnome3.gnome-shell gtk3 gnome3.adwaita-icon-theme gsettings-desktop-schemas
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gstreamer
gtk3
libcanberra
libpeas
sqlite
]; ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://gnomepomodoro.org/; homepage = https://gnomepomodoro.org/;
description = "A time management utility for GNOME based on the pomodoro technique"; description = "Time management utility for GNOME based on the pomodoro technique";
longDescription = '' longDescription = ''
This GNOME utility helps to manage time according to Pomodoro Technique. This GNOME utility helps to manage time according to Pomodoro Technique.
It intends to improve productivity and focus by taking short breaks. It intends to improve productivity and focus by taking short breaks.
''; '';
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ worldofpeace ];
license = licenses.gpl3; license = licenses.gpl3Plus;
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -99,7 +99,6 @@ rec {
(lib.optional (p ? cpu) "-mcpu=${p.cpu}") (lib.optional (p ? cpu) "-mcpu=${p.cpu}")
(lib.optional (p ? abi) "-mabi=${p.abi}") (lib.optional (p ? abi) "-mabi=${p.abi}")
(lib.optional (p ? fpu) "-mfpu=${p.fpu}") (lib.optional (p ? fpu) "-mfpu=${p.fpu}")
(lib.optional (p ? float) "-mfloat=${p.float}")
(lib.optional (p ? float-abi) "-mfloat-abi=${p.float-abi}") (lib.optional (p ? float-abi) "-mfloat-abi=${p.float-abi}")
(lib.optional (p ? mode) "-mmode=${p.mode}") (lib.optional (p ? mode) "-mmode=${p.mode}")
]; ];

View File

@ -18,16 +18,16 @@ let
else "amd64"; else "amd64";
major = "11"; major = "11";
update = ".0.2"; update = ".0.3";
build = "9"; build = "ga";
repover = "jdk-${major}${update}+${build}"; repover = "jdk-${major}${update}-${build}";
openjdk = stdenv.mkDerivation { openjdk = stdenv.mkDerivation {
name = "openjdk-${major}${update}-b${build}"; name = "openjdk-${major}${update}-${build}";
src = fetchurl { src = fetchurl {
url = "http://hg.openjdk.java.net/jdk-updates/jdk${major}u/archive/${repover}.tar.gz"; url = "http://hg.openjdk.java.net/jdk-updates/jdk${major}u/archive/${repover}.tar.gz";
sha256 = "0xc7nksvj72cgw8zrmvlcwaasinpij1j1959398a4nqvzpvpxg30"; sha256 = "1v6pam38iidlhz46046h17hf5kki6n3kl302awjcyxzk7bmkvb8x";
}; };
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];

View File

@ -21,44 +21,44 @@ let
else else
throw "openjdk requires i686-linux or x86_64 linux"; throw "openjdk requires i686-linux or x86_64 linux";
update = "202"; update = "212";
build = "ga"; build = "ga";
baseurl = "http://hg.openjdk.java.net/jdk8u/jdk8u"; baseurl = "http://hg.openjdk.java.net/jdk8u/jdk8u";
repover = "jdk8u${update}-${build}"; repover = "jdk8u${update}-${build}";
jdk8 = fetchurl { jdk8 = fetchurl {
url = "${baseurl}/archive/${repover}.tar.gz"; url = "${baseurl}/archive/${repover}.tar.gz";
sha256 = "0asx7qkhmrlfmhrljck5gb3yp4v0aa8k35y4xfcph41x0m0mvrdb"; sha256 = "00rl33h4cl4b4p3hcid765h38x2jdkb14ylh8k1zhnd0ka76crgg";
}; };
langtools = fetchurl { langtools = fetchurl {
url = "${baseurl}/langtools/archive/${repover}.tar.gz"; url = "${baseurl}/langtools/archive/${repover}.tar.gz";
sha256 = "07q6l3slmi5fgwjnsk6bd8miv8glmw15w5f6yyvp8nlp2d54l33n"; sha256 = "0va6g2dccf1ph6mpwxswbks5axp7zz258cl89qq9r8jn4ni04agw";
}; };
hotspot = fetchurl { hotspot = fetchurl {
url = "${baseurl}/hotspot/archive/${repover}.tar.gz"; url = "${baseurl}/hotspot/archive/${repover}.tar.gz";
sha256 = "01k4pwhn3nmkzdhdj1v58dgir4iwsj9mm2ml1541z31s53g037cq"; sha256 = "0sgr9df10hs49pjld6c6kr374v4zwd9s52pc3drz68zrlk71ja4s";
}; };
corba = fetchurl { corba = fetchurl {
url = "${baseurl}/corba/archive/${repover}.tar.gz"; url = "${baseurl}/corba/archive/${repover}.tar.gz";
sha256 = "0v39kl2iiyh74p3cp6bjhshkwxpgbffza9abzjgp7cpdfhcc73p0"; sha256 = "1hq0sr4k4k4iv815kg72i9lvd7n7mn5pmw96ckk9p1rnyagn9z03";
}; };
jdk = fetchurl { jdk = fetchurl {
url = "${baseurl}/jdk/archive/${repover}.tar.gz"; url = "${baseurl}/jdk/archive/${repover}.tar.gz";
sha256 = "0z1cy6aq09j25jyryj47rms15h5175p2h23fg5pv035zapf8nb1b"; sha256 = "1fc59jrbfq8l067mggzy5dnrvni7lwaqd7hahs4nqv87kyrfg545";
}; };
jaxws = fetchurl { jaxws = fetchurl {
url = "${baseurl}/jaxws/archive/${repover}.tar.gz"; url = "${baseurl}/jaxws/archive/${repover}.tar.gz";
sha256 = "0y0mk4sra9d29kgx842m5y4bz9gczc9ypkajv6m5igjv7sizzsv7"; sha256 = "1ka2fvyxdmpfhk814s314gx53yvdr19vpsqygx283v9nbq90l1yg";
}; };
jaxp = fetchurl { jaxp = fetchurl {
url = "${baseurl}/jaxp/archive/${repover}.tar.gz"; url = "${baseurl}/jaxp/archive/${repover}.tar.gz";
sha256 = "07ssrjhffkdncxxhsbid21hlg51y7js3x7sb4g474vmmi3qj6vmb"; sha256 = "15vlgs5v2ax8sqwh7bg50fnlrwlpnkp0myzrvpqs1mcza8pyasp8";
}; };
nashorn = fetchurl { nashorn = fetchurl {
url = "${baseurl}/nashorn/archive/${repover}.tar.gz"; url = "${baseurl}/nashorn/archive/${repover}.tar.gz";
sha256 = "0r0b8ra0ibzbdpxz6nv6i2zrzh2j5sxgprpnl6gf4d9h0i29ickj"; sha256 = "1jzn0yi0v6lda5y8ib07g1p6zymnbcx9yy6iz8niggpm7205y93h";
}; };
openjdk8 = stdenv.mkDerivation { openjdk8 = stdenv.mkDerivation {
name = "openjdk-8u${update}b${build}"; name = "openjdk-8u${update}-${build}";
srcs = [ jdk8 langtools hotspot corba jdk jaxws jaxp nashorn ]; srcs = [ jdk8 langtools hotspot corba jdk jaxws jaxp nashorn ];
sourceRoot = "."; sourceRoot = ".";

View File

@ -1,12 +1,12 @@
{ stdenv, fetchurl, makeWrapper, jre, ncurses }: { stdenv, fetchurl, makeWrapper, jre, ncurses }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.10.0-RC1"; version = "0.14.0-RC1";
name = "dotty-bare-${version}"; name = "dotty-bare-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/lampepfl/dotty/releases/download/${version}/dotty-${version}.tar.gz"; url = "https://github.com/lampepfl/dotty/releases/download/${version}/dotty-${version}.tar.gz";
sha256 = "0s9vh0d6xx99gl0ji0dgmbq36f79c0iwfbrfqwmaclqm9yq5m54k"; sha256 = "0nrgsyhqjlpvnjqgb18pryr8q7knq3dq25jhp98s4wh76nssm1zr";
}; };
propagatedBuildInputs = [ jre ncurses.dev ] ; propagatedBuildInputs = [ jre ncurses.dev ] ;

View File

@ -0,0 +1,17 @@
--- a/Lib/py_compile.py
+++ b/Lib/py_compile.py
@@ -139,3 +139,4 @@
source_stats = loader.path_stats(file)
+ source_mtime = 1 if 'DETERMINISTIC_BUILD' in os.environ else source_stats['mtime']
bytecode = importlib._bootstrap_external._code_to_bytecode(
- code, source_stats['mtime'], source_stats['size'])
+ code, source_mtime, source_stats['size'])
--- a/Lib/importlib/_bootstrap_external.py
+++ b/Lib/importlib/_bootstrap_external.py
@@ -485,5 +485,5 @@
if source_stats is not None:
try:
- source_mtime = int(source_stats['mtime'])
+ source_mtime = 1
except KeyError:
pass

View File

@ -87,6 +87,9 @@ in with passthru; stdenv.mkDerivation {
# (since it will do a futile invocation of gcc (!) to find # (since it will do a futile invocation of gcc (!) to find
# libuuid, slowing down program startup a lot). # libuuid, slowing down program startup a lot).
(./. + "/${sourceVersion.major}.${sourceVersion.minor}/no-ldconfig.patch") (./. + "/${sourceVersion.major}.${sourceVersion.minor}/no-ldconfig.patch")
] ++ optionals (isPy35 || isPy36) [
# Determinism: Write null timestamps when compiling python files.
./3.5/force_bytecode_determinism.patch
] ++ optionals isPy35 [ ] ++ optionals isPy35 [
# Backports support for LD_LIBRARY_PATH from 3.6 # Backports support for LD_LIBRARY_PATH from 3.6
./3.5/ld_library_path.patch ./3.5/ld_library_path.patch
@ -168,8 +171,8 @@ in with passthru; stdenv.mkDerivation {
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -msse2" export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -msse2"
export MACOSX_DEPLOYMENT_TARGET=10.6 export MACOSX_DEPLOYMENT_TARGET=10.6
'' + optionalString (isPy3k && pythonOlder "3.7") '' '' + optionalString (isPy3k && pythonOlder "3.7") ''
# Determinism: The interpreter is patched to write null timestamps when compiling python files. # Determinism: The interpreter is patched to write null timestamps when compiling Python files
# This way python does not try to update them when we freeze timestamps in nix store. # so Python doesn't try to update the bytecode when seeing frozen timestamps in Nix's store.
export DETERMINISTIC_BUILD=1; export DETERMINISTIC_BUILD=1;
'' + optionalString stdenv.hostPlatform.isMusl '' '' + optionalString stdenv.hostPlatform.isMusl ''
export NIX_CFLAGS_COMPILE+=" -DTHREAD_STACK_SIZE=0x100000" export NIX_CFLAGS_COMPILE+=" -DTHREAD_STACK_SIZE=0x100000"

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, fetchpatch, autoconf213, pkgconfig, perl, python2, zip, which, readline, icu, zlib, nspr }: { stdenv, fetchurl, fetchpatch, autoconf213, pkgconfig, perl, python2, zip, which, readline, icu, zlib, nspr, buildPackages }:
let let
version = "52.9.0"; version = "52.9.0";
@ -14,7 +14,7 @@ in stdenv.mkDerivation rec {
setOutputFlags = false; # Configure script only understands --includedir setOutputFlags = false; # Configure script only understands --includedir
buildInputs = [ readline icu zlib nspr ]; buildInputs = [ readline icu zlib nspr ];
nativeBuildInputs = [ autoconf213 pkgconfig perl which python2 zip ]; nativeBuildInputs = [ autoconf213 pkgconfig perl which buildPackages.python2 zip ];
# Apparently this package fails to build correctly with modern compilers, which at least # Apparently this package fails to build correctly with modern compilers, which at least
# on ARMv6 causes polkit testsuite to break with an assertion failure in spidermonkey. # on ARMv6 causes polkit testsuite to break with an assertion failure in spidermonkey.
@ -31,10 +31,12 @@ in stdenv.mkDerivation rec {
}) })
]; ];
configurePlatforms = [ "host" "target" ];
preConfigure = '' preConfigure = ''
export CXXFLAGS="-fpermissive" export CXXFLAGS="-fpermissive"
export LIBXUL_DIST=$out export LIBXUL_DIST=$out
export PYTHON="${python2.interpreter}" export PYTHON="${buildPackages.python2.interpreter}"
configureFlagsArray+=("--includedir=$dev/include") configureFlagsArray+=("--includedir=$dev/include")
cd js/src cd js/src
@ -43,7 +45,7 @@ in stdenv.mkDerivation rec {
''; '';
configureFlags = [ configureFlags = [
"--with-system-nspr" "--with-nspr-prefix=${nspr}"
"--with-system-zlib" "--with-system-zlib"
"--with-system-icu" "--with-system-icu"
"--with-intl-api" "--with-intl-api"
@ -51,6 +53,12 @@ in stdenv.mkDerivation rec {
"--enable-shared-js" "--enable-shared-js"
] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl "--disable-jemalloc"; ] ++ stdenv.lib.optional stdenv.hostPlatform.isMusl "--disable-jemalloc";
makeFlags = [
"HOST_CC=${buildPackages.stdenv.cc}/bin/cc"
];
depsBuildBuild = [ buildPackages.stdenv.cc ];
enableParallelBuilding = true; enableParallelBuilding = true;
postInstall = '' postInstall = ''

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "ace-${version}"; name = "ace-${version}";
version = "6.5.4"; version = "6.5.5";
src = fetchurl { src = fetchurl {
url = "http://download.dre.vanderbilt.edu/previous_versions/ACE-${version}.tar.bz2"; url = "http://download.dre.vanderbilt.edu/previous_versions/ACE-${version}.tar.bz2";
sha256 = "0qs54p2kwkk05nfkijdn0rksjw86bkdk4mnh2nkxgnv32s6wdkv6"; sha256 = "1r1bvy65n50l6lbxm1k1bscqcv29mpkgp0pgr5cvvv7ldisrjl39";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -1,10 +1,17 @@
{ stdenv, autoreconfHook, pkgconfig, fetchFromGitHub, gupnp }: { stdenv
, fetchFromGitHub
, fetchpatch
, autoreconfHook
, pkgconfig
, gupnp
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "dleyna-core"; pname = "dleyna-core";
name = "${pname}-${version}";
version = "0.6.0"; version = "0.6.0";
setupHook = ./setup-hook.sh;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "01org"; owner = "01org";
repo = pname; repo = pname;
@ -12,12 +19,25 @@ stdenv.mkDerivation rec {
sha256 = "1x5vj5zfk95avyg6g3nf6gar250cfrgla2ixj2ifn8pcick2d9vq"; sha256 = "1x5vj5zfk95avyg6g3nf6gar250cfrgla2ixj2ifn8pcick2d9vq";
}; };
setupHook = ./setup-hook.sh; patches = [
./0001-Search-connectors-in-DLEYNA_CONNECTOR_PATH.patch
patches = [ ./0001-Search-connectors-in-DLEYNA_CONNECTOR_PATH.patch ]; # fix build with gupnp 1.2
# https://github.com/intel/dleyna-core/pull/52
(fetchpatch {
url = https://github.com/intel/dleyna-core/commit/41b2e56f67b6fc9c8c256b86957d281644b9b846.patch;
sha256 = "1h758cp65v7qyfpvyqdri7q0gwx85mhdpkb2y8waq735q5q9ib39";
})
];
nativeBuildInputs = [ autoreconfHook pkgconfig ]; nativeBuildInputs = [
propagatedBuildInputs = [ gupnp ]; autoreconfHook
pkgconfig
];
propagatedBuildInputs = [
gupnp
];
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Library of utility functions that are used by the higher level dLeyna"; description = "Library of utility functions that are used by the higher level dLeyna";

View File

@ -1,8 +1,20 @@
{ stdenv, autoreconfHook, pkgconfig, fetchFromGitHub, dleyna-connector-dbus, dleyna-core, gssdp, gupnp, gupnp-av, gupnp-dlna, libsoup, makeWrapper }: { stdenv
, fetchurl
, fetchFromGitHub
, autoreconfHook
, pkgconfig
, dleyna-connector-dbus
, dleyna-core
, gssdp
, gupnp
, gupnp-av
, gupnp-dlna
, libsoup
, makeWrapper
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "dleyna-renderer"; pname = "dleyna-renderer";
name = "${pname}-${version}";
version = "0.6.0"; version = "0.6.0";
src = fetchFromGitHub { src = fetchFromGitHub {
@ -12,8 +24,27 @@ stdenv.mkDerivation rec {
sha256 = "0jy54aq8hgrvzchrvfzqaj4pcn0cfhafl9bv8a9p6j82yjk4pvpp"; sha256 = "0jy54aq8hgrvzchrvfzqaj4pcn0cfhafl9bv8a9p6j82yjk4pvpp";
}; };
nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper ]; patches = [
buildInputs = [ dleyna-core dleyna-connector-dbus gssdp gupnp gupnp-av gupnp-dlna libsoup ]; # fix build with gupnp 1.2
# comes from arch linux packaging https://git.archlinux.org/svntogit/packages.git/tree/trunk/gupnp-1.2.diff?h=packages/dleyna-renderer
./gupnp-1.2.diff
];
nativeBuildInputs = [
autoreconfHook
pkgconfig
makeWrapper
];
buildInputs = [
dleyna-core
dleyna-connector-dbus
gssdp
gupnp
gupnp-av
gupnp-dlna
libsoup
];
preFixup = '' preFixup = ''
wrapProgram "$out/libexec/dleyna-renderer-service" \ wrapProgram "$out/libexec/dleyna-renderer-service" \

View File

@ -0,0 +1,130 @@
configure.ac | 4 ++--
libdleyna/renderer/device.c | 51 +++++++++++++++++++++++++++++++++++++++++++--
libdleyna/renderer/upnp.c | 4 ++--
3 files changed, 53 insertions(+), 6 deletions(-)
diff --git c/configure.ac i/configure.ac
index 271ee92..364659d 100644
--- c/configure.ac
+++ i/configure.ac
@@ -38,8 +38,8 @@ LT_LANG([C])
PKG_PROG_PKG_CONFIG(0.16)
PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.28])
PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.28])
-PKG_CHECK_MODULES([GSSDP], [gssdp-1.0 >= 0.13.2])
-PKG_CHECK_MODULES([GUPNP], [gupnp-1.0 >= 0.20.5])
+PKG_CHECK_MODULES([GSSDP], [gssdp-1.2 >= 1.2.0])
+PKG_CHECK_MODULES([GUPNP], [gupnp-1.2 >= 1.2.0])
PKG_CHECK_MODULES([GUPNPAV], [gupnp-av-1.0 >= 0.11.5])
PKG_CHECK_MODULES([GUPNPDLNA], [gupnp-dlna-2.0 >= 0.9.4])
PKG_CHECK_MODULES([SOUP], [libsoup-2.4 >= 2.28.2])
diff --git c/libdleyna/renderer/device.c i/libdleyna/renderer/device.c
index 7acef89..f6d571e 100644
--- c/libdleyna/renderer/device.c
+++ i/libdleyna/renderer/device.c
@@ -2121,33 +2121,80 @@ exit:
return;
}
+typedef struct
+{
+ GMainLoop *loop;
+ GUPnPServiceIntrospection *introspection;
+ GError **error;
+} GetIntrospectionAsyncData;
+
+static void
+get_introspection_async_cb (GUPnPServiceInfo *info,
+ GUPnPServiceIntrospection *introspection,
+ const GError *error,
+ gpointer user_data)
+{
+ GetIntrospectionAsyncData *data = user_data;
+ data->introspection = introspection;
+ if (data->error)
+ *data->error = g_error_copy (error);
+ g_main_loop_quit (data->loop);
+}
+
+static GUPnPServiceIntrospection *
+_gupnp_service_info_get_introspection (GUPnPServiceInfo *info,
+ GError **error)
+{
+ GetIntrospectionAsyncData data;
+ GMainContext *context;
+
+ context = g_main_context_new ();
+ data.loop = g_main_loop_new (context, FALSE);
+ data.error = error;
+
+ g_main_context_push_thread_default (context);
+
+ gupnp_service_info_get_introspection_async (info,
+ get_introspection_async_cb,
+ &data);
+
+ g_main_loop_run (data.loop);
+
+ g_main_context_pop_thread_default (context);
+
+ g_main_loop_unref (data.loop);
+ g_main_context_unref (context);
+
+ return data.introspection;
+}
+
static gboolean prv_get_av_service_states_values(GUPnPServiceProxy *av_proxy,
GVariant **mpris_tp_speeds,
GPtrArray **upnp_tp_speeds,
double *min_rate,
double *max_rate,
gboolean *can_get_byte_pos)
{
const GUPnPServiceStateVariableInfo *svi;
const GUPnPServiceActionInfo *sai;
GUPnPServiceIntrospection *introspection;
GError *error = NULL;
GVariant *speeds = NULL;
GList *allowed_values;
gpointer weak_ref = NULL;
gboolean device_alive = TRUE;
/* TODO: this weak_ref hack is needed as
gupnp_service_info_get_introspection iterates the main loop.
This can result in our device getting deleted before this
function returns. Ultimately, this code needs to be re-written
to use gupnp_service_info_get_introspection_async but this cannot
really be done until GUPnP provides a way to cancel this function. */
weak_ref = av_proxy;
g_object_add_weak_pointer(G_OBJECT(av_proxy), &weak_ref);
- introspection = gupnp_service_info_get_introspection(
+ introspection = _gupnp_service_info_get_introspection(
GUPNP_SERVICE_INFO(av_proxy),
&error);
@@ -2215,7 +2262,7 @@ static gboolean prv_get_rc_service_states_values(GUPnPServiceProxy *rc_proxy,
weak_ref = rc_proxy;
g_object_add_weak_pointer(G_OBJECT(rc_proxy), &weak_ref);
- introspection = gupnp_service_info_get_introspection(
+ introspection = _gupnp_service_info_get_introspection(
GUPNP_SERVICE_INFO(rc_proxy),
&error);
diff --git c/libdleyna/renderer/upnp.c i/libdleyna/renderer/upnp.c
index 17cbda7..068912b 100644
--- c/libdleyna/renderer/upnp.c
+++ i/libdleyna/renderer/upnp.c
@@ -243,8 +243,8 @@ static void prv_server_unavailable_cb(GUPnPControlPoint *cp,
udn = gupnp_device_info_get_udn((GUPnPDeviceInfo *)proxy);
- ip_address = gupnp_context_get_host_ip(
- gupnp_control_point_get_context(cp));
+ ip_address = gssdp_client_get_host_ip(
+ GSSDP_CLIENT(gupnp_control_point_get_context(cp)));
if (!udn || !ip_address)
goto on_error;

View File

@ -1,8 +1,20 @@
{ stdenv, autoreconfHook, makeWrapper, pkgconfig, fetchFromGitHub, dleyna-core, dleyna-connector-dbus, gssdp, gupnp, gupnp-av, gupnp-dlna, libsoup }: { stdenv
, fetchFromGitHub
, fetchpatch
, autoreconfHook
, makeWrapper
, pkgconfig
, dleyna-core
, dleyna-connector-dbus
, gssdp
, gupnp
, gupnp-av
, gupnp-dlna
, libsoup
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "dleyna-server"; pname = "dleyna-server";
name = "${pname}-${version}";
version = "0.6.0"; version = "0.6.0";
src = fetchFromGitHub { src = fetchFromGitHub {
@ -12,8 +24,30 @@ stdenv.mkDerivation rec {
sha256 = "13a2i6ms27s46yxdvlh2zm7pim7jmr5cylnygzbliz53g3gxxl3j"; sha256 = "13a2i6ms27s46yxdvlh2zm7pim7jmr5cylnygzbliz53g3gxxl3j";
}; };
nativeBuildInputs = [ autoreconfHook pkgconfig makeWrapper ]; patches = [
buildInputs = [ dleyna-core dleyna-connector-dbus gssdp gupnp gupnp-av gupnp-dlna libsoup ]; # fix build with gupnp 1.2
# https://github.com/intel/dleyna-server/pull/161
(fetchpatch {
url = https://github.com/intel/dleyna-server/commit/96c01c88363d6e5e9b7519bc4e8b5d86cf783e1f.patch;
sha256 = "0p8fn331x2whvn6skxqvfzilx0m0yx2q5mm2wh2625l396m3fzmm";
})
];
nativeBuildInputs = [
autoreconfHook
pkgconfig
makeWrapper
];
buildInputs = [
dleyna-core
dleyna-connector-dbus
gssdp
gupnp
gupnp-av
gupnp-dlna
libsoup
];
preFixup = '' preFixup = ''
wrapProgram "$out/libexec/dleyna-server-service" \ wrapProgram "$out/libexec/dleyna-server-service" \

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "double-conversion-${version}"; name = "double-conversion-${version}";
version = "3.1.3"; version = "3.1.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "google"; owner = "google";
repo = "double-conversion"; repo = "double-conversion";
rev = "v${version}"; rev = "v${version}";
sha256 = "082w15xq8f4c422a71phvcahgc8vmqrig97av9g9628q5n2ybbgg"; sha256 = "13xwcqk2c0q8c1siw566clxcpvp0xrxvb72mra42wa3nvq9wlsv6";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View File

@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
# patch taken from gtk_doc # patch taken from gtk_doc
./respect-xml-catalog-files-var.patch ./respect-xml-catalog-files-var.patch
./use-flatpak-from-path.patch ./use-flatpak-from-path.patch
./unset-env-vars.patch
]; ];
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -0,0 +1,10 @@
--- a/common/flatpak-run.c
+++ b/common/flatpak-run.c
@@ -1192,6 +1192,7 @@ static const ExportData default_exports[] = {
{"PERLLIB", NULL},
{"PERL5LIB", NULL},
{"XCURSOR_PATH", NULL},
+ {"GDK_PIXBUF_MODULE_FILE", NULL},
};
static const ExportData no_ld_so_cache_exports[] = {

View File

@ -214,10 +214,6 @@ stdenv.mkDerivation ({
// lib.optionalAttrs (stdenv.hostPlatform != stdenv.buildPlatform) { // lib.optionalAttrs (stdenv.hostPlatform != stdenv.buildPlatform) {
preInstall = null; # clobber the native hook preInstall = null; # clobber the native hook
dontStrip = true;
separateDebugInfo = false; # this is currently broken for crossDrv
# To avoid a dependency on the build system 'bash'. # To avoid a dependency on the build system 'bash'.
preFixup = '' preFixup = ''
rm -f $bin/bin/{ldd,tzselect,catchsegv,xtrace} rm -f $bin/bin/{ldd,tzselect,catchsegv,xtrace}

View File

@ -0,0 +1,73 @@
{ stdenv
, fetchurl
, fetchpatch
, meson
, ninja
, pkgconfig
, glib
, python3
, sqlite
, gdk_pixbuf
, gnome3
, gobject-introspection
}:
stdenv.mkDerivation rec {
pname = "gom";
version = "0.3.3";
outputs = [ "out" "py" ];
src = fetchurl {
url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1n1n226dyb3q98216aah87in9hhjcwsbpspsdqqfswz2bx5y6mxc";
};
patches = [
# Needed to apply the next patch
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/gom/commit/e8b7c314ce61d459132cf03c9e455d2a01fdc6ea.patch";
sha256 = "0d7g3nm5lrfhfx9ly8qgf5bfp12kvr7m1xmlgin2q8vqpn0r2ggp";
})
# https://gitlab.gnome.org/GNOME/gom/merge_requests/3
(fetchpatch {
url = "https://gitlab.gnome.org/worldofpeace/gom/commit/b621c15600b1c32826c9878565eb2398a50907f2.patch";
sha256 = "1hqck9bb7sxn4akisnn26sbddlphjsavgksick5k4h3rsc0xwx1v";
})
./longer-stress-timeout.patch
];
nativeBuildInputs = [
gobject-introspection
meson
ninja
pkgconfig
];
buildInputs = [
gdk_pixbuf
glib
sqlite
python3.pkgs.pygobject3
];
mesonFlags = [
"-Dpygobject-override-dir=${placeholder "py"}/${python3.sitePackages}/gi/overrides"
];
doCheck = true;
passthru = {
updateScript = gnome3.updateScript {
packageName = pname;
};
};
meta = with stdenv.lib; {
description = "A GObject to SQLite object mapper";
homepage = https://wiki.gnome.org/Projects/Gom;
license = licenses.lgpl21Plus;
platforms = platforms.linux;
maintainers = gnome3.maintainers;
};
}

View File

@ -0,0 +1,13 @@
diff --git a/tests/meson.build b/tests/meson.build
index 1df4884..d7a6f5d 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -25,7 +25,7 @@ test('test-gom-find', test_find)
test_stress = executable('test-gom-stress', 'test-gom-stress.c',
dependencies: [libgom_dep])
-test('test-gom-stress', test_stress, timeout: 300)
+test('test-gom-stress', test_stress, timeout: 500)
test_transform = executable('test-gom-transform', 'test-gom-transform.c',
c_args: '-DIMAGE="@0@/gnome.png"'.format(meson.current_source_dir()),

View File

@ -1,26 +1,62 @@
{ stdenv, fetchurl, pkgconfig, gobject-introspection, vala, gtk-doc, docbook_xsl, docbook_xml_dtd_412, libsoup, gtk3, glib }: { stdenv
, fetchurl
, meson
, ninja
, pkgconfig
, gobject-introspection
, vala
, gtk-doc
, docbook_xsl
, docbook_xml_dtd_412
, libsoup
, gtk3
, glib
, gnome3
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gssdp-${version}"; pname = "gssdp";
version = "1.0.2"; version = "1.2.0";
outputs = [ "out" "bin" "dev" "devdoc" ]; outputs = [ "out" "bin" "dev" "devdoc" ];
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/gssdp/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; url = "mirror://gnome/sources/gssdp/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1p1m2m3ndzr2whipqw4vfb6s6ia0g7rnzzc4pnq8b8g1qw4prqd1"; sha256 = "1l80znxzzpb2fmsrjf3hygi9gcxx5r405qrk5430nbsjgxafzjr2";
}; };
nativeBuildInputs = [ pkgconfig gobject-introspection vala gtk-doc docbook_xsl docbook_xml_dtd_412 ]; nativeBuildInputs = [
buildInputs = [ libsoup gtk3 ]; meson
propagatedBuildInputs = [ glib ]; ninja
pkgconfig
gobject-introspection
vala
gtk-doc
docbook_xsl
docbook_xml_dtd_412
];
configureFlags = [ buildInputs = [
"--enable-gtk-doc" libsoup
gtk3
];
propagatedBuildInputs = [
glib
];
mesonFlags = [
"-Dgtk_doc=true"
]; ];
doCheck = true; doCheck = true;
passthru = {
updateScript = gnome3.updateScript {
packageName = pname;
};
};
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "GObject-based API for handling resource discovery and announcement over SSDP"; description = "GObject-based API for handling resource discovery and announcement over SSDP";
homepage = http://www.gupnp.org/; homepage = http://www.gupnp.org/;

View File

@ -1,18 +1,40 @@
{ stdenv, fetchurl, pkgconfig, gobject-introspection, vala, gtk-doc, docbook_xsl, docbook_xml_dtd_412, gupnp, glib, libxml2 }: { stdenv
, fetchurl
, pkgconfig
, gobject-introspection
, vala
, gtk-doc
, docbook_xsl
, docbook_xml_dtd_412
, glib
, libxml2
, gnome3
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gupnp-av-${version}"; pname = "gupnp-av";
version = "0.12.11"; version = "0.12.11";
outputs = [ "out" "dev" "devdoc" ]; outputs = [ "out" "dev" "devdoc" ];
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/gupnp-av/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1p3grslwqm9bc8rmpn4l48d7v9s84nina4r9xbd932dbj8acz7b8"; sha256 = "1p3grslwqm9bc8rmpn4l48d7v9s84nina4r9xbd932dbj8acz7b8";
}; };
nativeBuildInputs = [ pkgconfig gobject-introspection vala gtk-doc docbook_xsl docbook_xml_dtd_412 ]; nativeBuildInputs = [
buildInputs = [ gupnp glib libxml2 ]; pkgconfig
gobject-introspection
vala
gtk-doc
docbook_xsl
docbook_xml_dtd_412
];
buildInputs = [
glib
libxml2
];
configureFlags = [ configureFlags = [
"--enable-gtk-doc" "--enable-gtk-doc"
@ -20,6 +42,12 @@ stdenv.mkDerivation rec {
doCheck = true; doCheck = true;
passthru = {
updateScript = gnome3.updateScript {
packageName = pname;
};
};
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://gupnp.org/; homepage = http://gupnp.org/;
description = "A collection of helpers for building AV (audio/video) applications using GUPnP"; description = "A collection of helpers for building AV (audio/video) applications using GUPnP";

View File

@ -1,18 +1,40 @@
{ stdenv, fetchurl, pkgconfig, gobject-introspection, vala, gtk-doc, docbook_xsl, docbook_xml_dtd_412, gupnp, gst_all_1 }: { stdenv
, fetchurl
, pkgconfig
, gobject-introspection
, vala
, gtk-doc
, docbook_xsl
, docbook_xml_dtd_412
, libxml2
, gst_all_1
, gnome3
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gupnp-dlna-${version}"; pname = "gupnp-dlna";
version = "0.10.5"; version = "0.10.5";
outputs = [ "out" "dev" "devdoc" ]; outputs = [ "out" "dev" "devdoc" ];
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/gupnp-dlna/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "0spzd2saax7w776p5laixdam6d7smyynr9qszhbmq7f14y13cghj"; sha256 = "0spzd2saax7w776p5laixdam6d7smyynr9qszhbmq7f14y13cghj";
}; };
nativeBuildInputs = [ pkgconfig gobject-introspection vala gtk-doc docbook_xsl docbook_xml_dtd_412 ]; nativeBuildInputs = [
buildInputs = [ gupnp gst_all_1.gst-plugins-base ]; pkgconfig
gobject-introspection
vala
gtk-doc
docbook_xsl
docbook_xml_dtd_412
];
buildInputs = [
libxml2
gst_all_1.gst-plugins-base
];
configureFlags = [ configureFlags = [
"--enable-gtk-doc" "--enable-gtk-doc"
@ -25,6 +47,12 @@ stdenv.mkDerivation rec {
patchShebangs tests/test-discoverer.sh.in patchShebangs tests/test-discoverer.sh.in
''; '';
passthru = {
updateScript = gnome3.updateScript {
packageName = pname;
};
};
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Projects/GUPnP/; homepage = https://wiki.gnome.org/Projects/GUPnP/;
description = "Library to ease DLNA-related bits for applications using GUPnP"; description = "Library to ease DLNA-related bits for applications using GUPnP";

View File

@ -1,18 +1,51 @@
{ stdenv, fetchurl, pkgconfig, gettext, gobject-introspection, gtk-doc, docbook_xsl, docbook_xml_dtd_412, glib, gupnp }: { stdenv
, fetchurl
, fetchpatch
, autoreconfHook
, pkgconfig
, gettext
, gobject-introspection
, gtk-doc
, docbook_xsl
, docbook_xml_dtd_412
, glib
, gupnp
, gnome3
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gupnp-igd-${version}"; pname = "gupnp-igd";
version = "0.2.5"; version = "0.2.5";
outputs = [ "out" "dev" "devdoc" ]; outputs = [ "out" "dev" "devdoc" ];
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/gupnp-igd/${stdenv.lib.versions.majorMinor version}/${name}.tar.xz"; url = "mirror://gnome/sources/${pname}/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "081v1vhkbz3wayv49xfiskvrmvnpx93k25am2wnarg5cifiiljlb"; sha256 = "081v1vhkbz3wayv49xfiskvrmvnpx93k25am2wnarg5cifiiljlb";
}; };
nativeBuildInputs = [ pkgconfig gettext gobject-introspection gtk-doc docbook_xsl docbook_xml_dtd_412 ]; patches = [
propagatedBuildInputs = [ glib gupnp ]; # Add gupnp-1.2 compatibility
(fetchpatch {
url = https://gitlab.gnome.org/GNOME/gupnp-igd/commit/63531558a16ac2334a59f627b2fca5576dcfbb2e.patch;
sha256 = "0s8lkyy9fnnnnkkqwbk6gxb7795bb1kl1swk5ldjnlrzhfcy1ab2";
})
];
nativeBuildInputs = [
pkgconfig
autoreconfHook
gettext
gobject-introspection
gtk-doc
docbook_xsl
docbook_xml_dtd_412
];
propagatedBuildInputs = [
glib
gupnp
];
configureFlags = [ configureFlags = [
"--enable-gtk-doc" "--enable-gtk-doc"
@ -20,6 +53,12 @@ stdenv.mkDerivation rec {
doCheck = true; doCheck = true;
passthru = {
updateScript = gnome3.updateScript {
packageName = pname;
};
};
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Library to handle UPnP IGD port mapping"; description = "Library to handle UPnP IGD port mapping";
homepage = http://www.gupnp.org/; homepage = http://www.gupnp.org/;

View File

@ -1,14 +1,32 @@
{ stdenv, fetchurl, pkgconfig, gobject-introspection, vala, gtk-doc, docbook_xsl, docbook_xml_dtd_412, docbook_xml_dtd_44, glib, gssdp, libsoup, libxml2, libuuid }: { stdenv
, fetchurl
, fetchpatch
, meson
, ninja
, pkgconfig
, gobject-introspection
, vala
, gtk-doc
, docbook_xsl
, docbook_xml_dtd_412
, docbook_xml_dtd_44
, glib
, gssdp
, libsoup
, libxml2
, libuuid
, gnome3
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gupnp-${version}"; pname = "gupnp";
version = "1.0.3"; version = "1.2.0";
outputs = [ "out" "dev" "devdoc" ]; outputs = [ "out" "dev" "devdoc" ];
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/gupnp/${stdenv.lib.versions.majorMinor version}/gupnp-${version}.tar.xz"; url = "mirror://gnome/sources/gupnp/${stdenv.lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "1fyb6yn75vf2y1b8nbc1df572swzr74yiwy3v3g5xn36wlp1cjvr"; sha256 = "0911lv1bivsyv9wwdxm0i1w4r89j0vyyqp200gsfdnzk6v1a4x7x";
}; };
patches = [ patches = [
@ -19,17 +37,54 @@ stdenv.mkDerivation rec {
# at least until Requires.internal or something is implemented # at least until Requires.internal or something is implemented
# https://gitlab.freedesktop.org/pkg-config/pkg-config/issues/7 # https://gitlab.freedesktop.org/pkg-config/pkg-config/issues/7
./fix-requires.patch ./fix-requires.patch
# fix deadlock in gupnp-igd tests
(fetchpatch {
url = https://gitlab.gnome.org/GNOME/gupnp/commit/d208562657f62b34759896ca9e974bd582d1f963.patch;
sha256 = "02kzsb4glxhgb1npf6qqgafiki0ws75sly5h470431mihc6sgp4f";
})
# fix breakage in gupnp-igd tests
(fetchpatch {
url = https://gitlab.gnome.org/GNOME/gupnp/commit/0648399acb989473119fe59d0b9f65c923e69483.patch;
sha256 = "0ba0rngk3a4n3z4dmq06wzgh0n3q9la1nr25qdxqbwlszmxfxpjf";
})
]; ];
nativeBuildInputs = [ pkgconfig gobject-introspection vala gtk-doc docbook_xsl docbook_xml_dtd_412 docbook_xml_dtd_44 ]; nativeBuildInputs = [
propagatedBuildInputs = [ glib gssdp libsoup libxml2 libuuid ]; meson
ninja
pkgconfig
gobject-introspection
vala
gtk-doc
docbook_xsl
docbook_xml_dtd_412
docbook_xml_dtd_44
];
configureFlags = [ buildInputs = [
"--enable-gtk-doc" libuuid
];
propagatedBuildInputs = [
glib
gssdp
libsoup
libxml2
];
mesonFlags = [
"-Dgtk_doc=true"
]; ];
doCheck = true; doCheck = true;
passthru = {
updateScript = gnome3.updateScript {
packageName = pname;
};
};
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://www.gupnp.org/; homepage = http://www.gupnp.org/;
description = "An implementation of the UPnP specification"; description = "An implementation of the UPnP specification";

View File

@ -1,9 +1,26 @@
--- a/gupnp-1.0.pc.in --- a/libgupnp/meson.build
+++ b/gupnp-1.0.pc.in +++ b/libgupnp/meson.build
@@ -8,4 +8,5 @@ @@ -110,6 +110,7 @@ pkg.generate(
Version: @VERSION@ libraries : libgupnp,
Libs: -L${libdir} -lgupnp-1.0 subdirs: 'gupnp-1.2',
Cflags: -I${includedir}/gupnp-1.0 name : 'gupnp-1.2',
-Requires.private: gssdp-1.0 libxml-2.0 libsoup-2.4 @UUID_LIBS@ + requires: requires,
+Requires: glib-2.0 gobject-2.0 gssdp-1.0 libxml-2.0 libsoup-2.4 description : 'GObject-based UPnP library',
+Requires.private: @UUID_LIBS@ version : meson.project_version(),
filebase : 'gupnp-1.2'
--- a/meson.build
+++ a/meson.build
@@ -18,6 +18,13 @@ add_global_arguments('-DHAVE_CONFIG_H=1', language : 'c')
guul = subproject('guul', default_options : ['default_library=static'])
+requires = [
+ dependency('glib-2.0', version : '>= 2.44'),
+ dependency('gssdp-1.2', version : '>= 1.1'),
+ dependency('libsoup-2.4', version : '>= 2.48.0'),
+ dependency('libxml-2.0')
+]
+
dependencies = [
dependency('glib-2.0', version : '>= 2.44'),
dependency('gio-2.0', version : '>= 2.44'),

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, pkgconfig, autoreconfHook, makeWrapper { stdenv, fetchurl, pkgconfig, autoreconfHook, makeWrapper
, perlPackages, libxml2 }: , perlPackages, libxml2, libiconv }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "hivex-${version}"; name = "hivex-${version}";
@ -15,12 +15,17 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ pkgconfig ]; nativeBuildInputs = [ pkgconfig ];
buildInputs = [ buildInputs = [
autoreconfHook makeWrapper libxml2 autoreconfHook makeWrapper libxml2
] ++ (with perlPackages; [ perl IOStringy ]); ]
++ (with perlPackages; [ perl IOStringy ])
++ stdenv.lib.optionals stdenv.isDarwin [ libiconv ];
postInstall = '' postInstall = ''
for bin in $out/bin/*; do wrapProgram $out/bin/hivexregedit \
wrapProgram "$bin" --prefix "PATH" : "$out/bin" --set PERL5LIB "$out/${perlPackages.perl.libPrefix}" \
done --prefix "PATH" : "$out/bin"
wrapProgram $out/bin/hivexml \
--prefix "PATH" : "$out/bin"
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {
@ -28,6 +33,6 @@ stdenv.mkDerivation rec {
license = licenses.lgpl2; license = licenses.lgpl2;
homepage = https://github.com/libguestfs/hivex; homepage = https://github.com/libguestfs/hivex;
maintainers = with maintainers; [offline]; maintainers = with maintainers; [offline];
platforms = platforms.linux; platforms = platforms.linux ++ platforms.darwin;
}; };
} }

View File

@ -1,4 +1,4 @@
{ fetchurl, stdenv, gettext, pth, libgpgerror }: { fetchurl, stdenv, gettext, pth, libgpgerror, buildPackages }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libassuan"; pname = "libassuan";
@ -12,7 +12,12 @@ stdenv.mkDerivation rec {
outputs = [ "out" "dev" "info" ]; outputs = [ "out" "dev" "info" ];
outputBin = "dev"; # libassuan-config outputBin = "dev"; # libassuan-config
buildInputs = [ libgpgerror pth gettext]; depsBuildBuild = [ buildPackages.stdenv.cc ];
buildInputs = [ pth gettext ];
configureFlags = [
"--with-libgpg-error-prefix=${libgpgerror.dev}"
];
doCheck = true; doCheck = true;

View File

@ -3,15 +3,15 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libimobiledevice"; pname = "libimobiledevice";
version = "2018-07-24"; version = "2019-04-04";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = pname; owner = pname;
repo = pname; repo = pname;
rev = "d7a2e04d2e7880c56116fd35489a7f98755501b7"; rev = "eea4f1be9107c8ab621fd71460e47d0d38e55d71";
sha256 = "0cj0j10lmfr28c7nh79n2mcmy31xx50g93h0bqs0l7y76ph4dqkc"; sha256 = "0wh6z5f5znlqs0grh7c8jj1s411azgyy45klmql5kj3p8qqybqrs";
}; };
outputs = [ "out" "dev" ]; outputs = [ "out" "dev" ];
@ -56,6 +56,6 @@ stdenv.mkDerivation rec {
''; '';
license = licenses.lgpl21Plus; license = licenses.lgpl21Plus;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ infinisil ];
}; };
} }

View File

@ -5,15 +5,15 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libplist"; pname = "libplist";
version = "2019-01-20"; version = "2019-04-04";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "libimobiledevice"; owner = "libimobiledevice";
repo = pname; repo = pname;
rev = "bec850fe399639f3b8582a39386216970dea15ed"; rev = "42bb64ba966082b440cb68cbdadf317f44710017";
sha256 = "197yw8xz8x2xld8b6975scgnl30j4ibm9llmzljyqngs0zsdwnin"; sha256 = "19yw80yblq29i2jx9yb7bx0lfychy9dncri3fk4as35kq5bf26i8";
}; };
outputs = ["bin" "dev" "out" "py"]; outputs = ["bin" "dev" "out" "py"];
@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
description = "A library to handle Apple Property List format in binary or XML"; description = "A library to handle Apple Property List format in binary or XML";
homepage = https://github.com/libimobiledevice/libplist; homepage = https://github.com/libimobiledevice/libplist;
license = licenses.lgpl21Plus; license = licenses.lgpl21Plus;
maintainers = [ ]; maintainers = with maintainers; [ infinisil ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -2,15 +2,15 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "libusbmuxd"; pname = "libusbmuxd";
version = "2019-01-18"; version = "2019-03-23";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "libimobiledevice"; owner = "libimobiledevice";
repo = pname; repo = pname;
rev = "c75605d862cd1c312494f6c715246febc26b2e05"; rev = "873252dc8b4e469c7dc692064ac616104fca5f65";
sha256 = "0467a045k4znmaz61i7a2s7yywj67q830ja6zn7z39k5pqcl2z4p"; sha256 = "0qx3q0n1f2ajfm3vnairikayzln6iyb2y0i7sqfl8mj45ahl6wyj";
}; };
nativeBuildInputs = [ autoreconfHook pkgconfig ]; nativeBuildInputs = [ autoreconfHook pkgconfig ];
@ -21,6 +21,6 @@ stdenv.mkDerivation rec {
homepage = https://github.com/libimobiledevice/libusbmuxd; homepage = https://github.com/libimobiledevice/libusbmuxd;
license = licenses.lgpl21Plus; license = licenses.lgpl21Plus;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ ]; maintainers = with maintainers; [ infinisil ];
}; };
} }

View File

@ -2,6 +2,7 @@
, intltool, spidermonkey_52 , gobject-introspection, libxslt, docbook_xsl, dbus , intltool, spidermonkey_52 , gobject-introspection, libxslt, docbook_xsl, dbus
, docbook_xml_dtd_412, gtk-doc, coreutils , docbook_xml_dtd_412, gtk-doc, coreutils
, useSystemd ? stdenv.isLinux, systemd , useSystemd ? stdenv.isLinux, systemd
, withGnome ? true
, doCheck ? stdenv.isLinux , doCheck ? stdenv.isLinux
}: }:
@ -42,11 +43,12 @@ stdenv.mkDerivation rec {
outputs = [ "bin" "dev" "out" ]; # small man pages in $bin outputs = [ "bin" "dev" "out" ]; # small man pages in $bin
nativeBuildInputs = nativeBuildInputs =
[ gtk-doc pkgconfig autoreconfHook intltool gobject-introspection perl ] [ glib gtk-doc pkgconfig intltool perl ]
++ [ libxslt docbook_xsl docbook_xml_dtd_412 ]; # man pages ++ [ libxslt docbook_xsl docbook_xml_dtd_412 ]; # man pages
buildInputs = buildInputs =
[ glib expat pam spidermonkey_52 gobject-introspection ] [ glib expat pam spidermonkey_52 ]
++ stdenv.lib.optional useSystemd systemd; ++ stdenv.lib.optional useSystemd systemd
++ stdenv.lib.optional withGnome gobject-introspection;
NIX_CFLAGS_COMPILE = " -Wno-deprecated-declarations "; # for polkit 0.114 and glib 2.56 NIX_CFLAGS_COMPILE = " -Wno-deprecated-declarations "; # for polkit 0.114 and glib 2.56
@ -73,7 +75,7 @@ stdenv.mkDerivation rec {
"--with-systemdsystemunitdir=$(out)/etc/systemd/system" "--with-systemdsystemunitdir=$(out)/etc/systemd/system"
"--with-polkitd-user=polkituser" #TODO? <nixos> config.ids.uids.polkituser "--with-polkitd-user=polkituser" #TODO? <nixos> config.ids.uids.polkituser
"--with-os-type=NixOS" # not recognized but prevents impurities on non-NixOS "--with-os-type=NixOS" # not recognized but prevents impurities on non-NixOS
"--enable-introspection" (if withGnome then "--enable-introspection" else "--disable-introspection")
] ++ stdenv.lib.optional (!doCheck) "--disable-test"; ] ++ stdenv.lib.optional (!doCheck) "--disable-test";
makeFlags = "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0 INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0"; makeFlags = "INTROSPECTION_GIRDIR=$(out)/share/gir-1.0 INTROSPECTION_TYPELIBDIR=$(out)/lib/girepository-1.0";

View File

@ -1,14 +1,14 @@
{ stdenv, fetchFromGitHub, qmake4Hook , qt4, libX11, libXext }: { stdenv, fetchFromGitHub, qmake4Hook , qt4, libX11, libXext }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "qtstyleplugin-kvantum-qt4-${version}"; pname = "qtstyleplugin-kvantum-qt4";
version = "0.10.4"; version = "0.11.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tsujan"; owner = "tsujan";
repo = "Kvantum"; repo = "Kvantum";
rev = "0527bb03f2252269fd382e11181a34ca72c96b4b"; rev = "V${version}";
sha256 = "0ky44s1fgqxraywagx1mv07yz76ppgiz3prq447db78wkwqg2d8p"; sha256 = "0aqlv7mj7r9vjm6pvb8pv3cyx35lgz8rjjas3k8wfdr3sqyyy25g";
}; };
nativeBuildInputs = [ qmake4Hook ]; nativeBuildInputs = [ qmake4Hook ];

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "qtstyleplugin-kvantum"; pname = "qtstyleplugin-kvantum";
version = "0.10.9"; version = "0.11.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "tsujan"; owner = "tsujan";
repo = "Kvantum"; repo = "Kvantum";
rev = "V${version}"; rev = "V${version}";
sha256 = "1zpq6wsl57kfx0jf0rkxf15ic22ihazj03i3kfiqb07vcrs2cka9"; sha256 = "0aqlv7mj7r9vjm6pvb8pv3cyx35lgz8rjjas3k8wfdr3sqyyy25g";
}; };
nativeBuildInputs = [ qmake qttools ]; nativeBuildInputs = [ qmake qttools ];

View File

@ -1,2 +1,3 @@
source 'https://rubygems.org' source 'https://rubygems.org' do
gem 'cocoapods' gem 'cocoapods'
end

View File

@ -0,0 +1,5 @@
source 'https://rubygems.org' do
# We need to specify a version including prerelease to pick up prereleases.
# This should pick up all future releases / prereleases.
gem 'cocoapods', '>=1.7.0.beta.1'
end

View File

@ -0,0 +1,76 @@
GEM
remote: https://rubygems.org/
specs:
CFPropertyList (3.0.0)
activesupport (4.2.11.1)
i18n (~> 0.7)
minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1)
atomos (0.1.3)
claide (1.0.2)
cocoapods (1.7.0.beta.3)
activesupport (>= 4.0.2, < 5)
claide (>= 1.0.2, < 2.0)
cocoapods-core (= 1.7.0.beta.3)
cocoapods-deintegrate (>= 1.0.3, < 2.0)
cocoapods-downloader (>= 1.2.2, < 2.0)
cocoapods-plugins (>= 1.0.0, < 2.0)
cocoapods-search (>= 1.0.0, < 2.0)
cocoapods-stats (>= 1.0.0, < 2.0)
cocoapods-trunk (>= 1.3.1, < 2.0)
cocoapods-try (>= 1.1.0, < 2.0)
colored2 (~> 3.1)
escape (~> 0.0.4)
fourflusher (>= 2.2.0, < 3.0)
gh_inspector (~> 1.0)
molinillo (~> 0.6.6)
nap (~> 1.0)
ruby-macho (~> 1.4)
xcodeproj (>= 1.8.2, < 2.0)
cocoapods-core (1.7.0.beta.3)
activesupport (>= 4.0.2, < 6)
fuzzy_match (~> 2.0.4)
nap (~> 1.0)
cocoapods-deintegrate (1.0.4)
cocoapods-downloader (1.2.2)
cocoapods-plugins (1.0.0)
nap
cocoapods-search (1.0.0)
cocoapods-stats (1.1.0)
cocoapods-trunk (1.3.1)
nap (>= 0.8, < 2.0)
netrc (~> 0.11)
cocoapods-try (1.1.0)
colored2 (3.1.2)
concurrent-ruby (1.1.5)
escape (0.0.4)
fourflusher (2.2.0)
fuzzy_match (2.0.4)
gh_inspector (1.1.3)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
minitest (5.11.3)
molinillo (0.6.6)
nanaimo (0.2.6)
nap (1.1.0)
netrc (0.11.0)
ruby-macho (1.4.0)
thread_safe (0.3.6)
tzinfo (1.2.5)
thread_safe (~> 0.1)
xcodeproj (1.8.2)
CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0)
colored2 (~> 3.1)
nanaimo (~> 0.2.6)
PLATFORMS
ruby
DEPENDENCIES
cocoapods (>= 1.7.0.beta.1)!
BUNDLED WITH
1.17.2

View File

@ -2,7 +2,7 @@ GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
CFPropertyList (3.0.0) CFPropertyList (3.0.0)
activesupport (4.2.11) activesupport (4.2.11.1)
i18n (~> 0.7) i18n (~> 0.7)
minitest (~> 5.1) minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4) thread_safe (~> 0.3, >= 0.3.4)
@ -32,7 +32,7 @@ GEM
activesupport (>= 4.0.2, < 6) activesupport (>= 4.0.2, < 6)
fuzzy_match (~> 2.0.4) fuzzy_match (~> 2.0.4)
nap (~> 1.0) nap (~> 1.0)
cocoapods-deintegrate (1.0.3) cocoapods-deintegrate (1.0.4)
cocoapods-downloader (1.2.2) cocoapods-downloader (1.2.2)
cocoapods-plugins (1.0.0) cocoapods-plugins (1.0.0)
nap nap
@ -43,7 +43,7 @@ GEM
netrc (~> 0.11) netrc (~> 0.11)
cocoapods-try (1.1.0) cocoapods-try (1.1.0)
colored2 (3.1.2) colored2 (3.1.2)
concurrent-ruby (1.1.4) concurrent-ruby (1.1.5)
escape (0.0.4) escape (0.0.4)
fourflusher (2.2.0) fourflusher (2.2.0)
fuzzy_match (2.0.4) fuzzy_match (2.0.4)
@ -59,7 +59,7 @@ GEM
thread_safe (0.3.6) thread_safe (0.3.6)
tzinfo (1.2.5) tzinfo (1.2.5)
thread_safe (~> 0.1) thread_safe (~> 0.1)
xcodeproj (1.8.1) xcodeproj (1.8.2)
CFPropertyList (>= 2.3.3, < 4.0) CFPropertyList (>= 2.3.3, < 4.0)
atomos (~> 0.1.3) atomos (~> 0.1.3)
claide (>= 1.0.2, < 2.0) claide (>= 1.0.2, < 2.0)
@ -70,7 +70,7 @@ PLATFORMS
ruby ruby
DEPENDENCIES DEPENDENCIES
cocoapods cocoapods!
BUNDLED WITH BUNDLED WITH
1.17.2 1.17.2

View File

@ -1,9 +1,13 @@
{ lib, bundlerEnv, ruby }: { lib, bundlerApp, ruby
, beta ? false }:
bundlerEnv rec { bundlerApp rec {
inherit ruby; inherit ruby;
pname = "cocoapods"; pname = "cocoapods";
gemdir = ./.; gemfile = if beta then ./Gemfile-beta else ./Gemfile;
lockfile = if beta then ./Gemfile-beta.lock else ./Gemfile.lock;
gemset = if beta then ./gemset-beta.nix else ./gemset.nix;
exes = [ "pod" ];
meta = with lib; { meta = with lib; {
description = "CocoaPods manages dependencies for your Xcode projects."; description = "CocoaPods manages dependencies for your Xcode projects.";
@ -12,6 +16,7 @@ bundlerEnv rec {
platforms = platforms.darwin; platforms = platforms.darwin;
maintainers = with maintainers; [ maintainers = with maintainers; [
peterromfeldhk peterromfeldhk
lilyball
]; ];
}; };
} }

View File

@ -0,0 +1,300 @@
{
activesupport = {
dependencies = ["i18n" "minitest" "thread_safe" "tzinfo"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1vbq7a805bfvyik2q3kl9s3r418f5qzvysqbz2cwy4hr7m2q4ir6";
type = "gem";
};
version = "4.2.11.1";
};
atomos = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "17vq6sjyswr5jfzwdccw748kgph6bdw30bakwnn6p8sl4hpv4hvx";
type = "gem";
};
version = "0.1.3";
};
CFPropertyList = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0ykjag3k5msz3sf1j91rb55da2xh596y06m3a4yl79fiy2id0w9z";
type = "gem";
};
version = "3.0.0";
};
claide = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0az54rp691hc42yl1xyix2cxv58byhaaf4gxbpghvvq29l476rzc";
type = "gem";
};
version = "1.0.2";
};
cocoapods = {
dependencies = ["activesupport" "claide" "cocoapods-core" "cocoapods-deintegrate" "cocoapods-downloader" "cocoapods-plugins" "cocoapods-search" "cocoapods-stats" "cocoapods-trunk" "cocoapods-try" "colored2" "escape" "fourflusher" "gh_inspector" "molinillo" "nap" "ruby-macho" "xcodeproj"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "03xnnj5di75wqsd1c9ca9gfnzc4lqr8k2cx5gca5979b7kxb2x1z";
type = "gem";
};
version = "1.7.0.beta.3";
};
cocoapods-core = {
dependencies = ["activesupport" "fuzzy_match" "nap"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1wwnjdcwj4nc1cjl9pf0dlh83x2s6x0v491fpcmw3342vbs0v4sq";
type = "gem";
};
version = "1.7.0.beta.3";
};
cocoapods-deintegrate = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0bf524f1za92i6rlr4cr6jm3c4vfjszsdc9lsr6wk5125c76ipzn";
type = "gem";
};
version = "1.0.4";
};
cocoapods-downloader = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "09fd4zaqkz8vz3djplacngcs4n0j6j956wgq43s1y6bwl0zyjmd3";
type = "gem";
};
version = "1.2.2";
};
cocoapods-plugins = {
dependencies = ["nap"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "16na82sfyc8801qs1n22nwq486s4j7yj6rj7fcp8cbxmj371fpbj";
type = "gem";
};
version = "1.0.0";
};
cocoapods-search = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "02wmy5rbjk29c65zn62bffxv30qs11slql23qx65snkm0vd93mn6";
type = "gem";
};
version = "1.0.0";
};
cocoapods-stats = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1xhdh5v94p6l612rwrk290nd2hdfx8lbaqfbkmj34md218kilqww";
type = "gem";
};
version = "1.1.0";
};
cocoapods-trunk = {
dependencies = ["nap" "netrc"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1plssgabdv6hcaq1c3gf43kf1d2prx883q8lzdr6chi5byzzs3yl";
type = "gem";
};
version = "1.3.1";
};
cocoapods-try = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1gf2zjmcjhh9psq15yfy82wz5jnlihf5bcw79f8hlv4cnqyspncj";
type = "gem";
};
version = "1.1.0";
};
colored2 = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0jlbqa9q4mvrm73aw9mxh23ygzbjiqwisl32d8szfb5fxvbjng5i";
type = "gem";
};
version = "3.1.2";
};
concurrent-ruby = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1x07r23s7836cpp5z9yrlbpljcxpax14yw4fy4bnp6crhr6x24an";
type = "gem";
};
version = "1.1.5";
};
escape = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0sa1xkfc9jvkwyw1jbz3jhkq0ms1zrvswi6mmfiwcisg5fp497z4";
type = "gem";
};
version = "0.0.4";
};
fourflusher = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1d2ksz077likjv8dcxy1rnqcjallbfa7yk2wvix3228gq7a4jkq3";
type = "gem";
};
version = "2.2.0";
};
fuzzy_match = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "19gw1ifsgfrv7xdi6n61658vffgm1867f4xdqfswb2b5h6alzpmm";
type = "gem";
};
version = "2.0.4";
};
gh_inspector = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0f8r9byajj3bi2c7c5sqrc7m0zrv3nblfcd4782lw5l73cbsgk04";
type = "gem";
};
version = "1.1.3";
};
i18n = {
dependencies = ["concurrent-ruby"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "038qvz7kd3cfxk8bvagqhakx68pfbnmghpdkx7573wbf0maqp9a3";
type = "gem";
};
version = "0.9.5";
};
minitest = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0icglrhghgwdlnzzp4jf76b0mbc71s80njn5afyfjn4wqji8mqbq";
type = "gem";
};
version = "5.11.3";
};
molinillo = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1hh40z1adl4lw16dj4hxgabx4rr28mgqycih1y1d91bwww0jjdg6";
type = "gem";
};
version = "0.6.6";
};
nanaimo = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0ajfyaqjw3dzykk612yw8sm21savfqy292hgps8h8l4lvxww1lz6";
type = "gem";
};
version = "0.2.6";
};
nap = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0xm5xssxk5s03wjarpipfm39qmgxsalb46v1prsis14x1xk935ll";
type = "gem";
};
version = "1.1.0";
};
netrc = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0gzfmcywp1da8nzfqsql2zqi648mfnx6qwkig3cv36n9m0yy676y";
type = "gem";
};
version = "0.11.0";
};
ruby-macho = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0lhdjn91jkifsy2hzq2hgcm0pp8pbik87m58zmw1ifh6hkp9adjb";
type = "gem";
};
version = "1.4.0";
};
thread_safe = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0nmhcgq6cgz44srylra07bmaw99f5271l0dpsvl5f75m44l0gmwy";
type = "gem";
};
version = "0.3.6";
};
tzinfo = {
dependencies = ["thread_safe"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1fjx9j327xpkkdlxwmkl3a8wqj7i4l4jwlrv3z13mg95z9wl253z";
type = "gem";
};
version = "1.2.5";
};
xcodeproj = {
dependencies = ["CFPropertyList" "atomos" "claide" "colored2" "nanaimo"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0ji3wmpr6xm4172vxh9y6731vm2xrvv7ccwk4ijd5n4if1dakm03";
type = "gem";
};
version = "1.8.2";
};
}

View File

@ -5,10 +5,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0pqr25wmhvvlg8av7bi5p5c7r5464clhhhhv45j63bh7xw4ad6n4"; sha256 = "1vbq7a805bfvyik2q3kl9s3r418f5qzvysqbz2cwy4hr7m2q4ir6";
type = "gem"; type = "gem";
}; };
version = "4.2.11"; version = "4.2.11.1";
}; };
atomos = { atomos = {
source = { source = {
@ -61,10 +61,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "0m3hi4va9cr7anxkjf44as14j1hsrvw00bzvz7c906hyb8qcm4fp"; sha256 = "0bf524f1za92i6rlr4cr6jm3c4vfjszsdc9lsr6wk5125c76ipzn";
type = "gem"; type = "gem";
}; };
version = "1.0.3"; version = "1.0.4";
}; };
cocoapods-downloader = { cocoapods-downloader = {
groups = ["default"]; groups = ["default"];
@ -133,10 +133,10 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "1ixcx9pfissxrga53jbdpza85qd5f6b5nq1sfqa9rnfq82qnlbp1"; sha256 = "1x07r23s7836cpp5z9yrlbpljcxpax14yw4fy4bnp6crhr6x24an";
type = "gem"; type = "gem";
}; };
version = "1.1.4"; version = "1.1.5";
}; };
escape = { escape = {
source = { source = {
@ -254,9 +254,9 @@
platforms = []; platforms = [];
source = { source = {
remotes = ["https://rubygems.org"]; remotes = ["https://rubygems.org"];
sha256 = "13z3109lwq632vhazndqjlccpwadljg58sflbyl0m57j9d4blv2y"; sha256 = "0ji3wmpr6xm4172vxh9y6731vm2xrvv7ccwk4ijd5n4if1dakm03";
type = "gem"; type = "gem";
}; };
version = "1.8.1"; version = "1.8.2";
}; };
} }

View File

@ -1,11 +1,10 @@
#!/usr/bin/env nix-shell #!/usr/bin/env nix-shell
#! nix-shell -i bash -p bash ruby bundler bundix #! nix-shell -i bash -p bash bundix bundler
BUNDIX_CACHE="$(mktemp -d)" set -e
rm -f Gemfile.lock rm -f Gemfile.lock Gemfile-beta.lock
bundler package --path "$BUNDIX_CACHE" bundler lock
bundix --bundle-pack-path="$BUNDIX_CACHE" BUNDLE_GEMFILE=Gemfile-beta bundler lock --lockfile=Gemfile-beta.lock
bundix --gemfile=Gemfile --lockfile=Gemfile.lock --gemset=gemset.nix
rm -rf "$BUNDIX_CACHE" bundix --gemfile=Gemfile-beta --lockfile=Gemfile-beta.lock --gemset=gemset-beta.nix
rm -rf .bundle

View File

@ -94,4 +94,18 @@ nodePackages // {
webtorrent-cli = nodePackages.webtorrent-cli.override { webtorrent-cli = nodePackages.webtorrent-cli.override {
buildInputs = [ nodePackages.node-gyp-build ]; buildInputs = [ nodePackages.node-gyp-build ];
}; };
joplin = nodePackages.joplin.override {
nativeBuildInputs = [ pkgs.pkg-config ];
buildInputs = with pkgs; [
# sharp, dep list:
# http://sharp.pixelplumbing.com/en/stable/install/
cairo expat fontconfig freetype fribidi gettext giflib
glib harfbuzz lcms libcroco libexif libffi libgsf
libjpeg_turbo libpng librsvg libtiff vips
libwebp libxml2 pango pixman zlib
nodePackages.node-pre-gyp
];
};
} }

View File

@ -48,6 +48,7 @@
, "indium" , "indium"
, "jake" , "jake"
, "javascript-typescript-langserver" , "javascript-typescript-langserver"
, "joplin"
, "jsdoc" , "jsdoc"
, "jshint" , "jshint"
, "json" , "json"

File diff suppressed because it is too large Load Diff

View File

@ -1714,13 +1714,13 @@ let
sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f"; sha1 = "9b2ce5d3de02d17c6012ad326aa6b4d0cf54f94f";
}; };
}; };
"semver-5.6.0" = { "semver-5.7.0" = {
name = "semver"; name = "semver";
packageName = "semver"; packageName = "semver";
version = "5.6.0"; version = "5.7.0";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/semver/-/semver-5.6.0.tgz"; url = "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz";
sha512 = "RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="; sha512 = "Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==";
}; };
}; };
"set-blocking-2.0.0" = { "set-blocking-2.0.0" = {
@ -2581,7 +2581,7 @@ in
sources."safe-buffer-5.1.2" sources."safe-buffer-5.1.2"
sources."safer-buffer-2.1.2" sources."safer-buffer-2.1.2"
sources."sax-1.2.4" sources."sax-1.2.4"
sources."semver-5.6.0" sources."semver-5.7.0"
sources."set-blocking-2.0.0" sources."set-blocking-2.0.0"
sources."signal-exit-3.0.2" sources."signal-exit-3.0.2"
sources."string-width-1.0.2" sources."string-width-1.0.2"
@ -2606,10 +2606,10 @@ in
pnpm = nodeEnv.buildNodePackage { pnpm = nodeEnv.buildNodePackage {
name = "pnpm"; name = "pnpm";
packageName = "pnpm"; packageName = "pnpm";
version = "3.0.1"; version = "3.1.0";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/pnpm/-/pnpm-3.0.1.tgz"; url = "https://registry.npmjs.org/pnpm/-/pnpm-3.1.0.tgz";
sha512 = "hYWjRN7U96zHDvgQxGyYaMF469Uzx0iZo2ej1VMUSaOULUFI9ue7dDku29AOf/E0+5Zd9zFs0qE0Tuq5Zsrk0A=="; sha512 = "+Ywkb2rg5uX6/CppRBFmefrQn8EiXK8H0ntRoWHuQAzLErrVXtbyuRKhWMUG5ewr9raQUOACou/uaThE9jzhwA==";
}; };
buildInputs = globalBuildInputs; buildInputs = globalBuildInputs;
meta = { meta = {

View File

@ -4,13 +4,13 @@
let let
sources = { sources = {
"@types/node-8.10.44" = { "@types/node-8.10.45" = {
name = "_at_types_slash_node"; name = "_at_types_slash_node";
packageName = "@types/node"; packageName = "@types/node";
version = "8.10.44"; version = "8.10.45";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/@types/node/-/node-8.10.44.tgz"; url = "https://registry.npmjs.org/@types/node/-/node-8.10.45.tgz";
sha512 = "HY3SK7egERHGUfY8p6ztXIEQWcIPHouYhCGcLAPQin7gE2G/fALFz+epnMwcxKUS6aKqTVoAFdi+t1llQd3xcw=="; sha512 = "tGVTbA+i3qfXsLbq9rEq/hezaHY55QxQLeXQL2ejNgFAxxrgu8eMmYIOsRcl7hN1uTLVsKOOYacV/rcJM3sfgQ==";
}; };
}; };
"JSV-4.0.2" = { "JSV-4.0.2" = {
@ -1075,6 +1075,15 @@ let
sha512 = "6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg=="; sha512 = "6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==";
}; };
}; };
"commander-2.20.0" = {
name = "commander";
packageName = "commander";
version = "2.20.0";
src = fetchurl {
url = "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz";
sha512 = "7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==";
};
};
"component-emitter-1.2.1" = { "component-emitter-1.2.1" = {
name = "component-emitter"; name = "component-emitter";
packageName = "component-emitter"; packageName = "component-emitter";
@ -3613,6 +3622,15 @@ let
sha512 = "RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg=="; sha512 = "RS9R6R35NYgQn++fkDWaOmqGoj4Ek9gGs+DPxNUZKuwE183xjJroKvyo1IzVFeXvUrvmALy6FWD5xrdJT25gMg==";
}; };
}; };
"semver-5.7.0" = {
name = "semver";
packageName = "semver";
version = "5.7.0";
src = fetchurl {
url = "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz";
sha512 = "Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==";
};
};
"set-blocking-2.0.0" = { "set-blocking-2.0.0" = {
name = "set-blocking"; name = "set-blocking";
packageName = "set-blocking"; packageName = "set-blocking";
@ -4518,7 +4536,7 @@ in
sources."chalk-1.1.3" sources."chalk-1.1.3"
sources."chmodr-1.2.0" sources."chmodr-1.2.0"
sources."colors-1.3.3" sources."colors-1.3.3"
sources."commander-2.19.0" sources."commander-2.20.0"
sources."concat-map-0.0.1" sources."concat-map-0.0.1"
sources."convert-source-map-1.6.0" sources."convert-source-map-1.6.0"
sources."core-js-2.6.5" sources."core-js-2.6.5"
@ -4623,7 +4641,7 @@ in
sha512 = "MMiK5sFfIocNMWCc5PshUCAe6aY4P13/GCmSwudOziA/pFdQMHU8jhu+jU2SSWFug4K1ugeuCwtMXe43oL0PhQ=="; sha512 = "MMiK5sFfIocNMWCc5PshUCAe6aY4P13/GCmSwudOziA/pFdQMHU8jhu+jU2SSWFug4K1ugeuCwtMXe43oL0PhQ==";
}; };
dependencies = [ dependencies = [
sources."@types/node-8.10.44" sources."@types/node-8.10.45"
sources."JSV-4.0.2" sources."JSV-4.0.2"
sources."adal-node-0.1.28" sources."adal-node-0.1.28"
sources."ajv-6.10.0" sources."ajv-6.10.0"
@ -4810,7 +4828,7 @@ in
sources."har-schema-2.0.0" sources."har-schema-2.0.0"
(sources."har-validator-2.0.6" // { (sources."har-validator-2.0.6" // {
dependencies = [ dependencies = [
sources."commander-2.19.0" sources."commander-2.20.0"
]; ];
}) })
sources."has-ansi-2.0.0" sources."has-ansi-2.0.0"
@ -5521,7 +5539,7 @@ in
sources."safe-buffer-5.1.2" sources."safe-buffer-5.1.2"
sources."safer-buffer-2.1.2" sources."safer-buffer-2.1.2"
sources."sax-1.2.4" sources."sax-1.2.4"
sources."semver-5.6.0" sources."semver-5.7.0"
sources."set-blocking-2.0.0" sources."set-blocking-2.0.0"
sources."signal-exit-3.0.2" sources."signal-exit-3.0.2"
sources."string-width-1.0.2" sources."string-width-1.0.2"
@ -5546,10 +5564,10 @@ in
pnpm = nodeEnv.buildNodePackage { pnpm = nodeEnv.buildNodePackage {
name = "pnpm"; name = "pnpm";
packageName = "pnpm"; packageName = "pnpm";
version = "3.0.1"; version = "3.1.0";
src = fetchurl { src = fetchurl {
url = "https://registry.npmjs.org/pnpm/-/pnpm-3.0.1.tgz"; url = "https://registry.npmjs.org/pnpm/-/pnpm-3.1.0.tgz";
sha512 = "hYWjRN7U96zHDvgQxGyYaMF469Uzx0iZo2ej1VMUSaOULUFI9ue7dDku29AOf/E0+5Zd9zFs0qE0Tuq5Zsrk0A=="; sha512 = "+Ywkb2rg5uX6/CppRBFmefrQn8EiXK8H0ntRoWHuQAzLErrVXtbyuRKhWMUG5ewr9raQUOACou/uaThE9jzhwA==";
}; };
buildInputs = globalBuildInputs; buildInputs = globalBuildInputs;
meta = { meta = {

View File

@ -15,12 +15,6 @@ buildPythonPackage rec {
sha256 = "cef9bf5d36700966e52f7cea86e29c622bc5bbb92d0ce7a75420e29fb0e75f45"; sha256 = "cef9bf5d36700966e52f7cea86e29c622bc5bbb92d0ce7a75420e29fb0e75f45";
}; };
preConfigure = ''
# Patch to make this package work on requests >= 2.11.x
# CAN BE REMOVED ON NEXT PACKAGE UPDATE
sed -i 's|len(request_content)|str(len(request_content))|' azure/mgmt/network/networkresourceprovider.py
'';
postInstall = '' postInstall = ''
echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/__init__.py
echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/mgmt/__init__.py echo "__import__('pkg_resources').declare_namespace(__name__)" >> "$out/lib/${python.libPrefix}"/site-packages/azure/mgmt/__init__.py

View File

@ -21,13 +21,13 @@ in
buildPythonPackage rec { buildPythonPackage rec {
pname = "python-language-server"; pname = "python-language-server";
version = "0.25.0"; version = "0.26.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "palantir"; owner = "palantir";
repo = "python-language-server"; repo = "python-language-server";
rev = version; rev = version;
sha256 = "10la48m10j4alfnpw0xw359fb833scf5kv7kjvh7djf6ij7cfsvq"; sha256 = "003fy8bbvwibnsnyxw1qwg2rxnhbfylqs67ixr6fdnw6mmrzd6fg";
}; };
# The tests require all the providers, disable otherwise. # The tests require all the providers, disable otherwise.

View File

@ -1,12 +1,12 @@
{ buildPythonPackage, fetchPypi, h11, enum34, pytest }: { lib, buildPythonPackage, fetchPypi, h11, enum34, pytest }:
buildPythonPackage rec { buildPythonPackage rec {
pname = "wsproto"; pname = "wsproto";
version = "0.13.0"; version = "0.14.0";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "fd6020d825022247053400306448e161d8740bdd52e328e5553cd9eee089f705"; sha256 = "1p24dmym6pfsqsyxps6m2cxfl36cmkri0kdy5y5q7s300j3xmhsm";
}; };
propagatedBuildInputs = [ h11 enum34 ]; propagatedBuildInputs = [ h11 enum34 ];
@ -17,4 +17,9 @@ buildPythonPackage rec {
py.test py.test
''; '';
meta = with lib; {
description = "Pure Python, pure state-machine WebSocket implementation";
homepage = https://github.com/python-hyper/wsproto/;
license = licenses.mit;
};
} }

View File

@ -3,11 +3,11 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "xdot"; pname = "xdot";
version = "1.0"; version = "1.1";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "18a2ri8vggaxy7im1x9hki34v519y5jy4n07zpqq5br9syb7h1ky"; sha256 = "0cr4rh7dz4dfzyxrk5pzhm0d15gkrgkfp3i5lw178xy81pc56p71";
}; };
disabled = !isPy3k; disabled = !isPy3k;

View File

@ -2,11 +2,11 @@
buildPythonPackage rec { buildPythonPackage rec {
pname = "yapf"; pname = "yapf";
version = "0.26.0"; version = "0.27.0";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "edb47be90a56ca6f3075fe24f119a22225fbd62c66777b5d3916a7e9e793891b"; sha256 = "18a7n85xv0qrab2ck94kw92ncjq2l8vl0k34pm22rjvd8h6gixil";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -6,13 +6,13 @@ buildRubyGem rec {
name = "${gemName}-${version}"; name = "${gemName}-${version}";
gemName = "bundix"; gemName = "bundix";
version = "2.4.1"; version = "2.4.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "manveru"; owner = "manveru";
repo = "bundix"; repo = "bundix";
rev = version; rev = version;
sha256 = "175qmv7dj7v50v71b78dzn5pb4a35ml6p15asks9q1rrlkz0n4gn"; sha256 = "03jhj1dy0ljrymjnpi6mcxn36a29qxr835l1lc11879jjzvnr2ax";
}; };
buildInputs = [ ruby bundler ]; buildInputs = [ ruby bundler ];

View File

@ -12,8 +12,9 @@
{ {
# use the name of the name in question; its version will be picked up from the gemset # use the name of the name in question; its version will be picked up from the gemset
pname pname
# gemdir is the location of the Gemfile{,.lock} and gemset.nix; usually ./. # Gemdir is the location of the Gemfile{,.lock} and gemset.nix; usually ./.
, gemdir # This is required unless gemfile, lockfile, and gemset are all provided
, gemdir ? null
# Exes is the list of executables provided by the gems in the Gemfile # Exes is the list of executables provided by the gems in the Gemfile
, exes ? [] , exes ? []
# Scripts are ruby programs depend on gems in the Gemfile (e.g. scripts/rails) # Scripts are ruby programs depend on gems in the Gemfile (e.g. scripts/rails)

View File

@ -1,16 +1,16 @@
{ lib, buildGoPackage, fetchFromGitLab, fetchurl }: { lib, buildGoPackage, fetchFromGitLab, fetchurl }:
let let
version = "11.9.0"; version = "11.9.2";
# Gitlab runner embeds some docker images these are prebuilt for arm and x86_64 # Gitlab runner embeds some docker images these are prebuilt for arm and x86_64
docker_x86_64 = fetchurl { docker_x86_64 = fetchurl {
url = "https://gitlab-runner-downloads.s3.amazonaws.com/v${version}/helper-images/prebuilt-x86_64.tar.xz"; url = "https://gitlab-runner-downloads.s3.amazonaws.com/v${version}/helper-images/prebuilt-x86_64.tar.xz";
sha256 = "1la4pkf8xp5h75dlvb6w7ijczrnci3bmbl77h3y4jicz555jjir3"; sha256 = "10zmaywq1vzch4a6zdvnm9kgil9ankc9napix9s9fw45wc0lw01p";
}; };
docker_arm = fetchurl { docker_arm = fetchurl {
url = "https://gitlab-runner-downloads.s3.amazonaws.com/v${version}/helper-images/prebuilt-arm.tar.xz"; url = "https://gitlab-runner-downloads.s3.amazonaws.com/v${version}/helper-images/prebuilt-arm.tar.xz";
sha256 = "1axn34aqa17yk2c2vy73fb8ab3nc3021dzj0vk95qificlmj3par"; sha256 = "0845ylhb3i3jmi5q6aaix4hw9zdb83v5fhvif0xvvi2m7irg06lf";
}; };
in in
buildGoPackage rec { buildGoPackage rec {
@ -29,7 +29,7 @@ buildGoPackage rec {
owner = "gitlab-org"; owner = "gitlab-org";
repo = "gitlab-runner"; repo = "gitlab-runner";
rev = "v${version}"; rev = "v${version}";
sha256 = "1b4r83glx0n3l060k33s397dw5dpajlxb880yzwsb11hvc6cs39h"; sha256 = "00k4myca2djd6h3i83vjndahm5q1rnlkq0p69dhl5jbldwy614ph";
}; };
patches = [ ./fix-shell-path.patch ]; patches = [ ./fix-shell-path.patch ];

View File

@ -1,18 +1,17 @@
{ stdenv, buildGoPackage, fetchFromGitHub }: { stdenv, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec { buildGoPackage rec {
name = "go-langserver-${version}"; pname = "go-langserver";
version = "unstable-2018-03-05"; version = "2.0.0";
rev = "5d7a5dd74738978d635f709669241f164c120ebd";
goPackagePath = "github.com/sourcegraph/go-langserver"; goPackagePath = "github.com/sourcegraph/go-langserver";
subPackages = [ "." ]; subPackages = [ "." ];
src = fetchFromGitHub { src = fetchFromGitHub {
inherit rev; rev = "v${version}";
owner = "sourcegraph"; owner = "sourcegraph";
repo = "go-langserver"; repo = "go-langserver";
sha256 = "0aih0akk3wk3332znkhr2bzxcc3parijq7n089mdahnf20k69xyz"; sha256 = "1wv7xf81s3qi8xydxjkkp8vacdzrq8sbj04346fz73nsn85z0sgp";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -6,13 +6,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "wesnoth"; pname = "wesnoth";
version = "1.14.6"; version = "1.14.7";
name = "${pname}-${version}"; name = "${pname}-${version}";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/sourceforge/${pname}/${name}.tar.bz2"; url = "mirror://sourceforge/sourceforge/${pname}/${name}.tar.bz2";
sha256 = "0aw3czw3nq8ffakhw2libhvrhnllj61xc5lxpjqv0ig1419s1lj5"; sha256 = "0j2yvkcggj5k0r2cqk8ndnj77m37a00srfd9qg7pdpqffbinqpj7";
}; };
nativeBuildInputs = [ cmake pkgconfig ]; nativeBuildInputs = [ cmake pkgconfig ];

View File

@ -20,13 +20,13 @@ let
}; };
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "dolphin-emu-${version}"; name = "dolphin-emu-${version}";
version = "2019-02-16"; version = "5.0-9976";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "dolphin-emu"; owner = "dolphin-emu";
repo = "dolphin"; repo = "dolphin";
rev = "286aafd4ed2949f0b93230fee969c6a32fe75f07"; rev = "63f30cc44da248b0226e1c8724b3e53ecf4c768f";
sha256 = "0l0cpq8s7wnng7mhbnzf4v84zggqsqdykrzfyz5avvbv9pla7jwp"; sha256 = "0lkf571kzmw26fybl1lqpvhc81jkbh4hcvi3766bb7mvvzapkybd";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;
@ -47,6 +47,9 @@ in stdenv.mkDerivation rec {
cmakeFlags = [ cmakeFlags = [
"-DUSE_SHARED_ENET=ON" "-DUSE_SHARED_ENET=ON"
"-DENABLE_LTO=ON" "-DENABLE_LTO=ON"
"-DDOLPHIN_WC_REVISION=${src.rev}"
"-DDOLPHIN_WC_DESCRIBE=${version}"
"-DDOLPHIN_WC_BRANCH=master"
] ++ stdenv.lib.optionals stdenv.isDarwin [ ] ++ stdenv.lib.optionals stdenv.isDarwin [
"-DOSX_USE_DEFAULT_SEARCH_PATH=True" "-DOSX_USE_DEFAULT_SEARCH_PATH=True"
]; ];

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