6 Commits

Author SHA1 Message Date
George Shammas
9e649a1c2e Update flake.lock 2022-01-04 20:35:27 -05:00
George Shammas
c22766233e Update test.yml 2022-01-04 20:29:59 -05:00
George Shammas
45aaf5f0f3 Update test.yml 2022-01-04 20:29:59 -05:00
George Shammas
e0726c0996 Update test.yml 2022-01-04 20:29:59 -05:00
George Shammas
ff2f51ddf2 flake update 2022-01-04 20:29:58 -05:00
George Shammas
3229003474 Test actions 2022-01-04 20:29:30 -05:00
3 changed files with 97 additions and 41 deletions

37
.github/workflows/test.yml vendored Normal file
View File

@@ -0,0 +1,37 @@
name: "Test"
on:
pull_request:
push:
jobs:
test-nix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
# Nix Flakes doesn't work on shallow clones
fetch-depth: 0
- uses: cachix/install-nix-action@v16
with:
nix_path: nixpkgs=channel:nixos-unstable
extra_nix_config: |
experimental-features = nix-command flakes
system-features = nixos-test benchmark big-parallel kvm
- run: nix-build
test:
strategy:
matrix:
go-version: [ 1.14.x, 1.15.x, 1.16.x ]
os: [ ubuntu-latest ]
runs-on: ${{ matrix.os }}
steps:
- name: Install Go
uses: actions/setup-go@v2
with:
go-version: ${{ matrix.go-version }}
- name: Checkout code
uses: actions/checkout@v2
- name: Format
run: if [ "$(gofmt -s -l . | wc -l)" -gt 0 ]; then exit 1; fi
if: matrix.os == 'ubuntu-latest'
- name: Test
run: go test -race ./...

44
flake.lock generated
View File

@@ -16,17 +16,53 @@
"type": "github"
}
},
"flake-utils": {
"locked": {
"lastModified": 1638122382,
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "74f7e4319258e287b0f9cb95426c9853b282730b",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"nix-bundle": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1626704917,
"narHash": "sha256-cJ73kxY5ZCPWQeQZyCSdvkBqjqJkU5wgETBNaXfqF18=",
"owner": "matthewbauer",
"repo": "nix-bundle",
"rev": "223f4ffc4179aa318c34dc873a08cb00090db829",
"type": "github"
},
"original": {
"owner": "matthewbauer",
"repo": "nix-bundle",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1641334250,
"narHash": "sha256-phZavHnNA98Ub5gDeNFUt7fI4Y1S0mnGzqY4MCCgBNI=",
"lastModified": 1641230035,
"narHash": "sha256-hFyqihERaTbLxCOlugy/rpp22VLtLh8SPRnA2uu3F/8=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "27ff8d72f5c9c38ca073f73dd0ae74e676fbb4f7",
"rev": "78cd22c1b8604de423546cd49bfe264b786eca13",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
@@ -34,6 +70,8 @@
"root": {
"inputs": {
"flake-compat": "flake-compat",
"flake-utils": "flake-utils",
"nix-bundle": "nix-bundle",
"nixpkgs": "nixpkgs"
}
}

View File

@@ -1,13 +1,15 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
flake-utils.url = "github:numtide/flake-utils";
nix-bundle = {url = "github:matthewbauer/nix-bundle"; inputs.nixpkgs.follows = "nixpkgs"; };
};
outputs = { self, nixpkgs, ... }:
outputs = { self, nixpkgs, flake-utils, nix-bundle, ... }:
let
version = builtins.replaceStrings [ "\n" ] [ "" ]
@@ -21,20 +23,12 @@
officialRelease = false;
systems = [ "x86_64-linux" "i686-linux" "aarch64-linux" "x86_64-darwin" ];
forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system);
in flake-utils.lib.eachDefaultSystem (system:
let pkgs = nixpkgs.legacyPackages.${system};
in rec {
# Memoize nixpkgs for different platforms for efficiency.
nixpkgsFor = forAllSystems (system:
import nixpkgs {
inherit system;
overlays = [ self.overlay ];
});
in {
overlay = final: prev: {
ifconfigio = with final;
with pkgs;
(buildGoModule {
packages = flake-utils.lib.flattenTree rec {
ifconfigio = pkgs.buildGoModule {
name = "ifconfig.io-${version}";
src = self;
@@ -44,40 +38,27 @@
mkdir -p $out/usr/lib/ifconfig.io/
cp -r ./templates $out/usr/lib/ifconfig.io
'';
};
});
ifconfigio-docker = with final;
with pkgs;
(dockerTools.buildLayeredImage {
docker-image = pkgs.dockerTools.buildLayeredImage {
name = "ifconfig.io";
tag = version;
created = "now";
contents = [ ifconfigio busybox ];
contents = [ ifconfigio pkgs.busybox ];
config = {
Cmd = "/bin/ifconfig.io";
WorkingDir = "/usr/lib/ifconfig.io";
ExposedPorts = { "8080" = { }; };
Env = [ "HOSTNAME=ifconfig.io" "TLS=0" "TLSCERT=" "TLSKEY=" ];
};
});
};
packages = forAllSystems (system: {
inherit (nixpkgsFor.${system}) ifconfigio ifconfigio-docker;
});
defaultPackage =
forAllSystems (system: self.packages.${system}.ifconfigio);
};
nixosModules.ifconfigio = { pkgs, ... }: {
nixpkgs.overlays = [ self.overlay ];
systemd.packages = [ pkgs.ifconfigio ];
users.users.ifconfigio = {
description = "ifconfig.io daemon user";
group = "ifconfigio";
isSystemUser = true;
};
users.groups.ifconfigio = { };
};
defaultPackage = packages.ifconfigio;
apps.ifconfigio = { type = "app"; program = "${packages.ifconfigio}/bin/ifconfig.io"; };
defaultApp = apps.ifconfigio;
};
defaultBundler = nix-bundle.bundlers.nix-bundle;
});
}