More flake fixes
This commit is contained in:
parent
6d98d85642
commit
597b50ebef
|
@ -348,11 +348,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1704295289,
|
"lastModified": 1704420045,
|
||||||
"narHash": "sha256-9WZDRfpMqCYL6g/HNWVvXF0hxdaAgwgIGeLYiOhmes8=",
|
"narHash": "sha256-C36QmoJd5tdQ5R9MC1jM7fBkZW9zBUqbUCsgwS6j4QU=",
|
||||||
"owner": "NixOS",
|
"owner": "NixOS",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "b0b2c5445c64191fd8d0b31f2b1a34e45a64547d",
|
"rev": "c1be43e8e837b8dbee2b3665a007e761680f0c3d",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -42,7 +42,6 @@
|
||||||
{
|
{
|
||||||
nixpkgs.overlays = sharedOverlays;
|
nixpkgs.overlays = sharedOverlays;
|
||||||
home-manager.sharedModules = [ self.homeManagerModules.dotfiles ];
|
home-manager.sharedModules = [ self.homeManagerModules.dotfiles ];
|
||||||
system.nixos.tags = [ "flakes" ];
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
@ -22,7 +22,10 @@ in
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
nix = {
|
nix = {
|
||||||
package = lib.mkDefault pkgs.nixFlakes;
|
package = lib.mkDefault pkgs.nixFlakes;
|
||||||
settings.experimental-features = [ "nix-command" "flakes" ];
|
settings = {
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
warn-dirty = false;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs =
|
programs =
|
||||||
|
@ -453,6 +456,7 @@ in
|
||||||
ncdu
|
ncdu
|
||||||
jdupes
|
jdupes
|
||||||
duperemove
|
duperemove
|
||||||
|
compsize
|
||||||
|
|
||||||
# local monitoring
|
# local monitoring
|
||||||
htop
|
htop
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
./dev.nix
|
./dev.nix
|
||||||
./extra.nix
|
./extra.nix
|
||||||
./gaming
|
./gaming
|
||||||
|
./rebuild
|
||||||
./ssh.nix
|
./ssh.nix
|
||||||
./style.nix
|
./style.nix
|
||||||
./usernix
|
./usernix
|
||||||
|
|
38
hm/rebuild/default.nix
Normal file
38
hm/rebuild/default.nix
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
{ pkgs, config, ... }:
|
||||||
|
let
|
||||||
|
ulf = pkgs.writers.writePython3 "update-local-flakes" {
|
||||||
|
} (builtins.readFile ./update-local-flakes.py);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
home.packages = [
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "rb";
|
||||||
|
runtimeInputs = [ pkgs.brightnessctl ];
|
||||||
|
text = ''
|
||||||
|
verb="switch"
|
||||||
|
if [ "$#" -ge 1 ]
|
||||||
|
then
|
||||||
|
verb="$1"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
nixos_flake="/etc/nixos/flake.nix"
|
||||||
|
if [ -f "$nixos_flake" ]
|
||||||
|
then
|
||||||
|
sudo ${ulf} "$nixos_flake"
|
||||||
|
if [ "$verb" = "switch" ] || [ "$verb" = "test" ]
|
||||||
|
then
|
||||||
|
sudo nixos-rebuild "$verb" --specialisation ${config.frogeye.polarity} "$@"
|
||||||
|
else
|
||||||
|
sudo nixos-rebuild "$verb" "$@"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
hm_flake="${config.xdg.configHome}/home-manager/flake.nix"
|
||||||
|
if [ -f "$hm_flake" ]
|
||||||
|
then
|
||||||
|
${ulf} "$hm_flake"
|
||||||
|
home-manager "$verb" "$@"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
53
hm/rebuild/update-local-flakes.py
Executable file
53
hm/rebuild/update-local-flakes.py
Executable file
|
@ -0,0 +1,53 @@
|
||||||
|
import argparse
|
||||||
|
import json
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
|
||||||
|
GET_INPUTS_CMD = [
|
||||||
|
"nix-instantiate",
|
||||||
|
"--eval",
|
||||||
|
"--json", # This parser is stupid, better provide it with pre-eaten stuff
|
||||||
|
"--expr",
|
||||||
|
"builtins.fromJSON (builtins.toJSON (import ./flake.nix).inputs)",
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def process_flake(flake: str) -> None:
|
||||||
|
# get full path
|
||||||
|
if not os.path.isfile(flake):
|
||||||
|
raise FileNotFoundError(f"Flake not found: {flake}")
|
||||||
|
dir = os.path.dirname(flake)
|
||||||
|
# import dependencies
|
||||||
|
p = subprocess.run(GET_INPUTS_CMD, cwd=dir, stdout=subprocess.PIPE)
|
||||||
|
deps = json.loads(p.stdout)
|
||||||
|
p.check_returncode()
|
||||||
|
# for each dependency
|
||||||
|
for dep_name, dep in deps.items():
|
||||||
|
dep_url = dep["url"]
|
||||||
|
# if not local path, continue
|
||||||
|
if not (
|
||||||
|
dep_url.startswith("path:") or dep_url.startswith("git+file:")
|
||||||
|
):
|
||||||
|
continue
|
||||||
|
if dep.get("flake", True):
|
||||||
|
# get flake file corresponding
|
||||||
|
dep_path = dep_url.split(":")[1]
|
||||||
|
if not dep_path.startswith("/"):
|
||||||
|
dep_path = os.path.join(dir, dep_path)
|
||||||
|
dep_path = os.path.normpath(dep_path)
|
||||||
|
dep_flake = os.path.join(dep_path, "flake.nix")
|
||||||
|
# call this function with the flake file
|
||||||
|
process_flake(dep_flake)
|
||||||
|
# update lockfile
|
||||||
|
cmd = ["nix", "flake", "lock", "--update-input", dep_name]
|
||||||
|
subprocess.run(cmd, cwd=dir)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Recursively update lockfiles "
|
||||||
|
"of flakes located on the system"
|
||||||
|
)
|
||||||
|
parser.add_argument("flake", help="Starting flake", default="flake.nix")
|
||||||
|
args = parser.parse_args()
|
||||||
|
process_flake(args.flake)
|
19
hm/style.nix
19
hm/style.nix
|
@ -1,9 +1,6 @@
|
||||||
{ pkgs, config, lib, ... }:
|
{ pkgs, config, lib, ... }:
|
||||||
let
|
let
|
||||||
# Currently last commit in https://github.com/danth/stylix/pull/194
|
# Currently last commit in https://github.com/danth/stylix/pull/194
|
||||||
polarityFile = "${config.xdg.stateHome}/theme_polarity";
|
|
||||||
polarityFromFile = if builtins.pathExists polarityFile then lib.strings.fileContents polarityFile else "light";
|
|
||||||
polarity = if config.frogeye.polarity == "dynamic" then polarityFromFile else config.frogeye.polarity;
|
|
||||||
phases = [
|
phases = [
|
||||||
{ command = "jour"; polarity = "light"; }
|
{ command = "jour"; polarity = "light"; }
|
||||||
{ command = "crepuscule"; polarity = "dark"; }
|
{ command = "crepuscule"; polarity = "dark"; }
|
||||||
|
@ -14,7 +11,7 @@ in
|
||||||
{
|
{
|
||||||
stylix = {
|
stylix = {
|
||||||
|
|
||||||
base16Scheme = "${pkgs.base16-schemes}/share/themes/solarized-${polarity}.yaml";
|
base16Scheme = "${pkgs.base16-schemes}/share/themes/solarized-${config.frogeye.polarity}.yaml";
|
||||||
image = builtins.fetchurl {
|
image = builtins.fetchurl {
|
||||||
url = "https://get.wallhere.com/photo/sunlight-abstract-minimalism-green-simple-circle-light-leaf-wave-material-line-wing-computer-wallpaper-font-close-up-macro-photography-124350.png";
|
url = "https://get.wallhere.com/photo/sunlight-abstract-minimalism-green-simple-circle-light-leaf-wave-material-line-wing-computer-wallpaper-font-close-up-macro-photography-124350.png";
|
||||||
sha256 = "sha256:1zfq3f3v34i45mi72pkfqphm8kbhczsg260xjfl6dbydy91d7y93";
|
sha256 = "sha256:1zfq3f3v34i45mi72pkfqphm8kbhczsg260xjfl6dbydy91d7y93";
|
||||||
|
@ -36,10 +33,6 @@ in
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Setting a custom base16 theme via nixvim:
|
|
||||||
# - Is required so nixvim works
|
|
||||||
# - For the rest only works on dark polarity, use the colorscheme otherwise... shrug
|
|
||||||
# programs.nixvim.colorschemes.base16.colorscheme = "solarized-${polarity}";
|
|
||||||
|
|
||||||
# Fix https://nix-community.github.io/home-manager/index.html#_why_do_i_get_an_error_message_about_literal_ca_desrt_dconf_literal_or_literal_dconf_service_literal
|
# Fix https://nix-community.github.io/home-manager/index.html#_why_do_i_get_an_error_message_about_literal_ca_desrt_dconf_literal_or_literal_dconf_service_literal
|
||||||
# home.packages = [ pkgs.dconf ];
|
# home.packages = [ pkgs.dconf ];
|
||||||
|
@ -53,14 +46,12 @@ in
|
||||||
text = (lib.optionalString cfg.enable ''
|
text = (lib.optionalString cfg.enable ''
|
||||||
brightnessctl set ${builtins.getAttr phase.command cfg}
|
brightnessctl set ${builtins.getAttr phase.command cfg}
|
||||||
'') + ''
|
'') + ''
|
||||||
echo ${phase.polarity} > ${polarityFile}
|
switch="/nix/var/nix/profiles/system/specialisation/${phase.polarity}/bin/switch-to-configuration"
|
||||||
if command -v home-manager
|
if [ -x "$switch" ]
|
||||||
then
|
then
|
||||||
home-manager switch
|
|
||||||
else
|
|
||||||
# In two steps to get the visual changes slightly earlier
|
# In two steps to get the visual changes slightly earlier
|
||||||
sudo /nix/var/nix/profiles/system/specialisation/${phase.polarity}/bin/switch-to-configuration test
|
sudo "$switch" test
|
||||||
sudo /nix/var/nix/profiles/system/specialisation/${phase.polarity}/bin/switch-to-configuration boot
|
sudo "$switch" boot
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
|
@ -27,6 +27,10 @@ in
|
||||||
|
|
||||||
programs.nixvim = {
|
programs.nixvim = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
# Setting a custom base16 theme via nixvim is required so feline works, and
|
||||||
|
# because stylix makes a config that otherwise only works with dark
|
||||||
|
# polarity.
|
||||||
|
colorschemes.base16.colorscheme = "solarized-${config.frogeye.polarity}";
|
||||||
options = {
|
options = {
|
||||||
# From https://www.hillelwayne.com/post/intermediate-vim/
|
# From https://www.hillelwayne.com/post/intermediate-vim/
|
||||||
title = true;
|
title = true;
|
||||||
|
|
|
@ -94,6 +94,19 @@ sudo nixos-generate-config --no-filesystems --root "$mountpoint"
|
||||||
# Plug system configuration into this git repo
|
# Plug system configuration into this git repo
|
||||||
sudo mkdir -p "${mountpoint}/etc/nixos"
|
sudo mkdir -p "${mountpoint}/etc/nixos"
|
||||||
echo "{ ... }: { imports = [ ./hardware-configuration.nix ${nixos_config} ]; }" | sudo tee "${mountpoint}/etc/nixos/configuration.nix" > /dev/null
|
echo "{ ... }: { imports = [ ./hardware-configuration.nix ${nixos_config} ]; }" | sudo tee "${mountpoint}/etc/nixos/configuration.nix" > /dev/null
|
||||||
|
# EXAMPLE
|
||||||
|
# {
|
||||||
|
# description = "curacao system config";
|
||||||
|
#
|
||||||
|
# inputs.dotfiles.url = "git+file:/home/geoffrey/.config/gdotfiles";
|
||||||
|
#
|
||||||
|
# outputs = { self, dotfiles, ... }:
|
||||||
|
# {
|
||||||
|
# nixosConfigurations.curacao = dotfiles.nixosConfigurations.curacao.extendModules {
|
||||||
|
# modules = [ ./hardware-configuration.nix ];
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
# }
|
||||||
# Everything there should be covered by (and conflicts with) the repo anyways.
|
# Everything there should be covered by (and conflicts with) the repo anyways.
|
||||||
|
|
||||||
# Install NixOS! Or create a new generation.
|
# Install NixOS! Or create a new generation.
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
gaming = lib.mkEnableOption "Games";
|
gaming = lib.mkEnableOption "Games";
|
||||||
userNix = lib.mkEnableOption "Nix is \"installed\" in ~/.nix";
|
userNix = lib.mkEnableOption "Nix is \"installed\" in ~/.nix";
|
||||||
polarity = lib.mkOption {
|
polarity = lib.mkOption {
|
||||||
default = "dynamic";
|
default = "light";
|
||||||
description = "Whether to use light theme or dark theme.";
|
description = "Whether to use light theme or dark theme.";
|
||||||
type = lib.types.enum [ "dynamic" "light" "dark" ];
|
type = lib.types.enum [ "light" "dark" ];
|
||||||
};
|
};
|
||||||
desktop = {
|
desktop = {
|
||||||
xorg = lib.mkEnableOption "Enable X11 support";
|
xorg = lib.mkEnableOption "Enable X11 support";
|
||||||
|
|
|
@ -29,7 +29,10 @@
|
||||||
];
|
];
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
nix.settings = {
|
||||||
|
experimental-features = [ "nix-command" "flakes" ];
|
||||||
|
warn-dirty = false;
|
||||||
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
adb.enable = true;
|
adb.enable = true;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
{
|
{
|
||||||
config = lib.mkIf config.frogeye.gaming {
|
config = lib.mkIf config.frogeye.gaming
|
||||||
|
{
|
||||||
programs.steam.enable = true;
|
programs.steam.enable = true;
|
||||||
hardware.opengl.driSupport32Bit = true; # Enables support for 32bit libs that steam uses
|
hardware.opengl.driSupport32Bit = true; # Enables support for 32bit libs that steam uses
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue