Compare commits
4 commits
75f5d7ee9d
...
3e37f1fbd4
Author | SHA1 | Date | |
---|---|---|---|
3e37f1fbd4 | |||
33708ea922 | |||
bb3c272119 | |||
77ef7434f2 |
10 changed files with 53 additions and 47 deletions
18
default.nix
18
default.nix
|
@ -3,16 +3,8 @@
|
|||
# if evaluating inside the store, import the outputs.nix file
|
||||
|
||||
let
|
||||
contains = str: substr: let
|
||||
str_length = builtins.stringLength str;
|
||||
substr_length = builtins.stringLength substr;
|
||||
listOfPossibleSubstrings = builtins.genList (i: builtins.substring i substr_length str) (str_length - substr_length + 1);
|
||||
in if substr_length > str_length then false else builtins.any (x: x == substr) listOfPossibleSubstrings;
|
||||
|
||||
endsWith = str: substr: let
|
||||
str_length = builtins.stringLength str;
|
||||
substr_length = builtins.stringLength substr;
|
||||
in if substr_length > str_length then false else builtins.substring (str_length - substr_length) str_length str == substr;
|
||||
# Ideally this file should not depend on nixpkgs lib itself, but I like the utilities here
|
||||
lib = (import "${(import ./inputs.nix {}).nixpkgs}/lib");
|
||||
|
||||
gitignore = builtins.filter (v:
|
||||
# ignore comments and empty lines
|
||||
|
@ -32,11 +24,11 @@ let
|
|||
if pattern == "*" then true
|
||||
else if pattern == ".*" then true
|
||||
else if pattern == "*.*" then true
|
||||
else if builtins.substring 0 2 pattern == "*." then endsWith path (builtins.substring 0 2 pattern)
|
||||
else if contains pattern "*" then abort unsupportedPatternMessage
|
||||
else if builtins.substring 0 2 pattern == "*." then lib.hasSuffix (builtins.substring 0 2 pattern) path
|
||||
else if lib.hasInfix "*" pattern then abort unsupportedPatternMessage
|
||||
else if patternLength > 2 && builtins.substring 0 2 pattern == "./" then abort unsupportedPatternMessage
|
||||
else if patternLength > 1 && builtins.substring 0 1 pattern == "/" then abort unsupportedPatternMessage
|
||||
else contains path pattern
|
||||
else lib.hasInfix pattern path
|
||||
) gitignore;
|
||||
|
||||
currentFilePath = (builtins.unsafeGetAttrPos "any" { any = "any"; }).file;
|
||||
|
|
|
@ -15,6 +15,11 @@ let self = {
|
|||
url = "https://github.com/NixOS/nixpkgs/archive/${lock.nixpkgs.revision}.tar.gz";
|
||||
sha256 = "${lock.nixpkgs.sha256}";
|
||||
};
|
||||
nixpkgs-unstable = builtins.fetchTarball {
|
||||
name = "nixpkgs-unstable";
|
||||
url = "https://github.com/NixOS/nixpkgs/archive/${lock.nixpkgs-unstable.revision}.tar.gz";
|
||||
sha256 = "${lock.nixpkgs-unstable.sha256}";
|
||||
};
|
||||
cosmic-modules = builtins.fetchTarball {
|
||||
name = "cosmic-modules";
|
||||
url = "https://github.com/lilyinstarlight/nixos-cosmic/archive/${lock.cosmic-modules.revision}.tar.gz";
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
{ inputs ? import ../../inputs.nix {} }:
|
||||
{ revision }:
|
||||
|
||||
selfLib: superLib: {
|
||||
trivial = superLib.trivial // {
|
||||
versionSuffix = ".git.${builtins.substring 0 12 inputs.lock.nixpkgs.revision}";
|
||||
revisionWithDefault = default: inputs.lock.nixpkgs.revision or default;
|
||||
versionSuffix = ".git.${builtins.substring 0 12 revision}";
|
||||
revisionWithDefault = default: revision;
|
||||
};
|
||||
}
|
||||
|
|
4
lock.nix
4
lock.nix
|
@ -7,6 +7,10 @@
|
|||
revision = "3f0a8ac25fb674611b98089ca3a5dd6480175751";
|
||||
sha256 = "10i7fllqjzq171afzhdf2d9r1pk9irvmq5n55h92rc47vlaabvr4";
|
||||
};
|
||||
nixpkgs-unstable = {
|
||||
revision = "130595eba61081acde9001f43de3248d8888ac4a";
|
||||
sha256 = "0sw7zg4gal3wpz51ch1v36pdan9z73d4f3yrggh8h2clxs8jdgsx";
|
||||
};
|
||||
cosmic-modules = {
|
||||
revision = "a934c861065b6b1aca9a859c45631336e0e8560c";
|
||||
sha256 = "1p0hs2z1h9fl25qvrlprf63cj1v0m7hr2y051mykjvdxikvn5a47";
|
||||
|
|
|
@ -1,8 +1,14 @@
|
|||
{config, pkgs, lib, ...}:
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
self,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.unstable;
|
||||
unstableOverlay = import ../pkgs/overlays/unstable.nix;
|
||||
unstableOverlay = self.overlays.unstableWithMeta;
|
||||
in
|
||||
{
|
||||
options.unstable = {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
let
|
||||
|
||||
lib = (import "${inputs.nixpkgs}/lib").extend (import ./lib/overlays/version-info-fixup.nix { inherit inputs; });
|
||||
lib = (import "${inputs.nixpkgs}/lib").extend (import ./lib/overlays/version-info-fixup.nix { revision = inputs.lock.nixpkgs.revision; });
|
||||
|
||||
self = {
|
||||
inherit inputs lib self;
|
||||
|
@ -15,7 +15,7 @@ self = {
|
|||
overlays = {
|
||||
cosmicPackages = import ./pkgs/overlays/cosmic-packages.nix { inherit inputs; };
|
||||
selfExpr = import ./pkgs/overlays/selfExpr.nix { nixpkgsPath = inputs.nixpkgs; };
|
||||
unstable = import ./pkgs/overlays/unstable.nix;
|
||||
unstableWithMeta = import ./pkgs/overlays/unstable-with-meta.nix { unstableSource = inputs.nixpkgs-unstable; revision = inputs.lock.nixpkgs-unstable.revision; };
|
||||
versionInfoFixup = import ./pkgs/overlays/version-info-fixup.nix { inherit inputs; };
|
||||
};
|
||||
nixosConfigurations = let
|
||||
|
@ -26,7 +26,7 @@ self = {
|
|||
( # regular .nix files
|
||||
(type == "regular" && lib.hasSuffix ".nix" name)
|
||||
|| # directories that contain a default.nix file
|
||||
(type == "directory" && builtins.pathExists "${./hosts}/${name}/default.nix")
|
||||
(type == "directory" && builtins.pathExists "${./.}/hosts/${name}/default.nix")
|
||||
)
|
||||
# filter out files that start with .
|
||||
&& !lib.hasPrefix "." name
|
||||
|
|
16
pkgs/overlays/unstable-with-meta.nix
Normal file
16
pkgs/overlays/unstable-with-meta.nix
Normal file
|
@ -0,0 +1,16 @@
|
|||
{
|
||||
unstableSource,
|
||||
revision,
|
||||
}: self: super:
|
||||
|
||||
let
|
||||
version = builtins.readFile "${unstableSource}/lib/.version" + ".git." + builtins.substring 0 12 revision;
|
||||
useUnstable = self.config.useUnstable or true;
|
||||
|
||||
in
|
||||
import ./unstable-from-source.nix {
|
||||
inherit unstableSource;
|
||||
} self super // {
|
||||
unstableVersion = self.lib.optionalString useUnstable version;
|
||||
unstableRevision = self.lib.optionalString useUnstable revision;
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
self: super:
|
||||
|
||||
let
|
||||
nixos = self.config.nixos or true;
|
||||
useUnstable = self.config.useUnstable or true;
|
||||
|
||||
unstablePkgsExprs = if nixos
|
||||
then builtins.fetchTarball "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
|
||||
else builtins.fetchTarball "https://channels.nixos.org/nixpkgs-unstable/nixexprs.tar.xz";
|
||||
|
||||
# Compiled nixpkgs expression eg expressions from a nix channel
|
||||
nixpkgsVersion = builtins.concatStringsSep "." [
|
||||
(builtins.readFile "${unstablePkgsExprs}/.version")
|
||||
(builtins.readFile "${unstablePkgsExprs}/.version-suffix")
|
||||
];
|
||||
|
||||
nixpkgsRevision = (builtins.readFile "${unstablePkgsExprs}/.git-revision");
|
||||
in
|
||||
import ./unstable-from-source.nix {
|
||||
unstableSource = unstablePkgsExprs;
|
||||
} self super // {
|
||||
unstableVersion = self.lib.optionalString useUnstable nixpkgsVersion;
|
||||
unstableRevision = self.lib.optionalString useUnstable nixpkgsRevision;
|
||||
}
|
|
@ -1,5 +1,12 @@
|
|||
{ inputs ? import ../../inputs.nix {} }:
|
||||
|
||||
self: super: {
|
||||
lib = super.lib.extend (import ../../lib/overlays/version-info-fixup.nix { inherit inputs; });
|
||||
lib = super.lib.extend (import ../../lib/overlays/version-info-fixup.nix { revision = inputs.lock.nixpkgs.revision; });
|
||||
} //
|
||||
super.lib.optionalAttrs (super ? unstable && super ? unstableRevision) {
|
||||
unstable = super.unstable // {
|
||||
lib = super.unstable.lib.extend (import ../../lib/overlays/version-info-fixup.nix {
|
||||
revision = super.unstableRevision;
|
||||
});
|
||||
};
|
||||
}
|
||||
|
|
|
@ -14,7 +14,7 @@ let
|
|||
overlays = (args.overlays or []) ++ [
|
||||
# ../.. should be nix store path that represents self in outputs.nix that is gc-rooted by this point
|
||||
( import ../overlays/selfExpr.nix { nixpkgsPath = "${builtins.toString ../..}/pkgs/top-level/impure.nix"; } )
|
||||
( import ../overlays/unstable.nix )
|
||||
( import ../overlays/unstable-with-meta.nix { unstableSource = inputs.nixpkgs-unstable; revision = inputs.lock.nixpkgs-unstable.revision; } )
|
||||
( import ../overlays/version-info-fixup.nix { inherit inputs; } )
|
||||
( import ./by-name-overlay.nix ../by-name )
|
||||
];
|
||||
|
|
Loading…
Reference in a new issue