feat!: switch to NixOS/HM modules
This commit is contained in:
parent
67e694c060
commit
78b67b490d
14 changed files with 47 additions and 218 deletions
6
.github/dependabot.yml
vendored
6
.github/dependabot.yml
vendored
|
@ -1,6 +0,0 @@
|
||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: github-actions
|
|
||||||
directory: /
|
|
||||||
schedule:
|
|
||||||
interval: weekly
|
|
52
.github/workflows/build.yml
vendored
52
.github/workflows/build.yml
vendored
|
@ -1,52 +0,0 @@
|
||||||
name: "Build and populate cache"
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
schedule:
|
|
||||||
- cron: '12 9 * * *'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
tests:
|
|
||||||
strategy:
|
|
||||||
matrix:
|
|
||||||
nurRepo:
|
|
||||||
- https://gitub.com/catppuccin/nix
|
|
||||||
cachixName:
|
|
||||||
- <YOUR_CACHIX_NAME> # TODO
|
|
||||||
nixPath:
|
|
||||||
- nixpkgs=channel:nixos-unstable
|
|
||||||
- nixpkgs=channel:nixpkgs-unstable
|
|
||||||
- nixpkgs=channel:nixos-22.11
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
- name: Install nix
|
|
||||||
uses: cachix/install-nix-action@v20
|
|
||||||
with:
|
|
||||||
nix_path: "${{ matrix.nixPath }}"
|
|
||||||
extra_nix_config: |
|
|
||||||
experimental-features = nix-command flakes
|
|
||||||
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
|
|
||||||
- name: Show nixpkgs version
|
|
||||||
run: nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version'
|
|
||||||
# - name: Setup cachix
|
|
||||||
# uses: cachix/cachix-action@v12
|
|
||||||
# with:
|
|
||||||
# name: ${{ matrix.cachixName }}
|
|
||||||
# authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
|
||||||
- name: Check evaluation
|
|
||||||
run: |
|
|
||||||
nix-env -f . -qa \* --meta --xml \
|
|
||||||
--allowed-uris https://static.rust-lang.org \
|
|
||||||
--option restrict-eval true \
|
|
||||||
--option allow-import-from-derivation true \
|
|
||||||
--drv-path --show-trace \
|
|
||||||
-I nixpkgs=$(nix-instantiate --find-file nixpkgs) \
|
|
||||||
-I $PWD
|
|
||||||
- name: Build nix packages
|
|
||||||
run: nix shell -f '<nixpkgs>' nix-build-uncached -c nix-build-uncached ci.nix -A cacheOutputs
|
|
||||||
# - name: Trigger NUR update
|
|
||||||
# run: curl -XPOST "https://nur-update.nix-community.org/update?repo=${{ matrix.nurRepo }}"
|
|
53
ci.nix
53
ci.nix
|
@ -1,53 +0,0 @@
|
||||||
# This file provides all the buildable and cacheable packages and
|
|
||||||
# package outputs in your package set. These are what gets built by CI,
|
|
||||||
# so if you correctly mark packages as
|
|
||||||
#
|
|
||||||
# - broken (using `meta.broken`),
|
|
||||||
# - unfree (using `meta.license.free`), and
|
|
||||||
# - locally built (using `preferLocalBuild`)
|
|
||||||
#
|
|
||||||
# then your CI will be able to build and cache only those packages for
|
|
||||||
# which this is possible.
|
|
||||||
|
|
||||||
{ pkgs ? import <nixpkgs> { } }:
|
|
||||||
|
|
||||||
with builtins;
|
|
||||||
let
|
|
||||||
isReserved = n: n == "lib" || n == "overlays" || n == "modules";
|
|
||||||
isDerivation = p: isAttrs p && p ? type && p.type == "derivation";
|
|
||||||
isBuildable = p: !(p.meta.broken or false) && p.meta.license.free or true;
|
|
||||||
isCacheable = p: !(p.preferLocalBuild or false);
|
|
||||||
shouldRecurseForDerivations = p: isAttrs p && p.recurseForDerivations or false;
|
|
||||||
|
|
||||||
nameValuePair = n: v: { name = n; value = v; };
|
|
||||||
|
|
||||||
concatMap = builtins.concatMap or (f: xs: concatLists (map f xs));
|
|
||||||
|
|
||||||
flattenPkgs = s:
|
|
||||||
let
|
|
||||||
f = p:
|
|
||||||
if shouldRecurseForDerivations p then flattenPkgs p
|
|
||||||
else if isDerivation p then [ p ]
|
|
||||||
else [ ];
|
|
||||||
in
|
|
||||||
concatMap f (attrValues s);
|
|
||||||
|
|
||||||
outputsOf = p: map (o: p.${o}) p.outputs;
|
|
||||||
|
|
||||||
nurAttrs = import ./default.nix { inherit pkgs; };
|
|
||||||
|
|
||||||
nurPkgs =
|
|
||||||
flattenPkgs
|
|
||||||
(listToAttrs
|
|
||||||
(map (n: nameValuePair n nurAttrs.${n})
|
|
||||||
(filter (n: !isReserved n)
|
|
||||||
(attrNames nurAttrs))));
|
|
||||||
|
|
||||||
in
|
|
||||||
rec {
|
|
||||||
buildPkgs = filter isBuildable nurPkgs;
|
|
||||||
cachePkgs = filter isCacheable buildPkgs;
|
|
||||||
|
|
||||||
buildOutputs = concatMap outputsOf buildPkgs;
|
|
||||||
cacheOutputs = concatMap outputsOf cachePkgs;
|
|
||||||
}
|
|
20
default.nix
20
default.nix
|
@ -1,20 +0,0 @@
|
||||||
# This file describes your repository contents.
|
|
||||||
# It should return a set of nix derivations
|
|
||||||
# and optionally the special attributes `lib`, `modules` and `overlays`.
|
|
||||||
# It should NOT import <nixpkgs>. Instead, you should take pkgs as an argument.
|
|
||||||
# Having pkgs default to <nixpkgs> is fine though, and it lets you use short
|
|
||||||
# commands such as:
|
|
||||||
# nix-build -A mypackage
|
|
||||||
|
|
||||||
{ pkgs ? import <nixpkgs> { } }:
|
|
||||||
|
|
||||||
{
|
|
||||||
# The `lib`, `modules`, and `overlay` names are special
|
|
||||||
lib = import ./lib { inherit pkgs; }; # functions
|
|
||||||
modules = import ./modules; # NixOS modules
|
|
||||||
overlays = import ./overlays; # nixpkgs overlays
|
|
||||||
|
|
||||||
example-package = pkgs.callPackage ./pkgs/example-package { };
|
|
||||||
# some-qt5-package = pkgs.libsForQt5.callPackage ./pkgs/some-qt5-package { };
|
|
||||||
# ...
|
|
||||||
}
|
|
27
flake.lock
27
flake.lock
|
@ -1,27 +0,0 @@
|
||||||
{
|
|
||||||
"nodes": {
|
|
||||||
"nixpkgs": {
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1624561540,
|
|
||||||
"narHash": "sha256-izJ2PYZMGMsSkg+e7c9A1x3t/yOLT+qzUM6WQsc2tqo=",
|
|
||||||
"owner": "NixOS",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"rev": "c6a049a3d32293b24c0f894a840872cf67fd7c11",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "NixOS",
|
|
||||||
"ref": "nixpkgs-unstable",
|
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": "nixpkgs"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"root": "root",
|
|
||||||
"version": 7
|
|
||||||
}
|
|
25
flake.nix
25
flake.nix
|
@ -1,21 +1,8 @@
|
||||||
{
|
{
|
||||||
description = "My personal NUR repository";
|
description = "Soothing pastel theme for Nix";
|
||||||
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
inputs = {};
|
||||||
outputs = { self, nixpkgs }:
|
outputs = { self }: {
|
||||||
let
|
nixosModules.default = import ./nixos;
|
||||||
systems = [
|
homeManagerModules.default = import ./home-manager;
|
||||||
"x86_64-linux"
|
};
|
||||||
"i686-linux"
|
|
||||||
"x86_64-darwin"
|
|
||||||
"aarch64-linux"
|
|
||||||
"armv6l-linux"
|
|
||||||
"armv7l-linux"
|
|
||||||
];
|
|
||||||
forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f system);
|
|
||||||
in
|
|
||||||
{
|
|
||||||
packages = forAllSystems (system: import ./default.nix {
|
|
||||||
pkgs = import nixpkgs { inherit system; };
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
31
home-manager/bat.nix
Normal file
31
home-manager/bat.nix
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{ config, pkgs, lib, ... }: {
|
||||||
|
options.programs.bat.catppuccin = {
|
||||||
|
enable = lib.mkEnableOption "Catppuccin";
|
||||||
|
flavour = lib.mkOption {
|
||||||
|
type = lib.types.enum [ "latte" "frappe" "macchiato" "mocha" ];
|
||||||
|
default = config.catppuccin.flavour;
|
||||||
|
description = "Catppuccin flavour for bat";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = let
|
||||||
|
cfg = config.programs.bat.catppuccin;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.activation = {
|
||||||
|
batCache = "${pkgs.bat}/bin/bat cache --build";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.bat = lib.mkIf cfg.enable {
|
||||||
|
enable = true;
|
||||||
|
config.theme = "Catppuccin-${cfg.flavour}";
|
||||||
|
themes."Catppuccin-${cfg.flavour}" = builtins.readFile (pkgs.fetchFromGitHub
|
||||||
|
{
|
||||||
|
owner = "catppuccin";
|
||||||
|
repo = "bat";
|
||||||
|
rev = "ba4d16880d63e656acced2b7d4e034e4a93f74b1";
|
||||||
|
sha256 = "sha256-6WVKQErGdaqb++oaXnY3i6/GuH2FhTgK0v4TN4Y0Wbw=";
|
||||||
|
} + /Catppuccin-${cfg.flavour}.tmTheme);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
9
home-manager/default.nix
Normal file
9
home-manager/default.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ config, pkgs, lib, ... }: {
|
||||||
|
options.catppuccin = {
|
||||||
|
flavour = lib.mkOption {
|
||||||
|
type = lib.types.enum [ "latte" "frappe" "macchiato" "mocha" ];
|
||||||
|
default = "latte";
|
||||||
|
description = "Global Catppuccin flavour";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,7 +0,0 @@
|
||||||
{ pkgs }:
|
|
||||||
|
|
||||||
with pkgs.lib; {
|
|
||||||
# Add your library functions here
|
|
||||||
#
|
|
||||||
# hexint = x: hexvals.${toLower x};
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
# Add your NixOS modules here
|
|
||||||
#
|
|
||||||
# my-module = ./my-module;
|
|
||||||
}
|
|
1
nixos/default.nix
Normal file
1
nixos/default.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{ pkgs, lib, ... }: {}
|
15
overlay.nix
15
overlay.nix
|
@ -1,15 +0,0 @@
|
||||||
# You can use this file as a nixpkgs overlay. This is useful in the
|
|
||||||
# case where you don't want to add the whole NUR namespace to your
|
|
||||||
# configuration.
|
|
||||||
|
|
||||||
self: super:
|
|
||||||
let
|
|
||||||
isReserved = n: n == "lib" || n == "overlays" || n == "modules";
|
|
||||||
nameValuePair = n: v: { name = n; value = v; };
|
|
||||||
nurAttrs = import ./default.nix { pkgs = super; };
|
|
||||||
|
|
||||||
in
|
|
||||||
builtins.listToAttrs
|
|
||||||
(map (n: nameValuePair n nurAttrs.${n})
|
|
||||||
(builtins.filter (n: !isReserved n)
|
|
||||||
(builtins.attrNames nurAttrs)))
|
|
|
@ -1,5 +0,0 @@
|
||||||
{
|
|
||||||
# Add your overlays here
|
|
||||||
#
|
|
||||||
# my-overlay = import ./my-overlay;
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{ stdenv }:
|
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
|
||||||
name = "example-package-${version}";
|
|
||||||
version = "1.0";
|
|
||||||
src = ./.;
|
|
||||||
buildPhase = "echo echo Hello World > example";
|
|
||||||
installPhase = "install -Dm755 example $out";
|
|
||||||
}
|
|
Loading…
Reference in a new issue