Compare commits

...

8 Commits

Author SHA1 Message Date
Daylin Morgan b32f7e3989
properly handle rune module 2024-05-06 15:49:11 -05:00
Daylin Morgan 86bc2bf44f
don't lose error info on `oizys dry` 2024-05-06 15:34:14 -05:00
Daylin Morgan bb87af5136
completely rework rune system 2024-05-06 15:30:10 -05:00
Daylin Morgan ee519f94c9
nixfmt-rfc-style now 2024-05-06 14:32:00 -05:00
Daylin Morgan 9174ac3198
hide helpLine 2024-05-06 14:29:29 -05:00
Daylin Morgan dca2c93a69
add spinner to oizys 2024-05-06 12:21:45 -05:00
Daylin Morgan aa91eb9a8f
flake.lock: Update
Flake lock file updates:

• Updated input 'hyprland':
    'git+https://github.com/hyprwm/Hyprland?ref=refs/heads/main&rev=cddeec47a1fc0e70d8598fd10c29cd0e9489999f&submodules=1' (2024-05-05)
  → 'git+https://github.com/hyprwm/Hyprland?ref=refs/heads/main&rev=fa69de8ab6cc17bb763a1586c55847c5d5a82a83&submodules=1' (2024-05-06)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/d32560238207b8e26d88b265207b216ee46b8450?narHash=sha256-hfBmnYFyz9I1mdrC3tX1A%2BdF9cOUcds5PIMPxrT%2BcRk%3D' (2024-05-04)
  → 'github:nixos/nixpkgs/ee4a6e0f566fe5ec79968c57a9c2c3c25f2cf41d?narHash=sha256-clkcOIkg8G4xuJh%2B1onLG4HPMpbtzdLv4rHxFzgsH9c%3D' (2024-05-05)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/eb44cc5dcc75c33e7f246c9f38b96f158b3f6e9d?narHash=sha256-LbSVziNYk/nxfYeyxKNhV/ryfbCUUZVlWoG5KG0sOxk%3D' (2024-05-05)
  → 'github:nix-community/nixpkgs-wayland/05dbf637618396834607a9844660e2bf85f3051c?narHash=sha256-4gtiHlHDC9P7/%2BcXNYVVTKLNN7v0ltJ1HIgYhX8c1wk%3D' (2024-05-06)
• Updated input 'zig2nix':
    'github:Cloudef/zig2nix/deb76120bc98822cfa66c33778562214479eb050?narHash=sha256-HDtmvjUjWVq%2BEIvem2rwRrGhR13KYqCQKq5xSm3mP%2B8%3D' (2024-05-05)
  → 'github:Cloudef/zig2nix/362cc6f3fe27d73f3663d8c2c25f23ca75151ed6?narHash=sha256-Xn8hziZWSuNGscMKNdBhrHUhfH3NZC9m0oIKwCcCYtg%3D' (2024-05-06)
2024-05-06 11:58:40 -05:00
Daylin Morgan 227e3a2fe9
update oizys help on README 2024-05-05 17:42:09 -05:00
56 changed files with 506 additions and 364 deletions

View File

@ -42,21 +42,26 @@ nix run "github:daylinmorgan/oizys"
```
```
oizys <cmd> [opts]
nix begat oizys
commands:
dry poor man's nix flake check
boot nixos-rebuild boot
switch nixos-rebuild switch
cache build and push to cachix
build build system flake
Usage:
oizys [command]
options:
-h|--help show this help
--host hostname (current host)
-f|--flake path to flake ($FLAKE_PATH or $HOME/oizys)
-c|--cache name of cachix binary cache (daylin)
--no-pinix don't use pinix
Available Commands:
boot nixos rebuild boot
build A brief description of your command
cache build and push to cachix
dry poor man's nix flake check
help Help about any command
output show nixosConfiguration attr
switch nixos rebuild switch
Flags:
--flake string path to flake ($OIZYS_DIR or $HOME/oizys)
-h, --help help for oizys
--host string host to build (current host)
Use "oizys [command] --help" for more information about a command.
```
## oizys?

View File

@ -200,11 +200,11 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1714933694,
"narHash": "sha256-gziEBZF1wmBBw3v0Ang3nN3QwoQWtFmBIORODJt38TE=",
"lastModified": 1715012366,
"narHash": "sha256-+e9u2a92M3CIdnjMxqbJS0ulxkjXaRwHGIJR+fyhZII=",
"ref": "refs/heads/main",
"rev": "cddeec47a1fc0e70d8598fd10c29cd0e9489999f",
"revCount": 4617,
"rev": "fa69de8ab6cc17bb763a1586c55847c5d5a82a83",
"revCount": 4620,
"submodules": true,
"type": "git",
"url": "https://github.com/hyprwm/Hyprland"
@ -443,11 +443,11 @@
"nixpkgs": "nixpkgs_6"
},
"locked": {
"lastModified": 1714926024,
"narHash": "sha256-LbSVziNYk/nxfYeyxKNhV/ryfbCUUZVlWoG5KG0sOxk=",
"lastModified": 1715004883,
"narHash": "sha256-4gtiHlHDC9P7/+cXNYVVTKLNN7v0ltJ1HIgYhX8c1wk=",
"owner": "nix-community",
"repo": "nixpkgs-wayland",
"rev": "eb44cc5dcc75c33e7f246c9f38b96f158b3f6e9d",
"rev": "05dbf637618396834607a9844660e2bf85f3051c",
"type": "github"
},
"original": {
@ -490,11 +490,11 @@
},
"nixpkgs_4": {
"locked": {
"lastModified": 1714809261,
"narHash": "sha256-hfBmnYFyz9I1mdrC3tX1A+dF9cOUcds5PIMPxrT+cRk=",
"lastModified": 1714912032,
"narHash": "sha256-clkcOIkg8G4xuJh+1onLG4HPMpbtzdLv4rHxFzgsH9c=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d32560238207b8e26d88b265207b216ee46b8450",
"rev": "ee4a6e0f566fe5ec79968c57a9c2c3c25f2cf41d",
"type": "github"
},
"original": {
@ -752,11 +752,11 @@
]
},
"locked": {
"lastModified": 1714871906,
"narHash": "sha256-HDtmvjUjWVq+EIvem2rwRrGhR13KYqCQKq5xSm3mP+8=",
"lastModified": 1714958137,
"narHash": "sha256-Xn8hziZWSuNGscMKNdBhrHUhfH3NZC9m0oIKwCcCYtg=",
"owner": "Cloudef",
"repo": "zig2nix",
"rev": "deb76120bc98822cfa66c33778562214479eb050",
"rev": "362cc6f3fe27d73f3663d8c2c25f23ca75151ed6",
"type": "github"
},
"original": {

View File

@ -3,10 +3,9 @@
pkgs,
enabled,
...
}: {
imports = with self.nixosModules; [
restic
];
}:
{
imports = with self.nixosModules; [ restic ];
oizys = {
languages = [
@ -14,6 +13,7 @@
"node" # for docker langservers
"python"
];
rune.motd = enabled;
docker = enabled;
backups = enabled;
@ -31,14 +31,18 @@
rcloneConfigFile = "/home/daylin/.config/rclone/rclone.conf";
repository = "rclone:g:archives/algiz";
passwordFile = "/home/daylin/.config/restic/algiz-pass";
paths = ["/home/daylin/services/git/" "/home/daylin/services/gotosocial/" "home/daylin/services/caddy"];
paths = [
"/home/daylin/services/git/"
"/home/daylin/services/gotosocial/"
"home/daylin/services/caddy"
];
};
security.sudo.wheelNeedsPassword = false;
users.users = {
daylin = {
extraGroups = ["docker"];
extraGroups = [ "docker" ];
};
git = {

View File

@ -1,28 +1,28 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ lib, modulesPath, ... }:
{
lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/profiles/qemu-guest.nix")
];
imports = [ (modulesPath + "/profiles/qemu-guest.nix") ];
boot.initrd.availableKernelModules = ["ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = [];
boot.extraModulePackages = [];
boot.initrd.availableKernelModules = [
"ahci"
"xhci_pci"
"virtio_pci"
"virtio_scsi"
"sd_mod"
"sr_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/70d6dad3-1778-43bf-8f87-76dd7f54c545";
fsType = "ext4";
};
swapDevices = [
{device = "/dev/disk/by-uuid/a4e4cad9-1844-45dd-9bea-eb77bd71c37b";}
];
swapDevices = [ { device = "/dev/disk/by-uuid/a4e4cad9-1844-45dd-9bea-eb77bd71c37b"; } ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's

View File

@ -1,13 +1,5 @@
{ enabled, ... }:
{
lib,
enabled,
...
}: {
users.motd = lib.mkRune {
number = "6";
rune = "algiz";
};
services.resolved = enabled;
services.fail2ban = {
@ -23,15 +15,16 @@
# networking.nameservers = [ "8.8.8.8"];
# allow tcp connections for revsere proxy
networking.firewall =
enabled
// {
allowedTCPPorts = [80 443];
};
networking.firewall = enabled // {
allowedTCPPorts = [
80
443
];
};
services.openssh =
enabled
// {settings.PasswordAuthentication = false;};
services.openssh = enabled // {
settings.PasswordAuthentication = false;
};
# users.mutableUsers = false;

View File

@ -1,15 +1,11 @@
{ self, enabled, ... }:
{
self,
enabled,
...
}: {
imports = with self.nixosModules; [
nix-ld
];
imports = with self.nixosModules; [ nix-ld ];
oizys = {
desktop = enabled;
nix-ld = enabled;
rune.motd = enabled;
};
# Enable the X11 windowing system.
@ -19,5 +15,5 @@
windowManager.qtile.enable = true;
};
users.users.daylin.extraGroups = ["docker"];
users.users.daylin.extraGroups = [ "docker" ];
}

View File

@ -6,15 +6,24 @@
lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
}:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd" "wl"];
boot.extraModulePackages = [config.boot.kernelPackages.broadcom_sta];
boot.initrd.availableKernelModules = [
"nvme"
"xhci_pci"
"ahci"
"usbhid"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [
"kvm-amd"
"wl"
];
boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/47108030-bad4-431a-8fe3-0063accca466";
@ -26,9 +35,7 @@
fsType = "vfat";
};
swapDevices = [
{device = "/dev/disk/by-uuid/115bc13a-9b09-4790-986c-ab3b434cde69";}
];
swapDevices = [ { device = "/dev/disk/by-uuid/115bc13a-9b09-4790-986c-ab3b434cde69"; } ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's

View File

@ -2,14 +2,9 @@
config,
pkgs,
enabled,
mkRune,
...
}: {
users.motd = mkRune {
number = "2";
rune = "mannaz";
};
}:
{
# Use the systemd-boot EFI boot loader.
boot.loader = {
systemd-boot = enabled;
@ -27,31 +22,25 @@
}
];
hardware.opengl =
enabled
// {
driSupport = true;
driSupport32Bit = true;
extraPackages = with pkgs; [
libGL
];
setLdLibraryPath = true;
};
hardware.opengl = enabled // {
driSupport = true;
driSupport32Bit = true;
extraPackages = with pkgs; [ libGL ];
setLdLibraryPath = true;
};
# Load nvidia driver for Xorg and Wayland
services.xserver.videoDrivers = ["nvidia"];
services.xserver.videoDrivers = [ "nvidia" ];
hardware.nvidia = {
# Modesetting is required.
modesetting = enabled;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
powerManagement =
enabled
// {
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
finegrained = false;
};
powerManagement = enabled // {
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
finegrained = false;
};
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).

View File

@ -1,8 +1,5 @@
{ pkgs, enabled, ... }:
{
pkgs,
enabled,
...
}: {
oizys = {
desktop = enabled;
hyprland = enabled;
@ -31,7 +28,10 @@
user = "daylin";
repository = "rclone:g:archives/othalan";
passwordFile = "/home/daylin/.config/restic/othalan-pass";
paths = ["/home/daylin/stuff/" "/home/daylin/dev/"];
paths = [
"/home/daylin/stuff/"
"/home/daylin/dev/"
];
};
users.users.daylin.extraGroups = [

View File

@ -6,15 +6,20 @@
lib,
modulesPath,
...
}: {
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
}:
{
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
boot.initrd.availableKernelModules = ["xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-intel"];
boot.extraModulePackages = [];
boot.initrd.availableKernelModules = [
"xhci_pci"
"thunderbolt"
"nvme"
"usb_storage"
"sd_mod"
];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/00587bf0-9f7f-4d96-9b8b-cf5024157e2c";
@ -26,9 +31,7 @@
fsType = "vfat";
};
swapDevices = [
{device = "/dev/disk/by-uuid/bd64a1ba-f259-4b64-88cd-5585b9345f5a";}
];
swapDevices = [ { device = "/dev/disk/by-uuid/bd64a1ba-f259-4b64-88cd-5585b9345f5a"; } ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's

View File

@ -1,6 +1,8 @@
{pkgs, ...}: let
{ pkgs, ... }:
let
notes-git = ''${pkgs.git}/bin/git -C /home/daylin/stuff/notes'';
in {
in
{
systemd.services.notes-bot = {
description = "auto commit changes to notes";
serviceConfig = {
@ -13,7 +15,7 @@ in {
};
systemd.timers.notes-bot-timer = {
description = "run notes commit service";
wantedBy = ["timers.target"];
wantedBy = [ "timers.target" ];
timerConfig = {
OnCalendar = "daily";
Persistent = true;

View File

@ -1,13 +1,11 @@
{ pkgs, enabled, ... }:
{
pkgs,
enabled,
mkRune,
...
}: {
networking.networkmanager = enabled;
services.printing = enabled;
services.fwupd = enabled;
hardware.bluetooth = enabled // {powerOnBoot = true;};
hardware.bluetooth = enabled // {
powerOnBoot = true;
};
# https://github.com/NixOS/nixos-hardware/blob/c478b3d56969006e015e55aaece4931f3600c1b2/lenovo/thinkpad/x1/9th-gen/default.nix
# https://github.com/NixOS/nixos-hardware/blob/c478b3d56969006e015e55aaece4931f3600c1b2/common/pc/ssd/default.nix
@ -15,23 +13,16 @@
# rtkit is optional but recommended
security.rtkit = enabled;
services.pipewire =
enabled
// {
audio = enabled;
pulse = enabled;
alsa = enabled // {support32Bit = true;};
services.pipewire = enabled // {
audio = enabled;
pulse = enabled;
alsa = enabled // {
support32Bit = true;
};
environment.systemPackages = with pkgs; [
pamixer
];
services.getty.greetingLine = mkRune {
rune = "othalan";
runeKind = "ascii";
};
environment.systemPackages = with pkgs; [ pamixer ];
networking.hostName = "othalan";
time.timeZone = "US/Central";
@ -45,11 +36,9 @@
boot.kernelPackages = pkgs.linuxPackagesFor pkgs.linux_latest;
boot.loader = {
systemd-boot =
enabled
// {
consoleMode = "max";
};
systemd-boot = enabled // {
consoleMode = "max";
};
efi.canTouchEfiVariables = true;
};

View File

@ -1,57 +1,76 @@
inputs: let
inputs:
let
inherit (inputs) nixpkgs self;
lib = nixpkgs.lib.extend (import ./extended.nix);
inherit (builtins) mapAttrs readDir filter listToAttrs;
inherit (lib) nixosSystem genAttrs isNixFile mkDefaultOizysModule mkOizysModule enabled mkRune;
inherit (builtins)
mapAttrs
readDir
filter
listToAttrs
;
inherit (lib)
nixosSystem
genAttrs
isNixFile
mkDefaultOizysModule
mkOizysModule
enabled
;
inherit (lib.filesystem) listFilesRecursive;
inherit (import ./find-modules.nix {inherit lib;}) findModulesList;
inherit (import ./find-modules.nix { inherit lib; }) findModulesList;
#supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
supportedSystems = ["x86_64-linux"];
in rec {
forAllSystems = f: genAttrs supportedSystems (system: f (import nixpkgs {inherit system;}));
supportedSystems = [ "x86_64-linux" ];
in
rec {
forAllSystems = f: genAttrs supportedSystems (system: f (import nixpkgs { inherit system; }));
nixosModules = listToAttrs (findModulesList ../modules);
mkSystem = hostname:
mkSystem =
hostname:
nixosSystem {
system = "x86_64-linux";
modules =
[
../modules/oizys.nix
../overlays
]
++ filter
isNixFile
(listFilesRecursive (../. + "/hosts/${hostname}"));
modules = [
../modules/oizys.nix
../overlays
] ++ filter isNixFile (listFilesRecursive (../. + "/hosts/${hostname}"));
specialArgs = {inherit inputs lib self mkDefaultOizysModule mkOizysModule enabled mkRune;};
specialArgs = {
inherit
inputs
lib
self
mkDefaultOizysModule
mkOizysModule
enabled
;
};
};
oizysHosts = mapAttrs (name: _: mkSystem name) (readDir ../hosts);
oizysPkg = forAllSystems (
pkgs: rec {
oizys-zig = pkgs.callPackage ../pkgs/oizys/oizys-zig {zig2nix = inputs.zig2nix;};
oizys-nim = pkgs.callPackage ../pkgs/oizys/oizys-nim {};
oizys-rs = pkgs.callPackage ../pkgs/oizys/oizys-rs {};
oizys-go = pkgs.callPackage ../pkgs/oizys/oizys-go {};
default = oizys-go;
}
);
devShells = forAllSystems (
pkgs: {
default = pkgs.mkShell {
packages = with pkgs; [git deadnix];
};
}
);
oizysPkg = forAllSystems (pkgs: rec {
oizys-zig = pkgs.callPackage ../pkgs/oizys/oizys-zig { zig2nix = inputs.zig2nix; };
oizys-nim = pkgs.callPackage ../pkgs/oizys/oizys-nim { };
oizys-rs = pkgs.callPackage ../pkgs/oizys/oizys-rs { };
oizys-go = pkgs.callPackage ../pkgs/oizys/oizys-go { };
default = oizys-go;
});
devShells = forAllSystems (pkgs: {
default = pkgs.mkShell {
packages = with pkgs; [
git
deadnix
];
};
});
oizysFlake = {
nixosModules = nixosModules;
nixosConfigurations = oizysHosts;
packages = oizysPkg;
devShells = devShells;
formatter = forAllSystems (pkgs: pkgs.alejandra);
formatter = forAllSystems (pkgs: pkgs.nixfmt-rfc-style);
};
}

View File

@ -1,33 +1,42 @@
final: prev: let
inherit (final) hasSuffix mkEnableOption mkIf mkOption types;
runes = import ../modules/runes;
in rec {
enabled = {enable = true;};
disabled = {enable = false;};
final: prev:
let
inherit (final)
hasSuffix
mkEnableOption
mkIf
mkOption
types
;
in
rec {
enabled = {
enable = true;
};
disabled = {
enable = false;
};
# ["a" "b"] -> {a.enable = true; b.enable = true;}
enableAttrs = attrs:
builtins.listToAttrs (map (attr: {
enableAttrs =
attrs:
builtins.listToAttrs (
map (attr: {
name = attr;
value = enabled;
})
attrs);
}) attrs
);
# ["a" "b"] -> {a.enable = false; b.enable = false;}
disableAttrs = attrs:
builtins.listToAttrs (map (attr: {
disableAttrs =
attrs:
builtins.listToAttrs (
map (attr: {
name = attr;
value = disabled;
})
attrs);
}) attrs
);
isNixFile = path: hasSuffix ".nix" path;
mkIfIn = name: list: prev.mkIf (builtins.elem name list);
mkRune = {
rune,
number ? "6",
runeKind ? "braille",
}:
"[1;3${number}m\n" + runes.${rune}.${runeKind} + "\n";
mkOizysModule = config: attr: content: {
options.oizys.${attr}.enable = mkEnableOption "enable ${attr} support";

View File

@ -1,25 +1,39 @@
{...}: let
inherit (builtins) concatLists attrValues mapAttrs elemAt match readDir;
in rec {
{ ... }:
let
inherit (builtins)
concatLists
attrValues
mapAttrs
elemAt
match
readDir
;
in
rec {
# https://github.com/balsoft/nixos-config/blob/73cc2c3a8bb62a9c3980a16ae70b2e97af6e1abd/flake.nix#L109-L120
findModulesList = dir:
concatLists (attrValues (mapAttrs
(name: type:
if type == "regular"
then [
{
name = elemAt (match "(.*)\\.nix" name) 0;
value = dir + "/${name}";
}
]
else if
(readDir (dir + "/${name}"))
? "default.nix"
then [
{
inherit name;
value = dir + "/${name}";
}
]
else findModulesList (dir + "/${name}")) (readDir dir)));
findModulesList =
dir:
concatLists (
attrValues (
mapAttrs (
name: type:
if type == "regular" then
[
{
name = elemAt (match "(.*)\\.nix" name) 0;
value = dir + "/${name}";
}
]
else if (readDir (dir + "/${name}")) ? "default.nix" then
[
{
inherit name;
value = dir + "/${name}";
}
]
else
findModulesList (dir + "/${name}")
) (readDir dir)
)
);
}

View File

@ -3,13 +3,15 @@
config,
lib,
...
}: let
}:
let
inherit (lib) mkIf;
in {
in
{
config = mkIf config.oizys.desktop.enable {
fonts.fontconfig.enable = true;
fonts.packages = with pkgs; [
(nerdfonts.override {fonts = ["FiraCode"];})
(nerdfonts.override { fonts = [ "FiraCode" ]; })
recursive
];
};

View File

@ -4,9 +4,11 @@
config,
lib,
...
}: let
}:
let
inherit (lib) mkIf;
in {
in
{
config = mkIf config.oizys.desktop.enable {
environment.systemPackages = with pkgs; [
wezterm
@ -23,7 +25,7 @@ in {
hunspell # spell check for libreoffice
(catppuccin-gtk.override {
accents = ["rosewater"];
accents = [ "rosewater" ];
variant = "mocha";
})

View File

@ -3,15 +3,21 @@
config,
lib,
...
}: let
}:
let
inherit (lib) mkIf;
cfg = config.services.xserver.windowManager.qtile;
lock = pkgs.writeShellApplication {
name = "lock";
runtimeInputs = with pkgs; [i3lock-color figlet procps];
runtimeInputs = with pkgs; [
i3lock-color
figlet
procps
];
text = builtins.readFile ./lock.sh;
};
in {
in
{
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
xss-lock
@ -19,9 +25,9 @@ in {
];
systemd.services.i3lock = {
wantedBy = ["sleep.target"];
wantedBy = [ "sleep.target" ];
description = "Lock the screen using a custom lock script";
before = ["suspend.target"];
before = [ "suspend.target" ];
serviceConfig = {
User = "daylin";
Type = "forking";

View File

@ -15,12 +15,10 @@
# '';
# };
mkOizysModule config "hyprland" {
programs.hyprland =
enabled
// {
package = inputs.hyprland.packages.${pkgs.system}.default;
};
security.pam.services.swaylock = {};
programs.hyprland = enabled // {
package = inputs.hyprland.packages.${pkgs.system}.default;
};
security.pam.services.swaylock = { };
# Optional, hint electron apps to use wayland:
environment.sessionVariables.NIXOS_OZONE_WL = "1";
@ -56,7 +54,7 @@ mkOizysModule config "hyprland" {
inputs.hyprland-contrib.overlays.default
# some issue with dunst?
# inputs.nixpkgs-wayland.overlay
# when this was active I was forced to recompile VirtualBox myself, which would just fail to compile...
# Must have been one of the other non-hyprland packages modified in the overlay
# inputs.hyprland.overlays.default

View File

@ -3,10 +3,12 @@
config,
lib,
...
}: let
}:
let
inherit (lib) mkIf;
cfg = config.services.xserver.windowManager.qtile;
in {
in
{
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
brightnessctl

View File

@ -1,11 +1,6 @@
{ pkgs, self, ... }:
{
pkgs,
self,
...
}: {
imports = with self.nixosModules; [
git
];
imports = with self.nixosModules; [ git ];
programs.zsh.enable = true;
environment.systemPackages = with pkgs; [
tmux

View File

@ -1,4 +1,5 @@
{pkgs, ...}: {
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
git
git-lfs

View File

@ -1,4 +1,5 @@
{pkgs, ...}: {
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
vim
neovim

View File

@ -3,9 +3,11 @@
lib,
config,
...
}: let
}:
let
inherit (lib) mkIf;
in {
in
{
config = mkIf config.oizys.desktop.enable {
environment.systemPackages = with pkgs; [
# vscode

View File

@ -1,13 +1,27 @@
{lib, ...}: let
inherit (lib) mkOption types literalExpression mdDoc;
in {
imports = [./nim.nix ./tex.nix ./misc.nix ./node.nix ./python.nix ./zig.nix];
{ lib, ... }:
let
inherit (lib)
mkOption
types
literalExpression
mdDoc
;
in
{
imports = [
./nim.nix
./tex.nix
./misc.nix
./node.nix
./python.nix
./zig.nix
];
options.oizys.languages = mkOption {
type = with types; (listOf str);
description = mdDoc ''
List of programming languages to enable.
'';
default = [];
default = [ ];
example = literalExpression ''
[
"python"

View File

@ -3,10 +3,12 @@
lib,
pkgs,
...
}: let
}:
let
inherit (lib) mkIfIn;
cfg = config.oizys.languages;
in {
in
{
config = mkIfIn "misc" cfg {
environment.systemPackages = with pkgs; [
go

View File

@ -3,10 +3,12 @@
lib,
pkgs,
...
}: let
}:
let
inherit (lib) mkIfIn;
cfg = config.oizys.languages;
in {
in
{
config = mkIfIn "nim" cfg {
environment.systemPackages = with pkgs; [
nim

View File

@ -3,10 +3,12 @@
lib,
pkgs,
...
}: let
}:
let
inherit (lib) mkIfIn;
cfg = config.oizys.languages;
in {
in
{
config = mkIfIn "node" cfg {
environment.systemPackages = with pkgs; [
nodejs

View File

@ -3,15 +3,19 @@
lib,
pkgs,
...
}: let
}:
let
inherit (lib) mkIfIn;
cfg = config.oizys.languages;
in {
in
{
config = mkIfIn "python" cfg {
environment.systemPackages = let
python = pkgs.python3.withPackages (ps: with ps; [pip]);
in
with pkgs; [
environment.systemPackages =
let
python = pkgs.python3.withPackages (ps: with ps; [ pip ]);
in
with pkgs;
[
# https://github.com/Mic92/nix-ld?tab=readme-ov-file#my-pythonnodejsrubyinterpreter-libraries-do-not-find-the-libraries-configured-by-nix-ld
(pkgs.writeShellScriptBin "python" ''
export LD_LIBRARY_PATH=$NIX_LD_LIBRARY_PATH
@ -23,7 +27,7 @@ in {
exec ${python}/bin/python "$@"
'')
(python3.withPackages (ps: with ps; [pip]))
(python3.withPackages (ps: with ps; [ pip ]))
micromamba
pixi
];

View File

@ -3,13 +3,13 @@
lib,
pkgs,
...
}: let
}:
let
inherit (lib) mkIfIn;
cfg = config.oizys.languages;
in {
in
{
config = mkIfIn "tex" cfg {
environment.systemPackages = with pkgs; [
texlive.combined.scheme-full
];
environment.systemPackages = with pkgs; [ texlive.combined.scheme-full ];
};
}

View File

@ -4,13 +4,18 @@
lib,
pkgs,
...
}: let
}:
let
inherit (lib) mkIfIn;
cfg = config.oizys.languages;
zig = inputs.zig2nix.outputs.packages.${pkgs.system}.zig.master.bin;
zls = inputs.zls.outputs.packages.${pkgs.system}.default;
in {
in
{
config = mkIfIn "zig" cfg {
environment.systemPackages = [zig zls];
environment.systemPackages = [
zig
zls
];
};
}

View File

@ -5,7 +5,10 @@
...
}:
mkOizysModule config "vpn" {
environment.systemPackages = with pkgs; [openconnect openvpn];
environment.systemPackages = with pkgs; [
openconnect
openvpn
];
services.openvpn.servers = {
express-ny = {

View File

@ -3,10 +3,12 @@
lib,
config,
...
}: let
}:
let
inherit (lib) mkEnableOption mkIf;
cfg = config.oizys.nix-ld;
in {
in
{
options.oizys.nix-ld.enable = mkEnableOption "enable nix-ld support";
config = mkIf cfg.enable {
programs.nix-ld.enable = true;

View File

@ -3,10 +3,9 @@
self,
pkgs,
...
}: {
imports = [
inputs.nix-index-database.nixosModules.nix-index
];
}:
{
imports = [ inputs.nix-index-database.nixosModules.nix-index ];
nixpkgs.config.allowUnfree = true;
nix.package = pkgs.nixVersions.latest;
@ -34,7 +33,7 @@
programs.command-not-found.enable = false;
nix.settings = {
trusted-users = ["@wheel"];
trusted-users = [ "@wheel" ];
accept-flake-config = true;
# substituters = [

View File

@ -1,13 +1,13 @@
{
lib,
self,
...
}: let
{ lib, self, ... }:
let
inherit (lib) mkEnableOption;
in {
in
{
imports = with self.nixosModules; [
users
runes
nix
cli
dev
nvim

View File

@ -22,16 +22,8 @@ mkOizysModule config "chrome" {
};
environment.systemPackages = with pkgs; [
(chromium.override {
commandLineArgs = [
"--force-dark-mode"
];
})
(chromium.override { commandLineArgs = [ "--force-dark-mode" ]; })
(google-chrome.override {
commandLineArgs = [
"--force-dark-mode"
];
})
(google-chrome.override { commandLineArgs = [ "--force-dark-mode" ]; })
];
}

View File

@ -1,5 +1,6 @@
{
braille = ''
braille = ''

View File

@ -1,5 +1,71 @@
{
othalan = import ./othalan.nix;
algiz = import ./algiz.nix;
mannaz = import ./mannaz.nix;
pkgs,
config,
lib,
...
}:
let
inherit (lib)
types
mkMerge
mkOption
mkIf
mkEnableOption
;
runes = {
othalan = import ./othalan.nix;
algiz = import ./algiz.nix;
mannaz = import ./mannaz.nix;
};
mkRune =
{
name,
number ? "6",
kind ? "braille",
}:
"[1;3${number}m\n" + runes.${name}.${kind} + "\n";
cfg = config.oizys.rune;
in
{
options.oizys = {
rune = {
enable = mkOption {
type = types.bool;
default = true;
};
motd.enable = mkEnableOption "set rune for MOTD";
name = mkOption {
default = config.networking.hostName;
type = types.either (types.enum (builtins.attrNames runes)) types.str;
description = "Name of rune (probabaly matches hostname)";
};
kind = mkOption {
type =
with types;
either (enum [
"ascii"
"braille"
]) str;
default = "ascii";
};
};
};
config = mkMerge [
(mkIf cfg.enable {
environment.etc.issue = {
source = pkgs.writeText "issue" (mkRune {
name = cfg.name;
kind = cfg.kind;
});
};
})
(mkIf cfg.motd.enable {
users.motd = mkRune {
number = "2"; # todo: autogenerate based on hostname?
name = cfg.name;
};
})
];
}

View File

@ -1,5 +1,6 @@
{
braille = ''
braille = ''

View File

@ -1,4 +1,5 @@
{...}: {
{ ... }:
{
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;

View File

@ -5,7 +5,7 @@
...
}:
mkOizysModule config "backups" {
environment.systemPackages = with pkgs; [rclone];
environment.systemPackages = with pkgs; [ rclone ];
services.restic.backups.gdrive = {
# BUG: if .conda/environments.txt doesn't exist then this won't work

View File

@ -3,10 +3,12 @@
lib,
pkgs,
...
}: let
}:
let
inherit (lib) mkOption mkIf types;
cfg = config.users.defaultUser;
in {
in
{
options.users.defaultUser = mkOption {
default = true;
type = types.bool;

View File

@ -6,7 +6,5 @@
}:
mkOizysModule config "docker" {
virtualisation.docker.enable = true;
environment.systemPackages = with pkgs; [
lazydocker
];
environment.systemPackages = with pkgs; [ lazydocker ];
}

View File

@ -1,11 +1,7 @@
{
config,
mkOizysModule,
...
}:
{ config, mkOizysModule, ... }:
mkOizysModule config "vbox" {
virtualisation.virtualbox = {
host.enable = true;
};
users.extraGroups.vboxusers.members = ["daylin"];
users.extraGroups.vboxusers.members = [ "daylin" ];
}

View File

@ -1,25 +1,21 @@
{inputs, ...}: let
{ inputs, ... }:
let
defaultOverlays =
# execute and import all overlay files in the current
# directory with the given args
builtins.map
# execute and import the overlay file
(f: (import (./. + "/${f}") {inherit inputs;}))
# find all overlay files in the current directory
(builtins.filter
(f: f != "default.nix")
(builtins.attrNames (builtins.readDir ./.)));
in {
nixpkgs.overlays =
defaultOverlays
++ [
(
final: _prev: {
stable = import inputs.stable {
system = final.system;
config.allowUnfree = true;
};
}
)
];
# execute and import the overlay file
(f: (import (./. + "/${f}") { inherit inputs; }))
# find all overlay files in the current directory
(builtins.filter (f: f != "default.nix") (builtins.attrNames (builtins.readDir ./.)));
in
{
nixpkgs.overlays = defaultOverlays ++ [
(final: _prev: {
stable = import inputs.stable {
system = final.system;
config.allowUnfree = true;
};
})
];
}

View File

@ -1,4 +1,5 @@
{...}: (final: prev: {
{ ... }:
(final: prev: {
nim-atlas = prev.nim-atlas.overrideNimAttrs {
version = "unstable";
src = final.fetchFromGitHub {

View File

@ -1,8 +1,9 @@
{...}: (final: prev: {
{ ... }:
(final: prev: {
nimble = prev.nimble.overrideNimAttrs {
version = "0.14.2-5e7901760e89108476a4e21976a0ef783403e8fe";
requiredNimVersion = 2;
buildInputs = [prev.pkgs.openssl];
buildInputs = [ prev.pkgs.openssl ];
src = final.fetchFromGitHub {
owner = "nim-lang";

View File

@ -1,4 +1,5 @@
{...}: (final: prev: {
{ ... }:
(final: prev: {
nimlsp = prev.nimlsp.overrideNimAttrs {
requiredNimVersion = 2;
nimFlags = [

View File

@ -11,7 +11,7 @@ var dryCmd = &cobra.Command{
Short: "poor man's nix flake check",
Run: func(cmd *cobra.Command, args []string) {
oizys.CheckFlake(flake)
oizys.NixDryRun(oizys.Output(flake, host))
oizys.NixDryRun(flake, host)
},
}

View File

@ -1,5 +1,4 @@
{
installShellFiles,
buildGoModule,
lib,
@ -10,9 +9,9 @@ buildGoModule {
version = "unstable";
src = lib.cleanSource ./.;
vendorHash = "sha256-kh/7dV49KaQcD9ho8IpBcRc6+05bn4XpMzAI9JXu7+o=";
vendorHash = "sha256-Fcq8p/YItF5lx82PRg1/tksV7iCIS0xZZVWdpE3e7F0=";
nativeBuildInputs = [installShellFiles];
nativeBuildInputs = [ installShellFiles ];
postInstall = ''
installShellCompletion --cmd oizys \

View File

@ -13,6 +13,7 @@ require (
require (
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
github.com/briandowns/spinner v1.23.0 // indirect
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
github.com/fatih/color v1.16.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect

View File

@ -1,5 +1,7 @@
github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k=
github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8=
github.com/briandowns/spinner v1.23.0 h1:alDF2guRWqa/FOZZYWjlMIx2L6H0wyewPxo/CH4Pt2A=
github.com/briandowns/spinner v1.23.0/go.mod h1:rPG4gmXeN3wQV/TsAY4w8lPdIM6RX3yqeBQJSrbXjuE=
github.com/charmbracelet/bubbles v0.18.0 h1:PYv1A036luoBGroX6VWjQIE9Syf2Wby2oOl/39KLfy0=
github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw=
github.com/charmbracelet/bubbletea v0.26.1 h1:xujcQeF73rh4jwu3+zhfQsvV18x+7zIjlw7/CYbzGJ0=

View File

@ -12,6 +12,9 @@ import (
"github.com/charmbracelet/bubbles/table"
"github.com/muesli/termenv"
"golang.org/x/term"
"github.com/briandowns/spinner"
"time"
)
func TerminalSize() (int, int) {
@ -63,10 +66,19 @@ func ParseDryRunOutput(nixOutput string) {
ShowTable(columns, rows)
}
func NixDryRun(path string) {
func NixDryRun(flake string, host string) {
path := Output(flake, host)
cmd := exec.Command("nix", "build", path, "--dry-run")
s := spinner.New(
spinner.CharSets[14],
100*time.Millisecond,
spinner.WithSuffix(" evaluating derivation for: "+path),
spinner.WithColor("fgHiMagenta"))
s.Start()
output, err := cmd.CombinedOutput()
s.Stop()
if err != nil {
fmt.Println(string(output))
log.Fatal(err)
}
ParseDryRunOutput(string(output))

View File

@ -1,4 +1,4 @@
{buildNimPackage}:
{ buildNimPackage }:
buildNimPackage {
pname = "oizys";
version = "unstable";

View File

@ -11,8 +11,8 @@ rustPlatform.buildRustPackage {
lockFile = ./Cargo.lock;
};
nativeBuildInputs = [installShellFiles];
buildInputs = [nix-output-monitor];
nativeBuildInputs = [ installShellFiles ];
buildInputs = [ nix-output-monitor ];
postInstall = ''
installShellCompletion --cmd oizys \

View File

@ -6,8 +6,8 @@
}:
(zig2nix.outputs.zig-env.${pkgs.system} {
zig = zig2nix.outputs.packages.${pkgs.system}.zig.master.bin;
})
.package {
name = "oizys";
src = lib.cleanSource ./.;
}
}).package
{
name = "oizys";
src = lib.cleanSource ./.;
}