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

View file

@ -13,7 +13,7 @@
inputs.nixpkgs.follows = "nixpkgs"; 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 = { kmonad = {
url = "git+https://github.com/kmonad/kmonad?submodules=1&dir=nix"; url = "git+https://github.com/kmonad/kmonad?submodules=1&dir=nix";
@ -35,45 +35,62 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nix-ld.url = "github:Mic92/nix-ld"; # nix-ld.url = "github:Mic92/nix-ld";
nix-ld.inputs.nixpkgs.follows = "nixpkgs"; # nix-ld.inputs.nixpkgs.follows = "nixpkgs";
# affinity-nix.url = "github:mrshmllow/affinity-nix"; # affinity-nix.url = "github:mrshmllow/affinity-nix";
# affinity-nix.inputs.nixpkgs.follows = "nixpkgs"; # 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 = { formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.alejandra);
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
];
};
};
overlays = import ./overlays {inherit inputs;};
homeConfigurations = { nixosConfigurations = {
"emenel" = home-manager.lib.homeManagerConfiguration { eddie = nixpkgs.lib.nixosSystem {
pkgs = nixpkgs.legacyPackages.x86_64-linux; specialArgs = {
extraSpecialArgs = { inherit inputs outputs;
inherit inputs; pkgs-unstable = import nixpkgs-unstable { system = "x86_64-linux"; config.allowUnfree = true; };
pkgs-unstable = nixpkgs-unstable.legacyPackages.x86_64-linux; };
modules = [
nix-flatpak.nixosModules.nix-flatpak
kmonad.nixosModules.default
musnix.nixosModules.musnix
./system/eddie/configuration.nix
];
}; };
};
modules = [
nix-flatpak.homeManagerModules.nix-flatpak homeConfigurations = {
./home/home.nix "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 = { nixpkgs = {
# You can add overlays here
overlays = [ 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: { # inputs.audio.overlays.default
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 ];
});
})
]; ];
# Configure your nixpkgs instance
config = {
# Disable if you don't want unfree packages
allowUnfree = true;
};
}; };
home = { home = {
@ -79,9 +72,6 @@
nix-du nix-du
# nvtopPackages.amd
# nvtopPackages.nvidia
usbutils usbutils
pciutils pciutils
util-linux util-linux
@ -206,6 +196,7 @@
mesa-demos mesa-demos
# gnomeExtensions.clipboard-indicator # gnomeExtensions.clipboard-indicator
gnomeExtensions.pano
gnomeExtensions.just-perfection gnomeExtensions.just-perfection
gnomeExtensions.dash-to-dock gnomeExtensions.dash-to-dock
gnomeExtensions.solaar-extension gnomeExtensions.solaar-extension
@ -213,9 +204,7 @@
gnomeExtensions.media-controls gnomeExtensions.media-controls
gnomeExtensions.looking-glass-button gnomeExtensions.looking-glass-button
gnomeExtensions.auto-power-profile gnomeExtensions.auto-power-profile
# gnomeExtensions.tray-icons-reloaded
gnomeExtensions.appindicator gnomeExtensions.appindicator
# snixembed
gnomeExtensions.notification-banner-reloaded gnomeExtensions.notification-banner-reloaded
gnome-software gnome-software
gnome-tweaks gnome-tweaks
@ -236,7 +225,7 @@
whitesur-icon-theme whitesur-icon-theme
bibata-cursors bibata-cursors
piper piper
libratbag # libratbag
icloudpd icloudpd
squirreldisk squirreldisk
@ -258,14 +247,14 @@
# bottles # bottles
(pkgs-unstable.yabridge.override { (pkgs.unstable.yabridge.override {
wine = (wineWowPackages.stagingFull.override { wine = (wineWowPackages.stagingFull.override {
waylandSupport = true; waylandSupport = true;
fontconfigSupport = true; fontconfigSupport = true;
vulkanSupport = true; vulkanSupport = true;
}); });
}) })
(pkgs-unstable.yabridgectl.override { (pkgs.unstable.yabridgectl.override {
wine = (wineWowPackages.stagingFull.override { wine = (wineWowPackages.stagingFull.override {
waylandSupport = true; waylandSupport = true;
fontconfigSupport = true; fontconfigSupport = true;
@ -304,10 +293,11 @@
plexamp plexamp
amberol amberol
carla carla
wireplumber # wireplumber
audacity # audacity
tenacity
supercollider-with-plugins supercollider-with-plugins
bitwig-studio5-latest bitwig-studio
blender blender
davinci-resolve-studio davinci-resolve-studio
steam steam
@ -315,6 +305,8 @@
handbrake handbrake
renoise renoise
krita krita
darling
darling-dmg
rawtherapee rawtherapee
inkscape inkscape
gimp gimp
@ -328,15 +320,13 @@
plugdata plugdata
pavucontrol pavucontrol
qpwgraph qpwgraph
coppwr helvum
alsa-utils alsa-utils
alsa-tools alsa-tools
clapper clapper
ardour ardour
parinfer-rust-emacs parinfer-rust-emacs
dockfmt dockfmt
clap
batik
(callPackage ../packages/mioctl/mioctl.nix {}) (callPackage ../packages/mioctl/mioctl.nix {})
# Audio plugins (LV2, VST2, VST3, LADSPA) # Audio plugins (LV2, VST2, VST3, LADSPA)
@ -356,8 +346,11 @@
cardinal cardinal
roomeqwizard roomeqwizard
guitarix guitarix
paulxstretch # paulxstretch
vital vital
helio-workstation
stochas
(callPackage ../packages/tal/bassline.nix {}) (callPackage ../packages/tal/bassline.nix {})
(callPackage ../packages/tal/j8.nix {}) (callPackage ../packages/tal/j8.nix {})
(callPackage ../packages/tal/u-no-lx.nix {}) (callPackage ../packages/tal/u-no-lx.nix {})
@ -463,6 +456,7 @@
epkgs.nixfmt epkgs.nixfmt
epkgs.parinfer-rust-mode epkgs.parinfer-rust-mode
epkgs.tree-sitter-langs epkgs.tree-sitter-langs
epkgs.gpastel
]; ];
}; };
ripgrep = { 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 # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # 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 = imports =
@ -11,8 +11,44 @@
./razer-speaker-fix.nix ./razer-speaker-fix.nix
]; ];
# Allow unfree packages nixpkgs = {
nixpkgs.config.allowUnfree = true; # 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: # List packages installed in system profile. To search, run:
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
@ -48,8 +84,8 @@
boot.kernelPackages = pkgs.linuxPackages_latest; boot.kernelPackages = pkgs.linuxPackages_latest;
boot = { boot = {
initrd.kernelModules = [ "nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" ]; initrd.kernelModules = [ "nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" "snd-virmidi"];
kernelParams = [ "nvidia-drm.fbdev=1" "nvidia_drm.modeset=1"]; kernelParams = [ "nvidia_drm.fbdev=1" "nvidia_drm.modeset=1"];
}; };
systemd.services.tailscaled.after = ["NetworkManager-wait-online.service"]; systemd.services.tailscaled.after = ["NetworkManager-wait-online.service"];
@ -166,18 +202,6 @@
# Select internationalisation properties. # Select internationalisation properties.
i18n.defaultLocale = "en_CA.UTF-8"; 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; services.xserver.enable = true;
# Enable the GNOME Desktop Environment. # Enable the GNOME Desktop Environment.
@ -203,42 +227,49 @@
services.tailscale.enable = true; services.tailscale.enable = true;
services.envfs.enable = true; services.envfs.enable = true;
#services.emacs = { services.gnome.gnome-remote-desktop.enable = false;
# enable = true;
#};
# Enable sound with pipewire. # Enable sound with pipewire.
hardware.pulseaudio.enable = false; hardware.pulseaudio.enable = false;
services.gnome.gnome-remote-desktop.enable = false;
services.pipewire = { services.pipewire = {
enable = true; enable = true;
alsa.enable = true;
alsa.support32Bit = true; alsa = {
enable = true;
support32Bit = true;
};
pulse.enable = true; pulse.enable = true;
jack.enable = true; jack.enable = true;
wireplumber.enable = true;
extraConfig.pipewire."91-null-sinks" = { wireplumber = {
"context.modules" = [ enable = true;
{ };
name = "libpipewire-module-loopback";
args = { extraConfig = {
"node.description" = "Default Playback"; pipewire."91-null-sinks" = {
"capture.props" = { "context.modules" = [
"node.name" = "BixSix_or_fallback_Playback"; {
"media.class" = "Audio/Sink"; name = "libpipewire-module-loopback";
"audio.position" = "[FL FR]"; 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.flatpak.enable = true;
services.ratbagd.enable = true;
services.dbus.implementation = "broker"; services.dbus.implementation = "broker";
#programs.gnupg.enable = true; #programs.gnupg.enable = true;
@ -287,7 +318,7 @@
config = builtins.readFile ../../dotfiles/dot_config/kmonad/sinc.kbd; config = builtins.readFile ../../dotfiles/dot_config/kmonad/sinc.kbd;
}; };
razer = { razer = {
extraGroups = [ "openrazer" ]; extraGroups = [ "openrazer" ];
device = "/dev/input/by-id/usb-Razer_Razer_Blade-if01-event-kbd"; device = "/dev/input/by-id/usb-Razer_Razer_Blade-if01-event-kbd";
config = builtins.readFile ../../dotfiles/dot_config/kmonad/razer.kbd; config = builtins.readFile ../../dotfiles/dot_config/kmonad/razer.kbd;
}; };
@ -317,8 +348,8 @@
binfmt = true; binfmt = true;
}; };
programs.nix-ld.dev.enable = true; programs.nix-ld.enable = true;
programs.nix-ld.dev.libraries = with pkgs; [ programs.nix-ld.libraries = with pkgs; [
zlib zlib
zstd zstd
stdenv.cc.cc stdenv.cc.cc
@ -345,6 +376,7 @@
libGLU.dev libGLU.dev
libuv.out libuv.out
libressl.out libressl.out
libudev-zero.out
]; ];
services.udev.packages = with pkgs; [ services.udev.packages = with pkgs; [