Merge remote-tracking branch 'ni/master'
This commit is contained in:
commit
50a3903825
@ -5,6 +5,7 @@ writeHaskellPackage "cabal-read" {
|
|||||||
executables.ghc-options = {
|
executables.ghc-options = {
|
||||||
extra-depends = ["Cabal"];
|
extra-depends = ["Cabal"];
|
||||||
text = /* haskell */ ''
|
text = /* haskell */ ''
|
||||||
|
{-# LANGUAGE CPP #-}
|
||||||
module Main (main) where
|
module Main (main) where
|
||||||
import Data.List
|
import Data.List
|
||||||
import Data.Maybe
|
import Data.Maybe
|
||||||
@ -26,6 +27,9 @@ writeHaskellPackage "cabal-read" {
|
|||||||
case lookup (mkUnqualComponentName name) (condExecutables desc) of
|
case lookup (mkUnqualComponentName name) (condExecutables desc) of
|
||||||
Just exe ->
|
Just exe ->
|
||||||
putStrLn . intercalate " " . fromMaybe [] . lookup GHC
|
putStrLn . intercalate " " . fromMaybe [] . lookup GHC
|
||||||
|
#if MIN_VERSION_Cabal(3,0,0)
|
||||||
|
. perCompilerFlavorToList
|
||||||
|
#endif
|
||||||
. options . buildInfo . condTreeData $ exe
|
. options . buildInfo . condTreeData $ exe
|
||||||
|
|
||||||
Nothing ->
|
Nothing ->
|
||||||
|
@ -1,24 +1,22 @@
|
|||||||
{ coreutils, dash, fetchgit, gnused, stdenv, ucspi-tcp }:
|
{ fetchgit, lib, pkgs, stdenv }:
|
||||||
with import <stockholm/lib>;
|
stdenv.mkDerivation rec {
|
||||||
let
|
pname = "htgen";
|
||||||
version = "1.2.8";
|
version = "1.3.0";
|
||||||
in stdenv.mkDerivation {
|
|
||||||
name = "htgen-${version}";
|
|
||||||
|
|
||||||
src = fetchgit {
|
src = fetchgit {
|
||||||
url = "http://cgit.krebsco.de/htgen";
|
url = "http://cgit.krebsco.de/htgen";
|
||||||
rev = "refs/tags/v${version}";
|
rev = "refs/tags/v${version}";
|
||||||
sha256 = "046c05jswar2agagqixad3idqxca494aaf199h6bdn02cyzygnpq";
|
sha256 = "0p3517wkfpvip4z0axh0b4v1jm1nqpppldnhq4806c0p33vrjxnf";
|
||||||
};
|
};
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
{
|
{
|
||||||
echo '#! ${dash}/bin/dash'
|
echo '#! ${pkgs.dash}/bin/dash'
|
||||||
echo 'export PATH=${makeBinPath [
|
echo 'export PATH=${lib.makeBinPath [
|
||||||
coreutils
|
pkgs.coreutils
|
||||||
gnused
|
pkgs.jq
|
||||||
ucspi-tcp
|
pkgs.ucspi-tcp
|
||||||
]}''${PATH+":$PATH"}'
|
]}''${PATH+":$PATH"}'
|
||||||
sed 's:^Server=htgen$:&/${version}:' htgen
|
sed 's:^Server=htgen$:&/${version}:' htgen
|
||||||
} > $out/bin/htgen
|
} > $out/bin/htgen
|
||||||
|
@ -11,7 +11,6 @@ with import <stockholm/lib>;
|
|||||||
boot = {
|
boot = {
|
||||||
initrd = {
|
initrd = {
|
||||||
availableKernelModules = [ "ahci" ];
|
availableKernelModules = [ "ahci" ];
|
||||||
luks.cryptoModules = [ "aes" "sha512" "xts" ];
|
|
||||||
luks.devices.luksroot.device = "/dev/sda2";
|
luks.devices.luksroot.device = "/dev/sda2";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -15,7 +15,6 @@ with import <stockholm/lib>;
|
|||||||
tv.x0vncserver.enable = true;
|
tv.x0vncserver.enable = true;
|
||||||
|
|
||||||
boot.initrd.luks.devices.muca.device = "/dev/sda2";
|
boot.initrd.luks.devices.muca.device = "/dev/sda2";
|
||||||
boot.initrd.luks.cryptoModules = [ "aes" "sha512" "xts" ];
|
|
||||||
boot.initrd.availableKernelModules = [ "ahci" ];
|
boot.initrd.availableKernelModules = [ "ahci" ];
|
||||||
boot.kernelModules = [ "fbcon" "kvm-intel" ];
|
boot.kernelModules = [ "fbcon" "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
@ -15,10 +15,7 @@ with import <stockholm/lib>;
|
|||||||
<stockholm/tv/2configs/xserver>
|
<stockholm/tv/2configs/xserver>
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.luks = {
|
boot.initrd.luks.devices.luks1.device = "/dev/sda2";
|
||||||
cryptoModules = [ "aes" "sha512" "xts" ];
|
|
||||||
devices.luks1.device = "/dev/sda2";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Don't use UEFI because current disk was partitioned/formatted for AO753.
|
# Don't use UEFI because current disk was partitioned/formatted for AO753.
|
||||||
# TODO remove following bool.loader section after repartitioning/reformatting
|
# TODO remove following bool.loader section after repartitioning/reformatting
|
||||||
|
@ -11,12 +11,9 @@ with import <stockholm/lib>;
|
|||||||
krebs.build.user = mkForce config.krebs.users.itak;
|
krebs.build.user = mkForce config.krebs.users.itak;
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "ahci" ];
|
boot.initrd.availableKernelModules = [ "ahci" ];
|
||||||
boot.initrd.luks = {
|
boot.initrd.luks.devices.querel-luks1 = {
|
||||||
cryptoModules = [ "aes" "sha512" "xts" ];
|
allowDiscards = true;
|
||||||
devices.querel-luks1 = {
|
device = "/dev/sda2";
|
||||||
allowDiscards = true;
|
|
||||||
device = "/dev/sda2";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.loader = {
|
boot.loader = {
|
||||||
|
@ -16,10 +16,7 @@ with import <stockholm/lib>;
|
|||||||
<stockholm/tv/2configs/xserver>
|
<stockholm/tv/2configs/xserver>
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.luks = {
|
boot.initrd.luks.devices.wuca.device = "/dev/sda2";
|
||||||
cryptoModules = [ "aes" "sha512" "xts" ];
|
|
||||||
devices.wuca.device = "/dev/sda2";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
"/" = {
|
"/" = {
|
||||||
|
@ -111,10 +111,7 @@ with import <stockholm/lib>;
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.luks = {
|
boot.initrd.luks.devices.xuca.device = "/dev/sda2";
|
||||||
cryptoModules = [ "aes" "sha512" "xts" ];
|
|
||||||
devices.xuca.device = "/dev/sda2";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
"/" = {
|
"/" = {
|
||||||
@ -154,6 +151,4 @@ with import <stockholm/lib>;
|
|||||||
|
|
||||||
# The NixOS release to be compatible with for stateful data such as databases.
|
# The NixOS release to be compatible with for stateful data such as databases.
|
||||||
system.stateVersion = "15.09";
|
system.stateVersion = "15.09";
|
||||||
|
|
||||||
virtualisation.virtualbox.host.enable = true;
|
|
||||||
}
|
}
|
||||||
|
@ -16,10 +16,7 @@ with import <stockholm/lib>;
|
|||||||
<stockholm/tv/2configs/xserver>
|
<stockholm/tv/2configs/xserver>
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.luks = {
|
boot.initrd.luks.devices.zuca.device = "/dev/sda2";
|
||||||
cryptoModules = [ "aes" "sha512" "xts" ];
|
|
||||||
devices.zuca.device = "/dev/sda2";
|
|
||||||
};
|
|
||||||
|
|
||||||
fileSystems = {
|
fileSystems = {
|
||||||
"/" = {
|
"/" = {
|
||||||
|
@ -90,9 +90,6 @@ with import <stockholm/lib>;
|
|||||||
|
|
||||||
{
|
{
|
||||||
services.cron.enable = false;
|
services.cron.enable = false;
|
||||||
services.nscd.enable =
|
|
||||||
# Since 20.09 nscd doesn't cache anymore.
|
|
||||||
versionAtLeast (versions.majorMinor version) "20.09";
|
|
||||||
services.ntp.enable = false;
|
services.ntp.enable = false;
|
||||||
services.timesyncd.enable = true;
|
services.timesyncd.enable = true;
|
||||||
}
|
}
|
||||||
|
@ -4,20 +4,45 @@
|
|||||||
cfg.packageDir = "/var/lib/elm-packages";
|
cfg.packageDir = "/var/lib/elm-packages";
|
||||||
cfg.port = 7782;
|
cfg.port = 7782;
|
||||||
|
|
||||||
|
# TODO secret files
|
||||||
|
cfg.htpasswd = "/var/lib/certs/package.elm-lang.org/htpasswd";
|
||||||
|
cfg.sslCertificate = "/var/lib/certs/package.elm-lang.org/fullchain.pem";
|
||||||
|
cfg.sslCertificateKey = "/var/lib/certs/package.elm-lang.org/key.pem";
|
||||||
|
|
||||||
|
semverRegex =
|
||||||
|
"(?<major>0|[1-9]\\d*)\\.(?<minor>0|[1-9]\\d*)\\.(?<patch>0|[1-9]\\d*)(?:-(?<prerelease>(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?<buildmetadata>[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?";
|
||||||
|
|
||||||
in {
|
in {
|
||||||
services.nginx.virtualHosts."package.elm-lang.org" = {
|
services.nginx.virtualHosts."package.elm-lang.org" = {
|
||||||
addSSL = true;
|
addSSL = true;
|
||||||
|
|
||||||
# TODO secret files
|
sslCertificate = cfg.sslCertificate;
|
||||||
sslCertificate = "/var/lib/certs/package.elm-lang.org/fullchain.pem";
|
sslCertificateKey = cfg.sslCertificateKey;
|
||||||
sslCertificateKey = "/var/lib/certs/package.elm-lang.org/key.pem";
|
|
||||||
|
locations."/all-packages".extraConfig = ''
|
||||||
|
proxy_pass http://127.0.0.1:${toString config.krebs.htgen.elm-packages-proxy.port};
|
||||||
|
proxy_pass_header Server;
|
||||||
|
'';
|
||||||
|
|
||||||
locations."/all-packages/since/".extraConfig = ''
|
locations."/all-packages/since/".extraConfig = ''
|
||||||
proxy_pass http://127.0.0.1:${toString config.krebs.htgen.elm-packages-proxy.port};
|
proxy_pass http://127.0.0.1:${toString config.krebs.htgen.elm-packages-proxy.port};
|
||||||
proxy_pass_header Server;
|
proxy_pass_header Server;
|
||||||
'';
|
'';
|
||||||
|
|
||||||
locations."~ ^/packages/(?<author>[A-Za-z0-9-]+)/(?<pname>[A-Za-z0-9-]+)/(?<version>(?<major>0|[1-9]\\d*)\\.(?<minor>0|[1-9]\\d*)\\.(?<patch>0|[1-9]\\d*)(?:-(?<prerelease>(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+(?<buildmetadata>[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*))?)/(?:zipball|elm.json|endpoint.json)\$".extraConfig = ''
|
locations."~ ^/packages/(?<author>[A-Za-z0-9-]+)/(?<pname>[A-Za-z0-9-]+)/(?<version>${semverRegex})\$".extraConfig = ''
|
||||||
|
auth_basic "Restricted Area";
|
||||||
|
auth_basic_user_file ${cfg.htpasswd};
|
||||||
|
|
||||||
|
proxy_set_header X-User $remote_user;
|
||||||
|
proxy_set_header X-Author $author;
|
||||||
|
proxy_set_header X-Package $pname;
|
||||||
|
proxy_set_header X-Version $version;
|
||||||
|
proxy_pass_header Server;
|
||||||
|
|
||||||
|
proxy_pass http://127.0.0.1:${toString config.krebs.htgen.elm-packages-proxy.port};
|
||||||
|
'';
|
||||||
|
|
||||||
|
locations."~ ^/packages/(?<author>[A-Za-z0-9-]+)/(?<pname>[A-Za-z0-9-]+)/(?<version>${semverRegex})/(?:zipball|elm.json|endpoint.json)\$".extraConfig = ''
|
||||||
set $zipball "${cfg.packageDir}/$author/$pname/$version/zipball";
|
set $zipball "${cfg.packageDir}/$author/$pname/$version/zipball";
|
||||||
proxy_set_header X-Author $author;
|
proxy_set_header X-Author $author;
|
||||||
proxy_set_header X-Package $pname;
|
proxy_set_header X-Package $pname;
|
||||||
@ -39,14 +64,15 @@ in {
|
|||||||
|
|
||||||
krebs.htgen.elm-packages-proxy = {
|
krebs.htgen.elm-packages-proxy = {
|
||||||
port = cfg.port;
|
port = cfg.port;
|
||||||
script = /* sh */ ''(. ${pkgs.writeDash "elm-packages-proxy.sh" ''
|
script = /* sh */ ''. ${pkgs.writeDash "elm-packages-proxy.sh" ''
|
||||||
PATH=${lib.makeBinPath [
|
PATH=${lib.makeBinPath [
|
||||||
|
pkgs.attr
|
||||||
pkgs.coreutils
|
pkgs.coreutils
|
||||||
pkgs.curl
|
pkgs.curl
|
||||||
pkgs.findutils
|
pkgs.findutils
|
||||||
pkgs.gnugrep
|
pkgs.gnugrep
|
||||||
pkgs.jq
|
pkgs.jq
|
||||||
pkgs.unzip
|
pkgs.p7zip
|
||||||
]}
|
]}
|
||||||
export PATH
|
export PATH
|
||||||
file_response() {(
|
file_response() {(
|
||||||
@ -73,7 +99,7 @@ in {
|
|||||||
|
|
||||||
printf "HTTP/1.1 $status_code $status_reason\r\n"
|
printf "HTTP/1.1 $status_code $status_reason\r\n"
|
||||||
printf 'Connection: close\r\n'
|
printf 'Connection: close\r\n'
|
||||||
printf 'Content-Length: %d\r\n' ''${#response_body}
|
printf 'Content-Length: %d\r\n' "$(expr ''${#response_body} + 1)"
|
||||||
printf 'Content-Type: %s\r\n' "$content_type"
|
printf 'Content-Type: %s\r\n' "$content_type"
|
||||||
printf 'Server: %s\r\n' "$Server"
|
printf 'Server: %s\r\n' "$Server"
|
||||||
printf '\r\n'
|
printf '\r\n'
|
||||||
@ -99,7 +125,7 @@ in {
|
|||||||
;;
|
;;
|
||||||
elm.json)
|
elm.json)
|
||||||
if ! test -f "$elmjson"; then
|
if ! test -f "$elmjson"; then
|
||||||
unzip -p "$zipball" \*/elm.json > "$elmjson"
|
7z x -so "$zipball" \*/elm.json > "$elmjson"
|
||||||
fi
|
fi
|
||||||
file_response 200 OK "$elmjson" 'application/json; charset=UTF-8'
|
file_response 200 OK "$elmjson" 'application/json; charset=UTF-8'
|
||||||
exit
|
exit
|
||||||
@ -119,36 +145,110 @@ in {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
'POST /all-packages/since/'*)
|
'POST /packages/'*)
|
||||||
|
|
||||||
# TODO only show newest?
|
author=$req_x_author
|
||||||
my_packages=$(
|
pname=$req_x_package
|
||||||
cd ${cfg.packageDir}
|
user=$req_x_user
|
||||||
find -mindepth 3 -maxdepth 3 |
|
version=$req_x_version
|
||||||
|
|
||||||
|
action=uploading
|
||||||
|
force=''${req_x_force-false}
|
||||||
|
zipball=${cfg.packageDir}/$author/$pname/$version/zipball
|
||||||
|
elmjson=$HOME/cache/$author%2F$pname%2F$version%2Felm.json
|
||||||
|
endpointjson=$HOME/cache/$author%2F$pname%2F$version%2Fendpoint.json
|
||||||
|
|
||||||
|
if test -e "$zipball"; then
|
||||||
|
if test "$force" = true; then
|
||||||
|
zipball_owner=$(attr -q -g X-User "$zipball" || :)
|
||||||
|
if test "$zipball_owner" = "$req_x_user"; then
|
||||||
|
action=replacing
|
||||||
|
rm -f "$elmjson"
|
||||||
|
rm -f "$endpointjson"
|
||||||
|
else
|
||||||
|
string_response 403 Forbidden \
|
||||||
|
"package already exists: $author/$pname@$version" \
|
||||||
|
text/plain
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
string_response 409 Conflict \
|
||||||
|
"package already exists: $author/$pname@$version" \
|
||||||
|
text/plain
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "user $user is $action package $author/$pname@$version" >&2
|
||||||
|
# TODO check package
|
||||||
|
mkdir -p "$(dirname "$zipball")"
|
||||||
|
head -c $req_content_length > "$zipball"
|
||||||
|
|
||||||
|
attr -q -s X-User -V "$user" "$zipball" || :
|
||||||
|
|
||||||
|
string_response 200 OK \
|
||||||
|
"package created: $author/$pname@$version" \
|
||||||
|
text/plain
|
||||||
|
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
'GET /all-packages'|'POST /all-packages')
|
||||||
|
|
||||||
|
response=$(mktemp -t htgen.$$.elm-packages-proxy.all-packages.XXXXXXXX)
|
||||||
|
trap "rm $response >&2" EXIT
|
||||||
|
|
||||||
|
{
|
||||||
|
# upstream packages
|
||||||
|
curl -fsS https://package.elm-lang.org"$Request_URI"
|
||||||
|
|
||||||
|
# private packages
|
||||||
|
(cd ${cfg.packageDir}; find -mindepth 3 -maxdepth 3) |
|
||||||
|
jq -Rs '
|
||||||
|
split("\n") |
|
||||||
|
map(
|
||||||
|
select(.!="") |
|
||||||
|
match("^\\./(?<author>[^/]+)/(?<pname>[^/]+)/(?<version>[^/]+)$").captures |
|
||||||
|
map({key:.name,value:.string}) |
|
||||||
|
from_entries
|
||||||
|
) |
|
||||||
|
reduce .[] as $item ({};
|
||||||
|
($item|"\(.author)/\(.pname)") as $name |
|
||||||
|
. + { "\($name)": ((.[$name] // []) + [$item.version]) }
|
||||||
|
)
|
||||||
|
'
|
||||||
|
} |
|
||||||
|
jq -cs add > $response
|
||||||
|
|
||||||
|
file_response 200 OK "$response" 'application/json; charset=UTF-8'
|
||||||
|
exit
|
||||||
|
;;
|
||||||
|
'GET /all-packages/since/'*|'POST /all-packages/since/'*)
|
||||||
|
|
||||||
|
response=$(mktemp -t htgen.$$.elm-packages-proxy.all-packages.XXXXXXXX)
|
||||||
|
trap "rm $response >&2" EXIT
|
||||||
|
|
||||||
|
{
|
||||||
|
# upstream packages
|
||||||
|
curl -fsS https://package.elm-lang.org"$Request_URI"
|
||||||
|
|
||||||
|
# private packages
|
||||||
|
(cd ${cfg.packageDir}; find -mindepth 3 -maxdepth 3) |
|
||||||
jq -Rs '
|
jq -Rs '
|
||||||
split("\n") |
|
split("\n") |
|
||||||
map(
|
map(
|
||||||
select(.!="") |
|
select(.!="") |
|
||||||
sub("^\\./(?<author>[^/]+)/(?<pname>[^/]+)/(?<version>[^/]+)$";"\(.author)/\(.pname)@\(.version)")
|
sub("^\\./(?<author>[^/]+)/(?<pname>[^/]+)/(?<version>[^/]+)$";"\(.author)/\(.pname)@\(.version)")
|
||||||
)
|
) |
|
||||||
|
sort_by(split("@") | [.[0]]+(.[1]|split("."))) |
|
||||||
|
reverse
|
||||||
'
|
'
|
||||||
)
|
} |
|
||||||
|
jq -cs add > $response
|
||||||
|
|
||||||
new_upstream_packages=$(
|
file_response 200 OK "$response" 'application/json; charset=UTF-8'
|
||||||
curl -fsS https://package.elm-lang.org"$Request_URI"
|
|
||||||
)
|
|
||||||
|
|
||||||
response=$(
|
|
||||||
jq -n \
|
|
||||||
--argjson my_packages "$my_packages" \
|
|
||||||
--argjson new_upstream_packages "$new_upstream_packages" \
|
|
||||||
'$new_upstream_packages + $my_packages'
|
|
||||||
)
|
|
||||||
|
|
||||||
string_response 200 OK "$response" 'application/json; charset=UTF-8'
|
|
||||||
exit
|
exit
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
''})'';
|
''}'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -26,7 +26,6 @@ with import <stockholm/lib>;
|
|||||||
{ from = "postmaster@viljetic.de"; to = tv.mail; } # RFC 822
|
{ from = "postmaster@viljetic.de"; to = tv.mail; } # RFC 822
|
||||||
{ from = "mirko@viljetic.de"; to = mv-ni.mail; }
|
{ from = "mirko@viljetic.de"; to = mv-ni.mail; }
|
||||||
{ from = "tomislav@viljetic.de"; to = tv.mail; }
|
{ from = "tomislav@viljetic.de"; to = tv.mail; }
|
||||||
{ from = "tv@destroy.dyn.shackspace.de"; to = tv.mail; }
|
|
||||||
{ from = "tv@viljetic.de"; to = tv.mail; }
|
{ from = "tv@viljetic.de"; to = tv.mail; }
|
||||||
{ from = "tv@shackspace.de"; to = tv.mail; }
|
{ from = "tv@shackspace.de"; to = tv.mail; }
|
||||||
];
|
];
|
||||||
|
@ -83,6 +83,9 @@ let {
|
|||||||
krops = {
|
krops = {
|
||||||
cgit.desc = "deployment tools";
|
cgit.desc = "deployment tools";
|
||||||
};
|
};
|
||||||
|
mailaids = {
|
||||||
|
cgit.desc = "Assortment of aids for working with electronic mail";
|
||||||
|
};
|
||||||
much = {};
|
much = {};
|
||||||
netcup = {
|
netcup = {
|
||||||
cgit.desc = "netcup command line interface";
|
cgit.desc = "netcup command line interface";
|
||||||
|
@ -48,9 +48,9 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
services.tlp.enable = true;
|
services.tlp.enable = true;
|
||||||
services.tlp.extraConfig = ''
|
services.tlp.settings = {
|
||||||
START_CHARGE_THRESH_BAT0=80
|
START_CHARGE_THRESH_BAT0 = 80;
|
||||||
'';
|
};
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
buildCores = 2;
|
buildCores = 2;
|
||||||
|
21
tv/5pkgs/haskell/mailaids.nix
Normal file
21
tv/5pkgs/haskell/mailaids.nix
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{ mkDerivation, aeson, aeson-pretty, base, bytestring
|
||||||
|
, case-insensitive, fetchgit, lens, optparse-applicative
|
||||||
|
, purebred-email, stdenv, text, vector, word8
|
||||||
|
}:
|
||||||
|
mkDerivation {
|
||||||
|
pname = "mailaids";
|
||||||
|
version = "1.0.0";
|
||||||
|
src = fetchgit {
|
||||||
|
url = "https://cgit.krebsco.de/mailaids";
|
||||||
|
sha256 = "15h0k82czm89gkwhp1rwdy77jz8dmb626qdz7c2narvz9j7169v5";
|
||||||
|
rev = "8f11927ea74d6adb332c884502ebd9c486837523";
|
||||||
|
fetchSubmodules = true;
|
||||||
|
};
|
||||||
|
isLibrary = false;
|
||||||
|
isExecutable = true;
|
||||||
|
executableHaskellDepends = [
|
||||||
|
aeson aeson-pretty base bytestring case-insensitive lens
|
||||||
|
optparse-applicative purebred-email text vector word8
|
||||||
|
];
|
||||||
|
license = stdenv.lib.licenses.mit;
|
||||||
|
}
|
@ -2,8 +2,16 @@
|
|||||||
rxvt_unicode.overrideAttrs (old: {
|
rxvt_unicode.overrideAttrs (old: {
|
||||||
patches = old.patches ++ [
|
patches = old.patches ++ [
|
||||||
(fetchurl {
|
(fetchurl {
|
||||||
|
name = "rxvt-unicode.cancel-running-selection-request.patch";
|
||||||
url = https://cgit.krebsco.de/rxvt-unicode/patch/?id=15f3f94;
|
url = https://cgit.krebsco.de/rxvt-unicode/patch/?id=15f3f94;
|
||||||
sha256 = "12vldwsds27c9l15ffc6svk9mj17jhypcz736pvpmpqbsymlkz2p";
|
sha256 = "12vldwsds27c9l15ffc6svk9mj17jhypcz736pvpmpqbsymlkz2p";
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# Fix segfault when calling editor-input from XMonad.
|
||||||
|
(fetchurl {
|
||||||
|
name = "rxvt-unicode.no-perl_destruct.patch";
|
||||||
|
url = "https://cgit.krebsco.de/rxvt-unicode/patch/?id=d63f96a";
|
||||||
|
sha256 = "0i8nqrqgprv7cygflkrdp5zx75dv9bv84vrr2yc3vnfpqxamc43n";
|
||||||
|
})
|
||||||
];
|
];
|
||||||
})
|
})
|
||||||
|
18
tv/5pkgs/simple/editor-input.nix
Normal file
18
tv/5pkgs/simple/editor-input.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{ pkgs }:
|
||||||
|
pkgs.writeDashBin "editor-input" ''
|
||||||
|
exec \
|
||||||
|
${pkgs.utillinux}/bin/setsid -f \
|
||||||
|
${pkgs.with-tmpdir}/bin/with-tmpdir -t editor-input.XXXXXXXX \
|
||||||
|
${pkgs.writeDash "editor-input.sh" ''
|
||||||
|
f=$TMPDIR/input
|
||||||
|
${pkgs.rxvt_unicode}/bin/urxvt -name editor-input-urxvt -e \
|
||||||
|
${pkgs.vim}/bin/vim --cmd ':set noeol binary' -c startinsert "$f"
|
||||||
|
if test -e "$f"; then
|
||||||
|
${pkgs.xsel}/bin/xsel -ip < "$f"
|
||||||
|
${pkgs.xsel}/bin/xsel -ib < "$f"
|
||||||
|
${pkgs.xdotool}/bin/xdotool key --clearmodifiers shift+Insert
|
||||||
|
${pkgs.xsel}/bin/xsel -dp
|
||||||
|
${pkgs.xsel}/bin/xsel -db
|
||||||
|
fi
|
||||||
|
''}
|
||||||
|
''
|
94
tv/5pkgs/simple/rox-filer.nix
Normal file
94
tv/5pkgs/simple/rox-filer.nix
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
{ autoconf, stdenv, fetchFromGitLab, pkgconfig, libxml2, libSM, shared-mime-info
|
||||||
|
, libxslt, docbook_xml_dtd_412, docbook_xsl
|
||||||
|
, gtk ? gtk2, gtk2
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "rox-filer";
|
||||||
|
version = "2.11-tv";
|
||||||
|
|
||||||
|
src = fetchFromGitLab {
|
||||||
|
owner = "seirios";
|
||||||
|
repo = "rox-filer";
|
||||||
|
rev = "3c3ad5d85a1ab548574bf450f730886b60092587";
|
||||||
|
sha256 = "0h743zpx1v9rrsaxn0q3nwpq8wkjf6icgzrg8jpqldsphw3ygkhr";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
autoconf
|
||||||
|
docbook_xsl
|
||||||
|
libxslt
|
||||||
|
pkgconfig
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = [ libxml2 gtk shared-mime-info libSM ];
|
||||||
|
|
||||||
|
# go to the source directory after unpacking the sources
|
||||||
|
setSourceRoot = "export sourceRoot=source/ROX-Filer";
|
||||||
|
|
||||||
|
# patch the main.c to disable the lookup of the APP_DIR environment variable,
|
||||||
|
# which is used to lookup the location for certain images when rox-filer
|
||||||
|
# starts; rather override the location with an absolute path to the directory
|
||||||
|
# where images are stored to prevent having to use a wrapper, which sets the
|
||||||
|
# APP_DIR environment variable prior to starting rox-filer
|
||||||
|
preConfigure = ''
|
||||||
|
(cd src && autoconf)
|
||||||
|
sed -i -e "s:g_strdup(getenv(\"APP_DIR\")):\"$out\":" src/main.c
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
'';
|
||||||
|
|
||||||
|
preBuild = ''
|
||||||
|
for f in \
|
||||||
|
../src/Docs/Manual.xml \
|
||||||
|
../src/Docs/Manual-fr.xml \
|
||||||
|
../src/Docs/Manual-it.xml ;
|
||||||
|
do
|
||||||
|
substituteInPlace "$f" \
|
||||||
|
--replace \
|
||||||
|
/usr/share/sgml/docbook/dtd/xml/4.1.2/docbookx.dtd \
|
||||||
|
${docbook_xml_dtd_412}/xml/dtd/docbook/docbookx.dtd
|
||||||
|
done
|
||||||
|
make -C ../src/Docs MAN=.. || exit 1
|
||||||
|
'';
|
||||||
|
|
||||||
|
configureScript = "../src/configure";
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out"
|
||||||
|
cd ..
|
||||||
|
cp -av Help Messages Options.xml ROX images style.css .DirIcon "$out"
|
||||||
|
|
||||||
|
mkdir -p "$out/share/man/man1"
|
||||||
|
cp -av src/rox.1 "$out/share/man/man1"
|
||||||
|
|
||||||
|
# the main executable
|
||||||
|
mkdir "$out/bin/"
|
||||||
|
cp -v ROX-Filer "$out/bin/rox"
|
||||||
|
|
||||||
|
# mime types
|
||||||
|
mkdir -p "$out/ROX/MIME"
|
||||||
|
cd "$out/ROX/MIME"
|
||||||
|
ln -sv text-x-{diff,patch}.png
|
||||||
|
ln -sv application-x-font-{afm,type1}.png
|
||||||
|
ln -sv application-xml{,-dtd}.png
|
||||||
|
ln -sv application-xml{,-external-parsed-entity}.png
|
||||||
|
ln -sv application-{,rdf+}xml.png
|
||||||
|
ln -sv application-x{ml,-xbel}.png
|
||||||
|
ln -sv application-{x-shell,java}script.png
|
||||||
|
ln -sv application-x-{bzip,xz}-compressed-tar.png
|
||||||
|
ln -sv application-x-{bzip,lzma}-compressed-tar.png
|
||||||
|
ln -sv application-x-{bzip-compressed-tar,lzo}.png
|
||||||
|
ln -sv application-x-{bzip,xz}.png
|
||||||
|
ln -sv application-x-{gzip,lzma}.png
|
||||||
|
ln -sv application-{msword,rtf}.png
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "Fast, lightweight, gtk2 file manager";
|
||||||
|
homepage = "http://rox.sourceforge.net/desktop";
|
||||||
|
license = with licenses; [ gpl2 lgpl2 ];
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = [ maintainers.eleanor ];
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user