Initial commit
This commit is contained in:
commit
c56d09816f
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
result
|
||||||
|
|
66
README.md
Normal file
66
README.md
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
# Nix samples
|
||||||
|
|
||||||
|
## Existing samples
|
||||||
|
|
||||||
|
* hello-world: Sample local C program;
|
||||||
|
* hello-world-github: Some github hosted program, built against Wayland;
|
||||||
|
* hello-world-callpackage: A basic callPackage usage;
|
||||||
|
* hello-world-go: Basic usage of buildGoModule;
|
||||||
|
* hello-world-docker: A docker image of a binary extracted from another derivation;
|
||||||
|
* simple-shell: Some shells;
|
||||||
|
* hello-versions: Choosing some package version;
|
||||||
|
* samples: A directory with found exicting recipes!
|
||||||
|
|
||||||
|
|
||||||
|
## Building, running, deleting
|
||||||
|
|
||||||
|
### hello-world
|
||||||
|
|
||||||
|
```sh
|
||||||
|
> cd /path/to/nix-samples
|
||||||
|
> nix-build hello-world/default.nix
|
||||||
|
this derivation will be built:
|
||||||
|
/nix/store/rwi8d1fv4hnpl194pi2cj7ikph2k5ny8-hello.drv
|
||||||
|
building '/nix/store/rwi8d1fv4hnpl194pi2cj7ikph2k5ny8-hello.drv'...
|
||||||
|
Running phase: unpackPhase
|
||||||
|
unpacking source archive /nix/store/29265kg6m3mzgf7rhfqjx34dwhgn9p4g-src
|
||||||
|
...
|
||||||
|
stripping (with command strip and flags -S -p) in /nix/store/4nzxqrm1gddddwlz55c2q398p0si4qhf-hello/bin
|
||||||
|
/nix/store/4nzxqrm1gddddwlz55c2q398p0si4qhf-hello
|
||||||
|
|
||||||
|
> nix profile install /nix/store/4nzxqrm1gddddwlz55c2q398p0si4qhf-hello
|
||||||
|
> nix profile list
|
||||||
|
Name: hello
|
||||||
|
Store paths: /nix/store/4nzxqrm1gddddwlz55c2q398p0si4qhf-hello
|
||||||
|
|
||||||
|
> hello
|
||||||
|
/home/mycroft/.nix-profile/bin/hello
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
Note: `~/.nix-profile/bin` was added in $PATH.
|
||||||
|
|
||||||
|
Prior to remove it, it must be unlinked from the profile and the build:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
> nix-store --query --roots /nix/store/4nzxqrm1gddddwlz55c2q398p0si4qhf-hello
|
||||||
|
/home/mycroft/.local/state/nix/profiles/profile-7-link -> /nix/store/53zlkdqd1m2wdgi2a9q390ld9gkkkydf-profile
|
||||||
|
/home/mycroft/dev/nix-samples/result -> /nix/store/4nzxqrm1gddddwlz55c2q398p0si4qhf-hello
|
||||||
|
|
||||||
|
> nix profile remove /nix/store/4nzxqrm1gddddwlz55c2q398p0si4qhf-hello
|
||||||
|
removing 'hello'
|
||||||
|
|
||||||
|
>
|
||||||
|
```
|
||||||
|
|
||||||
|
It will be needed to wipe the profile history and the `result` link to be able to `nix-store --delete` or `nix-collect-garbage`.
|
||||||
|
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
* callPackage: https://summer.nixos.org/blog/callpackage-a-tool-for-the-lazy/
|
||||||
|
* dockerfiles:
|
||||||
|
* https://nix.dev/tutorials/nixos/building-and-running-docker-images.html
|
||||||
|
* https://mitchellh.com/writing/nix-with-dockerfiles
|
||||||
|
* https://jameswillia.ms/posts/go-nix-containers.html
|
||||||
|
|
5
TODO.md
Normal file
5
TODO.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
# Todo
|
||||||
|
|
||||||
|
* Fix hello-derivation: it tries to build hello with nobody:nogroup permissions.
|
||||||
|
* Adding a nix-build with bazel (sample2 from test-nix-bazel);
|
||||||
|
* Adding flake builds (including a build with bazel - sample3);
|
101
flake-basic/README.md
Normal file
101
flake-basic/README.md
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
# flakes
|
||||||
|
|
||||||
|
Do not forget to `git add` the `flake.nix` file! Or you'll face the `does not exist` error.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
> nix flake check
|
||||||
|
|
||||||
|
> nix build
|
||||||
|
|
||||||
|
> nix flake show
|
||||||
|
```
|
||||||
|
|
||||||
|
## Simplying
|
||||||
|
|
||||||
|
First step:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
outputs = inputs: {
|
||||||
|
packages."x86_64-linux".default = derivation {
|
||||||
|
name = "simple";
|
||||||
|
builder = "${inputs.nixpkgs.legacyPackages."x86_64-linux".bash}/bin/bash";
|
||||||
|
args = [ "-c" "echo foo > $out" ];
|
||||||
|
src = ./.;
|
||||||
|
system = "x86_64-linux";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Second step:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
outputs = { self, nixpkgs }: {
|
||||||
|
packages."x86_64-linux".default = derivation {
|
||||||
|
name = "simple";
|
||||||
|
builder = "${nixpkgs.legacyPackages."x86_64-linux".bash}/bin/bash";
|
||||||
|
args = [ "-c" "echo foo > $out" ];
|
||||||
|
src = ./.;
|
||||||
|
system = "x86_64-linux";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Third:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
outputs = { self, nixpkgs }:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
packages.${system}.default = derivation {
|
||||||
|
name = "simple";
|
||||||
|
builder = "${nixpkgs.legacyPackages.${system}.bash}/bin/bash";
|
||||||
|
args = [ "-c" "echo foo > $out" ];
|
||||||
|
src = ./.;
|
||||||
|
system = system;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Fourth:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
outputs = { self, nixpkgs }:
|
||||||
|
let
|
||||||
|
name = "simple";
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
src = ./.;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
packages.${system}.default = derivation {
|
||||||
|
inherit name src system;
|
||||||
|
builder = with pkgs; "${bash}/bin/bash";
|
||||||
|
args = [ "-c" "echo foo > $out" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
27
flake-basic/flake.lock
Normal file
27
flake-basic/flake.lock
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710631334,
|
||||||
|
"narHash": "sha256-rL5LSYd85kplL5othxK5lmAtjyMOBg390sGBTb3LRMM=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c75037bbf9093a2acb617804ee46320d6d1fea5a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
19
flake-basic/flake.nix
Normal file
19
flake-basic/flake.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
outputs = { self, nixpkgs }:
|
||||||
|
let
|
||||||
|
name = "simple";
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
src = ./.;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
packages.${system}.default = derivation {
|
||||||
|
inherit name src system;
|
||||||
|
builder = with pkgs; "${bash}/bin/bash";
|
||||||
|
args = [ "-c" "echo foo > $out" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
19
flake-multi-platform/README.md
Normal file
19
flake-multi-platform/README.md
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# flake-multi-platform
|
||||||
|
|
||||||
|
```
|
||||||
|
> nix build
|
||||||
|
...
|
||||||
|
|
||||||
|
> nix flake show
|
||||||
|
warning: Git tree '/home/mycroft/dev/nix-samples' is dirty
|
||||||
|
git+file:///home/mycroft/dev/nix-samples?dir=flake-multi-platform
|
||||||
|
└───packages
|
||||||
|
├───aarch64-darwin
|
||||||
|
│ └───default omitted (use '--all-systems' to show)
|
||||||
|
├───aarch64-linux
|
||||||
|
│ └───default omitted (use '--all-systems' to show)
|
||||||
|
├───x86_64-darwin
|
||||||
|
│ └───default omitted (use '--all-systems' to show)
|
||||||
|
└───x86_64-linux
|
||||||
|
└───default: package 'simple'
|
||||||
|
```
|
61
flake-multi-platform/flake.lock
Normal file
61
flake-multi-platform/flake.lock
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710146030,
|
||||||
|
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1710631334,
|
||||||
|
"narHash": "sha256-rL5LSYd85kplL5othxK5lmAtjyMOBg390sGBTb3LRMM=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "c75037bbf9093a2acb617804ee46320d6d1fea5a",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
25
flake-multi-platform/flake.nix
Normal file
25
flake-multi-platform/flake.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
outputs = { self, nixpkgs, flake-utils }:
|
||||||
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
# no need to define `system` anymore
|
||||||
|
name = "simple";
|
||||||
|
src = ./.;
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# `eachDefaultSystem` transforms the input, our output set
|
||||||
|
# now simply has `packages.default` which gets turned into
|
||||||
|
# `packages.${system}.default` (for each system)
|
||||||
|
packages.default = derivation {
|
||||||
|
inherit system name src;
|
||||||
|
builder = with pkgs; "${bash}/bin/bash";
|
||||||
|
args = [ "-c" "echo foo > $out" ];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
16
hello-derivation/default.nix
Normal file
16
hello-derivation/default.nix
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
let
|
||||||
|
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-23.05";
|
||||||
|
pkgs = import nixpkgs { config = {}; overlays = []; };
|
||||||
|
in
|
||||||
|
derivation {
|
||||||
|
name = "hello";
|
||||||
|
builder = "${pkgs.bash}/bin/bash";
|
||||||
|
args = [ ./hello_builder.sh ];
|
||||||
|
inherit (pkgs) gnutar gzip gnumake gcc coreutils gawk gnused gnugrep;
|
||||||
|
bintools = pkgs.binutils.bintools;
|
||||||
|
src = pkgs.fetchzip {
|
||||||
|
url = "https://ftp.gnu.org/gnu/hello/hello-2.12.1.tar.gz";
|
||||||
|
sha256 = "sha256-1kJjhtlsAkpNB7f6tZEs+dbKd8z7KoNHyDHEJ0tmhnc=";
|
||||||
|
};
|
||||||
|
system = builtins.currentSystem;
|
||||||
|
}
|
12
hello-derivation/hello_builder.sh
Normal file
12
hello-derivation/hello_builder.sh
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
export PATH="$gnutar/bin:$gcc/bin:$gnumake/bin:$coreutils/bin:$gawk/bin:$gzip/bin:$gnugrep/bin:$gnused/bin:$bintools/bin"
|
||||||
|
|
||||||
|
echo $src
|
||||||
|
# I guess changing nixos version will change behavior of how fetchzip or something.
|
||||||
|
# This script differs from the version used against <nixpkgs>.
|
||||||
|
cd $src
|
||||||
|
ls -l
|
||||||
|
./configure --prefix=$out
|
||||||
|
make
|
||||||
|
make install
|
16
hello-versions/shell.nix
Normal file
16
hello-versions/shell.nix
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
# https://lazamar.co.uk/nix-versions/
|
||||||
|
|
||||||
|
# The following will:
|
||||||
|
# - load <nixpkgs> to get the pkgs.mkShell lambda
|
||||||
|
# - load the given tarball (zsh 5.4.2 in channel unstable)
|
||||||
|
# - start a shell with this old version of zsh
|
||||||
|
|
||||||
|
{
|
||||||
|
oldpkgs ? (import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/473b58f20e491312a03c9c1578c89116e39a1d50.tar.gz") {}),
|
||||||
|
pkgs ? (import <nixpkgs> {})
|
||||||
|
}:
|
||||||
|
pkgs.mkShell {
|
||||||
|
packages = [
|
||||||
|
oldpkgs.zsh
|
||||||
|
];
|
||||||
|
}
|
20
hello-world-callpackage/build.nix
Normal file
20
hello-world-callpackage/build.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchzip,
|
||||||
|
version,
|
||||||
|
hash,
|
||||||
|
}:
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
pname = "hello";
|
||||||
|
version = "${version}";
|
||||||
|
src = fetchzip {
|
||||||
|
url = "https://ftp.gnu.org/gnu/hello/hello-${version}.tar.gz";
|
||||||
|
hash = "${hash}";
|
||||||
|
};
|
||||||
|
installPhase = ''
|
||||||
|
./hello --version
|
||||||
|
mkdir -p $out/bin
|
||||||
|
cp hello $out/bin/hello
|
||||||
|
'';
|
||||||
|
}
|
10
hello-world-callpackage/default.nix
Normal file
10
hello-world-callpackage/default.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
|
let
|
||||||
|
commonBuild = import ./build.nix;
|
||||||
|
callPackageForVersion = { version, hash }: pkgs.callPackage commonBuild { version = version; hash = hash; };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
p0 = callPackageForVersion { version = "2.11"; hash = "sha256-1nXiB0vMCmMYmikTopb/j5WKFwHkc7xoLOqL9/bDFak="; };
|
||||||
|
p1 = callPackageForVersion { version = "2.12"; hash = "sha256-4GQeKLIxoWfYiOraJub5RsHNVQBr2H+3bfPP22PegdU="; };
|
||||||
|
p2 = callPackageForVersion { version = "2.12.1"; hash = "sha256-1kJjhtlsAkpNB7f6tZEs+dbKd8z7KoNHyDHEJ0tmhnc="; };
|
||||||
|
}
|
10
hello-world-docker/default.nix
Normal file
10
hello-world-docker/default.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# From https://nix.dev/tutorials/nixos/building-and-running-docker-images.html
|
||||||
|
{ pkgs ? import <nixpkgs> { }
|
||||||
|
, pkgsLinux ? import <nixpkgs> { system = "x86_64-linux"; }
|
||||||
|
}:
|
||||||
|
pkgs.dockerTools.buildImage {
|
||||||
|
name = "hello-docker";
|
||||||
|
config = {
|
||||||
|
Cmd = [ "${pkgsLinux.hello}/bin/hello" ];
|
||||||
|
};
|
||||||
|
}
|
38
hello-world-github/default.nix
Normal file
38
hello-world-github/default.nix
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
with import <nixpkgs> {}; stdenv.mkDerivation {
|
||||||
|
name = "hello";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "emersion";
|
||||||
|
repo = "hello-wayland";
|
||||||
|
rev = "5f3a35def81116f0a74fcaf5a421d66c6700482d";
|
||||||
|
hash = "sha256-gcLR8gosQlPPgFrxqmRQ6/59RjAfJNX6CcsYP+L+A58=";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
# buildInputs are for programs and libraries used by the new derivation at run-time
|
||||||
|
buildInputs = [
|
||||||
|
wayland
|
||||||
|
wayland-protocols
|
||||||
|
];
|
||||||
|
# nativeBuildInputs are for programs and libraries used at build-time that, if they are a compiler or similar tool,
|
||||||
|
# produce code to run at run-time—i.e. tools used to build the new derivation
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
coreutils
|
||||||
|
gcc
|
||||||
|
imagemagick
|
||||||
|
pkg-config
|
||||||
|
];
|
||||||
|
|
||||||
|
configurePhase = ''
|
||||||
|
echo "Nope"
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
make
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out/bin"
|
||||||
|
cp ./hello-wayland "$out/bin/"
|
||||||
|
'';
|
||||||
|
}
|
14
hello-world-go/default.nix
Normal file
14
hello-world-go/default.nix
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
with import <nixpkgs> {}; buildGoModule {
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "eliben";
|
||||||
|
repo = "static-server";
|
||||||
|
rev = "c4f0c0c3fa1ab24de43e3f25fc2eaa17d76be078";
|
||||||
|
sha256 = "sha256-Lae5fWcW+rGkyGMIlOH3DVCjE+JiAGVgLi+s/5p08cc=";
|
||||||
|
};
|
||||||
|
name = "static-server";
|
||||||
|
vendorHash = "sha256-1p3dCLLo+MTPxf/Y3zjxTagUi+tq7nZSj4ZB/aakJGY=";
|
||||||
|
|
||||||
|
checkPhase = ''
|
||||||
|
echo "bypass tests..."
|
||||||
|
'';
|
||||||
|
}
|
26
hello-world/default.nix
Normal file
26
hello-world/default.nix
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
with import <nixpkgs> {}; stdenv.mkDerivation {
|
||||||
|
name = "hello";
|
||||||
|
|
||||||
|
# Source Code
|
||||||
|
# See: https://nixos.org/nixpkgs/manual/#ssec-unpack-phase
|
||||||
|
src = ./src;
|
||||||
|
|
||||||
|
# Dependencies
|
||||||
|
# See: https://nixos.org/nixpkgs/manual/#ssec-stdenv-dependencies
|
||||||
|
buildInputs = [ coreutils gcc ];
|
||||||
|
|
||||||
|
# Build Phases
|
||||||
|
# See: https://nixos.org/nixpkgs/manual/#sec-stdenv-phases
|
||||||
|
configurePhase = ''
|
||||||
|
declare -xp
|
||||||
|
'';
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
gcc "$src/hello.c" -o ./hello
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
mkdir -p "$out/bin"
|
||||||
|
cp ./hello "$out/bin/"
|
||||||
|
'';
|
||||||
|
}
|
8
hello-world/src/hello.c
Normal file
8
hello-world/src/hello.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
int main(int argn, char **argv)
|
||||||
|
{
|
||||||
|
printf("hello world!\n");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
3
samples/shaka-packager/README.md
Normal file
3
samples/shaka-packager/README.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
# shaka-packager
|
||||||
|
|
||||||
|
Source: https://fasterthanli.me/series/building-a-rust-service-with-nix/part-9#a-real-world-mkderivation
|
30
samples/shaka-packager/default.nix
Normal file
30
samples/shaka-packager/default.nix
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
with
|
||||||
|
(import <nixpkgs> { });
|
||||||
|
let
|
||||||
|
version = "2.6.1";
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation
|
||||||
|
{
|
||||||
|
name = "shaka-packager-${version}";
|
||||||
|
|
||||||
|
# https://nixos.wiki/wiki/Packaging/Binaries
|
||||||
|
src = pkgs.fetchurl {
|
||||||
|
url =
|
||||||
|
"https://github.com/shaka-project/shaka-packager/releases/download/v${version}/packager-linux-x64";
|
||||||
|
sha256 = "sha256-MoMX6PEtvPmloXJwRpnC2lHlT+tozsV4dmbCqweyyI0=";
|
||||||
|
};
|
||||||
|
|
||||||
|
dontUnpack = true;
|
||||||
|
sourceRoot = ".";
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
install -m755 -D $src $out/bin/shaka-packager
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://shaka-project.github.io/shaka-packager/html/";
|
||||||
|
description =
|
||||||
|
"Media packaging framework for VOD and Live DASH and HLS applications";
|
||||||
|
platforms = platforms.x86_64-linux;
|
||||||
|
};
|
||||||
|
}
|
20
simple-shell/README.md
Normal file
20
simple-shell/README.md
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# shell
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
```sh
|
||||||
|
> nix-shell shell.nix --command "cowsay hey"
|
||||||
|
_____
|
||||||
|
< hey >
|
||||||
|
-----
|
||||||
|
\ ^__^
|
||||||
|
\ (oo)\_______
|
||||||
|
(__)\ )\/\
|
||||||
|
||----w |
|
||||||
|
|| ||
|
||||||
|
|
||||||
|
> nix-shell shell2.nix --command "nvim --version"
|
||||||
|
NVIM v0.9.5
|
||||||
|
Build type: Release
|
||||||
|
LuaJIT 2.1.1693350652
|
||||||
|
```
|
7
simple-shell/shell.nix
Normal file
7
simple-shell/shell.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
with
|
||||||
|
import <nixpkgs> {};
|
||||||
|
mkShell {
|
||||||
|
packages = [
|
||||||
|
cowsay
|
||||||
|
];
|
||||||
|
}
|
9
simple-shell/shell2.nix
Normal file
9
simple-shell/shell2.nix
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs ? import <nixpkgs> { } }:
|
||||||
|
with pkgs;
|
||||||
|
mkShell
|
||||||
|
{
|
||||||
|
packages = [
|
||||||
|
neovim
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user