major rewrite of flake

This commit is contained in:
Matt Nish-Lapidus 2024-12-31 12:05:58 -05:00
parent f9a642398b
commit 9b99eef302
7 changed files with 214 additions and 2171 deletions

67
flake.lock generated
View file

@ -8,11 +8,11 @@
]
},
"locked": {
"lastModified": 1734722315,
"narHash": "sha256-N38C121MmlYoXzgHyXvJAZvgGqHplpnLIYbBYZSFPFU=",
"lastModified": 1735613558,
"narHash": "sha256-AellDXIA2KrIAxi3PyvhMnkBiIEjYaLYruB6vuiDrTs=",
"ref": "refs/heads/master",
"rev": "42bace224d95932f2c02fda8cf91991e0b7ac765",
"revCount": 69,
"rev": "1600f91c10d6a033d75443be995a57ebe27d0165",
"revCount": 76,
"type": "git",
"url": "https://gt.emenel.ca/emenel/audio.nix.git"
},
@ -80,11 +80,11 @@
]
},
"locked": {
"lastModified": 1734366194,
"narHash": "sha256-vykpJ1xsdkv0j8WOVXrRFHUAdp9NXHpxdnn1F4pYgSw=",
"lastModified": 1735344290,
"narHash": "sha256-oJDtWPH1oJT34RJK1FSWjwX4qcGOBRkcNQPD0EbSfNM=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "80b0fdf483c5d1cb75aaad909bd390d48673857f",
"rev": "613691f285dad87694c2ba1c9e6298d04736292d",
"type": "github"
},
"original": {
@ -102,11 +102,11 @@
},
"locked": {
"dir": "nix",
"lastModified": 1730793763,
"narHash": "sha256-m9agq+UNNwAovZj+WS5/1Yc1xoExG4A3SqmVP/e0r9Q=",
"lastModified": 1735500482,
"narHash": "sha256-Mvd37Odri7hKwbUhaLt24TmoK/HTG1f1FuVbFNqhX9s=",
"ref": "refs/heads/master",
"rev": "606c488862df6c3be1e4e670f6e1e06008c84732",
"revCount": 875,
"rev": "8bc7033977e8bb18abe4c245a2f9169d29373a76",
"revCount": 882,
"submodules": true,
"type": "git",
"url": "https://github.com/kmonad/kmonad?dir=nix"
@ -176,11 +176,11 @@
},
"nix-flatpak": {
"locked": {
"lastModified": 1734864618,
"narHash": "sha256-8SCTJhDH1fdNGGFhuGStIqbO7vwUKQokgQu6nQlQagY=",
"lastModified": 1735500379,
"narHash": "sha256-5qmX6YYjYfVYBbsmd2XxbTi7A59YuuN9IwfXU7qFquQ=",
"owner": "gmodena",
"repo": "nix-flatpak",
"rev": "13be795cac27df7044a425c0b2de3a42b10ddb18",
"rev": "c31b6cbd11707fe2c74ad805ef085d59d75116ae",
"type": "github"
},
"original": {
@ -189,33 +189,13 @@
"type": "github"
}
},
"nix-ld": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1734338723,
"narHash": "sha256-BpJs2QnVwdE4Btsx2BcBmdsq86H7QJYv2GmoOkr1ii4=",
"owner": "Mic92",
"repo": "nix-ld",
"rev": "911665df070e3d6c970e5a248fc4a38550bd5689",
"type": "github"
},
"original": {
"owner": "Mic92",
"repo": "nix-ld",
"type": "github"
}
},
"nixos-hardware": {
"locked": {
"lastModified": 1734862644,
"narHash": "sha256-04xesW7HITdF5WUmNM39WD4tkEERk3Ez2W1nNvdIvIw=",
"lastModified": 1735388221,
"narHash": "sha256-e5IOgjQf0SZcFCEV/gMGrsI0gCJyqOKShBQU0iiM3Kg=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "e8516a23524cc9083f5a02a8d64d14770e4c7c09",
"rev": "7c674c6734f61157e321db595dbfcd8523e04e19",
"type": "github"
},
"original": {
@ -242,11 +222,11 @@
},
"nixpkgs-unstable": {
"locked": {
"lastModified": 1734649271,
"narHash": "sha256-4EVBRhOjMDuGtMaofAIqzJbg4Ql7Ai0PSeuVZTHjyKQ=",
"lastModified": 1735471104,
"narHash": "sha256-0q9NGQySwDQc7RhAV2ukfnu7Gxa5/ybJ2ANT8DQrQrs=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d70bd19e0a38ad4790d3913bf08fcbfc9eeca507",
"rev": "88195a94f390381c6afcdaa933c2f6ff93959cb4",
"type": "github"
},
"original": {
@ -258,11 +238,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1734737257,
"narHash": "sha256-GIMyMt1pkkoXdCq9un859bX6YQZ/iYtukb9R5luazLM=",
"lastModified": 1735531152,
"narHash": "sha256-As8I+ebItDKtboWgDXYZSIjGlKeqiLBvjxsQHUmAf1Q=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "1c6e20d41d6a9c1d737945962160e8571df55daa",
"rev": "3ffbbdbac0566a0977da3d2657b89cbcfe9a173b",
"type": "github"
},
"original": {
@ -279,7 +259,6 @@
"kmonad": "kmonad",
"musnix": "musnix",
"nix-flatpak": "nix-flatpak",
"nix-ld": "nix-ld",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs_2",
"nixpkgs-unstable": "nixpkgs-unstable",

View file

@ -13,7 +13,7 @@
inputs.nixpkgs.follows = "nixpkgs";
};
nix-flatpak.url = "github:gmodena/nix-flatpak"; # unstable branch. Use github:gmodena/nix-flatpak/?ref=<tag> to pin releases.
nix-flatpak.url = "github:gmodena/nix-flatpak"; # unstable branch
kmonad = {
url = "git+https://github.com/kmonad/kmonad?submodules=1&dir=nix";
@ -35,45 +35,62 @@
inputs.nixpkgs.follows = "nixpkgs";
};
nix-ld.url = "github:Mic92/nix-ld";
nix-ld.inputs.nixpkgs.follows = "nixpkgs";
# nix-ld.url = "github:Mic92/nix-ld";
# nix-ld.inputs.nixpkgs.follows = "nixpkgs";
# affinity-nix.url = "github:mrshmllow/affinity-nix";
# affinity-nix.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = {nixpkgs, nixpkgs-unstable, wezterm, home-manager, audio, nix-flatpak, kmonad, musnix, nix-ld, self, ... } @ inputs: {
outputs = {nixpkgs, nixpkgs-unstable, wezterm, home-manager, audio, nix-flatpak, kmonad, musnix, self, ... } @ inputs:
let
inherit (self) outputs;
# Supported systems for your flake packages, shell, etc.
systems = [
"aarch64-linux"
"i686-linux"
"x86_64-linux"
"aarch64-darwin"
"x86_64-darwin"
];
# This is a function that generates an attribute by calling a function you
# pass to it, with each system as an argument
forAllSystems = nixpkgs.lib.genAttrs systems;
# packages = nixpkgs.legacyPackages.x86_64-linux;
in {
nixosConfigurations = {
eddie = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
specialArgs = { inherit inputs; }; # Pass flake inputs to our config
modules = [
nix-flatpak.nixosModules.nix-flatpak
kmonad.nixosModules.default
musnix.nixosModules.musnix
nix-ld.nixosModules.nix-ld
./system/eddie/configuration.nix
];
};
};
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
overlays = import ./overlays {inherit inputs;};
homeConfigurations = {
"emenel" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux;
extraSpecialArgs = {
inherit inputs;
pkgs-unstable = nixpkgs-unstable.legacyPackages.x86_64-linux;
nixosConfigurations = {
eddie = nixpkgs.lib.nixosSystem {
specialArgs = {
inherit inputs outputs;
pkgs-unstable = import nixpkgs-unstable { system = "x86_64-linux"; config.allowUnfree = true; };
};
modules = [
nix-flatpak.nixosModules.nix-flatpak
kmonad.nixosModules.default
musnix.nixosModules.musnix
./system/eddie/configuration.nix
];
};
};
modules = [
nix-flatpak.homeManagerModules.nix-flatpak
./home/home.nix
];
homeConfigurations = {
"emenel" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
extraSpecialArgs = {
inherit inputs outputs;
};
modules = [
nix-flatpak.homeManagerModules.nix-flatpak
./home/home.nix
];
};
};
};
};
}

View file

@ -1,29 +1,22 @@
{ nix-flatpak, lib, pkgs, inputs, pkgs-unstable, ... }:
{ nix-flatpak, lib, pkgs, inputs, outputs, ... }:
{
nixpkgs.config.allowUnfree = true;
nixpkgs = {
# You can add overlays here
overlays = [
inputs.audio.overlays.default
# Add overlays your own flake exports (from overlays and pkgs dir):
# outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.unstable-packages
(_: prev: {
ulauncher = prev.ulauncher.overrideAttrs (old: {
propagatedBuildInputs = with prev.python3Packages;
old.propagatedBuildInputs
++ [
thefuzz
tornado
];
});
})
(_: prev: {
wineWowPackages.stagingFull = prev.wineWowPackages.stagingFull.overrideAttrs (old: {
patches = old.patches ++ [ ./wine-6006.patch ];
});
})
# inputs.audio.overlays.default
];
# Configure your nixpkgs instance
config = {
# Disable if you don't want unfree packages
allowUnfree = true;
};
};
home = {
@ -79,9 +72,6 @@
nix-du
# nvtopPackages.amd
# nvtopPackages.nvidia
usbutils
pciutils
util-linux
@ -206,6 +196,7 @@
mesa-demos
# gnomeExtensions.clipboard-indicator
gnomeExtensions.pano
gnomeExtensions.just-perfection
gnomeExtensions.dash-to-dock
gnomeExtensions.solaar-extension
@ -213,9 +204,7 @@
gnomeExtensions.media-controls
gnomeExtensions.looking-glass-button
gnomeExtensions.auto-power-profile
# gnomeExtensions.tray-icons-reloaded
gnomeExtensions.appindicator
# snixembed
gnomeExtensions.notification-banner-reloaded
gnome-software
gnome-tweaks
@ -236,7 +225,7 @@
whitesur-icon-theme
bibata-cursors
piper
libratbag
# libratbag
icloudpd
squirreldisk
@ -258,14 +247,14 @@
# bottles
(pkgs-unstable.yabridge.override {
(pkgs.unstable.yabridge.override {
wine = (wineWowPackages.stagingFull.override {
waylandSupport = true;
fontconfigSupport = true;
vulkanSupport = true;
});
})
(pkgs-unstable.yabridgectl.override {
(pkgs.unstable.yabridgectl.override {
wine = (wineWowPackages.stagingFull.override {
waylandSupport = true;
fontconfigSupport = true;
@ -304,10 +293,11 @@
plexamp
amberol
carla
wireplumber
audacity
# wireplumber
# audacity
tenacity
supercollider-with-plugins
bitwig-studio5-latest
bitwig-studio
blender
davinci-resolve-studio
steam
@ -315,6 +305,8 @@
handbrake
renoise
krita
darling
darling-dmg
rawtherapee
inkscape
gimp
@ -328,15 +320,13 @@
plugdata
pavucontrol
qpwgraph
coppwr
helvum
alsa-utils
alsa-tools
clapper
ardour
parinfer-rust-emacs
dockfmt
clap
batik
(callPackage ../packages/mioctl/mioctl.nix {})
# Audio plugins (LV2, VST2, VST3, LADSPA)
@ -356,8 +346,11 @@
cardinal
roomeqwizard
guitarix
paulxstretch
# paulxstretch
vital
helio-workstation
stochas
(callPackage ../packages/tal/bassline.nix {})
(callPackage ../packages/tal/j8.nix {})
(callPackage ../packages/tal/u-no-lx.nix {})
@ -463,6 +456,7 @@
epkgs.nixfmt
epkgs.parinfer-rust-mode
epkgs.tree-sitter-langs
epkgs.gpastel
];
};
ripgrep = {

File diff suppressed because it is too large Load diff

36
overlays/default.nix Normal file
View file

@ -0,0 +1,36 @@
# This file defines overlays
{inputs, ...}: {
# This one brings our custom packages from the 'pkgs' directory
# additions = final: _prev: import ../pkgs final.pkgs;
# This one contains whatever you want to overlay
# You can change versions, add patches, set compilation flags, anything really.
# https://nixos.wiki/wiki/Overlays
modifications = final: prev: {
# example = prev.example.overrideAttrs (oldAttrs: rec {
# ...
# });
ulauncher = prev.ulauncher.overrideAttrs (old: {
propagatedBuildInputs = with prev.python3Packages;
old.propagatedBuildInputs
++ [
thefuzz
tornado
];
});
wineWowPackages.stagingFull = prev.wineWowPackages.stagingFull.overrideAttrs (old: {
patches = old.patches ++ [ ./wine-6006.patch ];
});
};
# When applied, the unstable nixpkgs set (declared in the flake inputs) will
# be accessible through 'pkgs.unstable'
unstable-packages = final: _prev: {
unstable = import inputs.nixpkgs-unstable {
system = final.system;
config.allowUnfree = true;
};
};
}

View file

@ -2,7 +2,7 @@
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ nixos-hardware, config, pkgs, musnix, lib, ... }:
{ nixos-hardware, config, pkgs, musnix, lib, inputs, outputs, ... }:
{
imports =
@ -11,8 +11,44 @@
./razer-speaker-fix.nix
];
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
nixpkgs = {
# You can add overlays here
overlays = [
# Add overlays your own flake exports (from overlays and pkgs dir):
# outputs.overlays.additions
outputs.overlays.modifications
outputs.overlays.unstable-packages
];
# Configure your nixpkgs instance
config = {
# Disable if you don't want unfree packages
allowUnfree = true;
};
};
nix = let
flakeInputs = lib.filterAttrs (_: lib.isType "flake") inputs;
in {
gc = {
automatic = true;
dates = "daily";
options = "--delete-older-than +3";
};
settings = {
# Enable flakes and new 'nix' command
experimental-features = "nix-command flakes";
# Workaround for https://github.com/NixOS/nix/issues/9574
nix-path = config.nix.nixPath;
};
# Opinionated: disable channels
channel.enable = false;
# Opinionated: make flake registry and nix path match flake inputs
registry = lib.mapAttrs (_: flake: {inherit flake;}) flakeInputs;
nixPath = lib.mapAttrsToList (n: _: "${n}=flake:${n}") flakeInputs;
};
# List packages installed in system profile. To search, run:
environment.systemPackages = with pkgs; [
@ -48,8 +84,8 @@
boot.kernelPackages = pkgs.linuxPackages_latest;
boot = {
initrd.kernelModules = [ "nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" ];
kernelParams = [ "nvidia-drm.fbdev=1" "nvidia_drm.modeset=1"];
initrd.kernelModules = [ "nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" "snd-virmidi"];
kernelParams = [ "nvidia_drm.fbdev=1" "nvidia_drm.modeset=1"];
};
systemd.services.tailscaled.after = ["NetworkManager-wait-online.service"];
@ -166,18 +202,6 @@
# Select internationalisation properties.
i18n.defaultLocale = "en_CA.UTF-8";
nix.nixPath = [ "nixos-config=/home/emenel/source/nixos-config" "nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixos" ];
nix.package = pkgs.nixVersions.latest;
nix.settings = {
experimental-features = [ "nix-command" "flakes" ]; #repl-flake
auto-optimise-store = true;
};
nix.gc.automatic = true;
nix.gc.dates = "daily";
nix.gc.options = "--delete-older-than +3";
services.xserver.enable = true;
# Enable the GNOME Desktop Environment.
@ -203,42 +227,49 @@
services.tailscale.enable = true;
services.envfs.enable = true;
#services.emacs = {
# enable = true;
#};
services.gnome.gnome-remote-desktop.enable = false;
# Enable sound with pipewire.
hardware.pulseaudio.enable = false;
services.gnome.gnome-remote-desktop.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true;
jack.enable = true;
wireplumber.enable = true;
extraConfig.pipewire."91-null-sinks" = {
"context.modules" = [
{
name = "libpipewire-module-loopback";
args = {
"node.description" = "Default Playback";
"capture.props" = {
"node.name" = "BixSix_or_fallback_Playback";
"media.class" = "Audio/Sink";
"audio.position" = "[FL FR]";
wireplumber = {
enable = true;
};
extraConfig = {
pipewire."91-null-sinks" = {
"context.modules" = [
{
name = "libpipewire-module-loopback";
args = {
"node.description" = "Default Playback";
"capture.props" = {
"node.name" = "BixSix_or_fallback_Playback";
"media.class" = "Audio/Sink";
"audio.position" = "[FL FR]";
};
"playback.props" = {
"node.name" = "playback.BixSixWithFallbackPlayback";
"audio.position" = "[AUX14 AUX15]";
"target.object" = "alsa_output.usb-Solid_State_Logic_BiG_SiX-00.pro-output-0";
"stream.dont-remix" = true;
"node.passive" = true;
};
};
"playback.props" = {
"node.name" = "playback.BixSixWithFallbackPlayback";
"audio.position" = "[AUX14 AUX15]";
"target.object" = "alsa_output.usb-Solid_State_Logic_BiG_SiX-00.pro-output-0";
"stream.dont-remix" = true;
"node.passive" = true;
};
};
}
];
}
];
};
};
};
@ -262,7 +293,7 @@
};
services.flatpak.enable = true;
services.ratbagd.enable = true;
services.dbus.implementation = "broker";
#programs.gnupg.enable = true;
@ -287,7 +318,7 @@
config = builtins.readFile ../../dotfiles/dot_config/kmonad/sinc.kbd;
};
razer = {
extraGroups = [ "openrazer" ];
extraGroups = [ "openrazer" ];
device = "/dev/input/by-id/usb-Razer_Razer_Blade-if01-event-kbd";
config = builtins.readFile ../../dotfiles/dot_config/kmonad/razer.kbd;
};
@ -317,8 +348,8 @@
binfmt = true;
};
programs.nix-ld.dev.enable = true;
programs.nix-ld.dev.libraries = with pkgs; [
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
zlib
zstd
stdenv.cc.cc
@ -345,6 +376,7 @@
libGLU.dev
libuv.out
libressl.out
libudev-zero.out
];
services.udev.packages = with pkgs; [