diff --git a/flake.lock b/flake.lock index 857b9ea..d15a627 100644 --- a/flake.lock +++ b/flake.lock @@ -220,68 +220,6 @@ "type": "github" } }, - "home-manager-stable-darwin": { - "inputs": { - "nixpkgs": [ - "nixpkgs-stable-darwin" - ] - }, - "locked": { - "lastModified": 1747688870, - "narHash": "sha256-ypL9WAZfmJr5V70jEVzqGjjQzF0uCkz+AFQF7n9NmNc=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "d5f1f641b289553927b3801580598d200a501863", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "release-24.11", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager-stable-nixos": { - "inputs": { - "nixpkgs": [ - "nixpkgs-stable-nixos" - ] - }, - "locked": { - "lastModified": 1747688870, - "narHash": "sha256-ypL9WAZfmJr5V70jEVzqGjjQzF0uCkz+AFQF7n9NmNc=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "d5f1f641b289553927b3801580598d200a501863", - "type": "github" - }, - "original": { - "owner": "nix-community", - "ref": "release-24.11", - "repo": "home-manager", - "type": "github" - } - }, - "home-manager-unstable": { - "inputs": { - "nixpkgs": [ - "nixpkgs-unstable" - ] - }, - "locked": { - "lastModified": 1769947980, - "narHash": "sha256-BI9jqPa6da7wmFRZWMKR3gw6+IseRsM0QnegNCv5B4E=", - "owner": "nix-community", - "repo": "home-manager", - "rev": "ddf76d161863a903c624f527badf818ec52c1a76", - "type": "github" - }, - "original": { - "owner": "nix-community", - "repo": "home-manager", - "type": "github" - } - }, "hyprcursor": { "inputs": { "hyprlang": [ @@ -806,54 +744,6 @@ "type": "github" } }, - "nixpkgs-stable-darwin": { - "locked": { - "lastModified": 1751290243, - "narHash": "sha256-kNf+obkpJZWar7HZymXZbW+Rlk3HTEIMlpc6FCNz0Ds=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "5ab036a8d97cb9476fbe81b09076e6e91d15e1b6", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-24.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-stable-nixos": { - "locked": { - "lastModified": 1751274312, - "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-24.11", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs-unstable": { - "locked": { - "lastModified": 1769740369, - "narHash": "sha256-xKPyJoMoXfXpDM5DFDZDsi9PHArf2k5BJjvReYXoFpM=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "6308c3b21396534d8aaeac46179c14c439a89b8a", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixpkgs-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_2": { "locked": { "lastModified": 1767379071, @@ -906,7 +796,7 @@ "inputs": { "flake-utils": "flake-utils", "nixpkgs": [ - "nixpkgs-unstable" + "nixpkgs" ], "nixvim": "nixvim_2" }, @@ -1008,15 +898,9 @@ "root": { "inputs": { "home-manager": "home-manager", - "home-manager-stable-darwin": "home-manager-stable-darwin", - "home-manager-stable-nixos": "home-manager-stable-nixos", - "home-manager-unstable": "home-manager-unstable", "hyprland": "hyprland", "millennium": "millennium", "nixpkgs": "nixpkgs_3", - "nixpkgs-stable-darwin": "nixpkgs-stable-darwin", - "nixpkgs-stable-nixos": "nixpkgs-stable-nixos", - "nixpkgs-unstable": "nixpkgs-unstable", "nixvim": "nixvim", "nur": "nur" } diff --git a/flake.nix b/flake.nix index 131a215..66544d8 100644 --- a/flake.nix +++ b/flake.nix @@ -2,19 +2,6 @@ inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable"; millennium.url = "github:trivaris/millennium?dir=packages/nix"; # Temporary fix until this is merged into main millennium repo - - home-manager-unstable = { - url = "github:nix-community/home-manager"; - inputs.nixpkgs.follows = "nixpkgs-unstable"; - }; - home-manager-stable-nixos = { - url = "github:nix-community/home-manager/release-24.11"; - inputs.nixpkgs.follows = "nixpkgs-stable-nixos"; - }; - home-manager-stable-darwin = { - url = "github:nix-community/home-manager/release-24.11"; - inputs.nixpkgs.follows = "nixpkgs-stable-darwin"; - }; home-manager = { url = "github:nix-community/home-manager"; inputs.nixpkgs.follows = "nixpkgs"; @@ -22,7 +9,7 @@ nixvim = { url = "github:Superredstone/nixvim"; - inputs.nixpkgs.follows = "nixpkgs-unstable"; + inputs.nixpkgs.follows = "nixpkgs"; }; hyprland.url = "github:hyprwm/Hyprland"; nur = { @@ -44,7 +31,9 @@ nixvim millennium nur - inputs; + inputs + nixpkgs + home-manager; }; in { diff --git a/lib/mksystem.nix b/lib/mksystem.nix index 3c1a652..a3c7fb3 100644 --- a/lib/mksystem.nix +++ b/lib/mksystem.nix @@ -5,60 +5,26 @@ millennium, nur, inputs, + nixpkgs, + home-manager, }: name: { system, user, email, - wsl ? false, stable ? false, gamingSystem ? false, workSystem ? false, desktopEnvironment ? "" }: let - # True if this is a WSL system. - isWSL = wsl; - # resolves NixOS vs nix-darwin and stable vs unstable functions - inherit - (import ./resolve-inputs.nix { - inherit - system - stable - inputs - ; - }) - isDarwin - lib - systemFunc - nixpkgs-stable - home-manager - ; - # The config files for this system. nixConfig = ../modules/nix-config/default.nix; machineConfig = ../machines/${name}/default.nix; - # OSConfig = ../modules/${if isDarwin then "darwin" else "nixos"}.nix; HMConfig = ../home; systemPackages = ../modules/packages.nix; - # TODO: make this cleaner - nix-homebrew = lib.optionalAttrs isDarwin inputs.nix-homebrew.darwinModules.nix-homebrew; - nix-homebrew-config = lib.optionalAttrs isDarwin { - nix-homebrew = { - enable = true; - inherit user; - # Detect and automatically migrate existing Homebrew installations - autoMigrate = true; - # With mutableTaps disabled, taps can no longer be added imperatively with `brew tap`. - #mutableTaps = false; - }; - }; specialArgs = { - pkgs-stable = import nixpkgs-stable { - inherit system; - config.allowUnfree = true; - }; - pkgs-unstable = import inputs.nixpkgs-unstable { + pkgs-stable = import nixpkgs { inherit system; config.allowUnfree = true; }; @@ -69,28 +35,21 @@ let currentSystemDe = desktopEnvironment; gamingSystem = gamingSystem; workSystem = workSystem; - isWSL = isWSL; - isDarwin = isDarwin; nixvim = nixvim; millennium = millennium; nur = nur; inputs = inputs; }; in -assert isWSL -> !isDarwin; -systemFunc { +nixpkgs.lib.nixosSystem { inherit system specialArgs; modules = [ { nixpkgs.overlays = overlays; } - { nixpkgs.config.allowUnfree = true; } - (if isWSL then inputs.nixos-wsl.nixosModules.wsl else { }) nixConfig systemPackages - nix-homebrew - nix-homebrew-config nur.modules.nixos.default nur.legacyPackages."${system}".repos.iopq.modules.xraya - home-manager.home-manager + home-manager.nixosModules.home-manager { home-manager.backupFileExtension = "backup"; home-manager.useGlobalPkgs = true; diff --git a/lib/resolve-inputs.nix b/lib/resolve-inputs.nix index dcf526c..ec30219 100644 --- a/lib/resolve-inputs.nix +++ b/lib/resolve-inputs.nix @@ -4,16 +4,13 @@ system, }: let - isDarwin = (import inputs.nixpkgs-unstable { inherit system; }).stdenv.isDarwin; - darwin = if stable then inputs.darwin-stable else inputs.darwin-unstable; nixpkgs-stable = inputs."nixpkgs-unstable"; nixpkgs = if stable then nixpkgs-stable else inputs.nixpkgs-unstable; home-manager = inputs.home-manager-unstable; in { - inherit isDarwin nixpkgs-stable; - systemFunc = if isDarwin then darwin.lib.darwinSystem else nixpkgs.lib.nixosSystem; - home-manager = if isDarwin then home-manager.darwinModules else home-manager.nixosModules; + systemFunc = nixpkgs.lib.nixosSystem; + home-manager = home-manager.nixosModules; inherit (import nixpkgs { inherit system; }) lib; } diff --git a/modules/nix-config/de.nix b/modules/nix-config/de.nix index b4e2ba9..92eab0d 100644 --- a/modules/nix-config/de.nix +++ b/modules/nix-config/de.nix @@ -1,24 +1,30 @@ { pkgs, lib, currentSystemDe, ... }: { - services.xserver.enable = true; - services.xserver.excludePackages = with pkgs; [ - xterm - ]; + service = { + xserver.enable = true; + xserver.excludePackages = with pkgs; [ + xterm + ]; - # Display managers - services.displayManager.sddm = lib.mkIf (currentSystemDe == "plasma") { - enable = true; - wayland.enable = true; + # Display managers + displayManager = { + sddm = lib.mkIf (currentSystemDe == "plasma") { + enable = true; + wayland.enable = true; + }; + gdm.enable = lib.mkIf (currentSystemDe == "gnome") true; + }; + + # Desktop environments + desktopManager = { + plasma6.enable = lib.mkIf (currentSystemDe == "plasma") true; + gnome.enable = lib.mkIf (currentSystemDe == "gnome") true; + }; }; - services.displayManager.gdm.enable = lib.mkIf (currentSystemDe == "gnome") true; - - # Desktop environments - services.desktopManager.plasma6.enable = lib.mkIf (currentSystemDe == "plasma") true; environment.plasma6.excludePackages = with pkgs.kdePackages; [ elisa konsole ]; - services.desktopManager.gnome.enable = lib.mkIf (currentSystemDe == "gnome") true; environment.gnome.excludePackages = with pkgs; [ gnome-contacts gnome-console @@ -37,16 +43,12 @@ xdg = { autostart.enable = true; - portal = { - enable = true; - extraPortals = with pkgs; [ - # xdg-desktop-portal-gtk - ]; - }; + portal.enable = true; }; programs.kdeconnect = lib.mkIf (currentSystemDe != "none") { enable = true; + # FIXME: Make this work for KDE package = pkgs.gnomeExtensions.gsconnect; }; } diff --git a/modules/nix-config/default.nix b/modules/nix-config/default.nix index 9b743f6..3efaca5 100644 --- a/modules/nix-config/default.nix +++ b/modules/nix-config/default.nix @@ -3,27 +3,29 @@ imports = [ ./keyboard.nix ./security.nix + ./services.nix ] ++ (if (currentSystemDe != "none") then [ - ./sound.nix - ./fonts.nix ./de.nix + ./fonts.nix + ./sound.nix ] else []); time.timeZone = "Europe/Rome"; # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "it_IT.UTF-8"; - LC_IDENTIFICATION = "it_IT.UTF-8"; - LC_MEASUREMENT = "it_IT.UTF-8"; - LC_MONETARY = "it_IT.UTF-8"; - LC_NAME = "it_IT.UTF-8"; - LC_NUMERIC = "it_IT.UTF-8"; - LC_PAPER = "it_IT.UTF-8"; - LC_TELEPHONE = "it_IT.UTF-8"; - LC_TIME = "it_IT.UTF-8"; + i18n = { + defaultLocale = "en_US.UTF-8"; + extraLocaleSettings = { + LC_ADDRESS = "it_IT.UTF-8"; + LC_IDENTIFICATION = "it_IT.UTF-8"; + LC_MEASUREMENT = "it_IT.UTF-8"; + LC_MONETARY = "it_IT.UTF-8"; + LC_NAME = "it_IT.UTF-8"; + LC_NUMERIC = "it_IT.UTF-8"; + LC_PAPER = "it_IT.UTF-8"; + LC_TELEPHONE = "it_IT.UTF-8"; + LC_TIME = "it_IT.UTF-8"; + }; }; environment.sessionVariables = { diff --git a/modules/nix-config/services.nix b/modules/nix-config/services.nix new file mode 100644 index 0000000..2cfc7fa --- /dev/null +++ b/modules/nix-config/services.nix @@ -0,0 +1,7 @@ +{ ... }: +{ + services = { + pcscd.enable = true; + nordvpn.enable = true; + }; +} diff --git a/modules/nix-config/sound.nix b/modules/nix-config/sound.nix index d63dc30..09e26af 100644 --- a/modules/nix-config/sound.nix +++ b/modules/nix-config/sound.nix @@ -1,13 +1,14 @@ { ... }: { # Enable sound with pipewire. - services.pulseaudio.enable = false; - security.rtkit.enable = true; - - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; + services = { + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + pulseaudio.enable = false; }; + security.rtkit.enable = true; } diff --git a/modules/packages.nix b/modules/packages.nix index feeac1c..7afaf4b 100644 --- a/modules/packages.nix +++ b/modules/packages.nix @@ -1,9 +1,11 @@ { pkgs, nur, gamingSystem, workSystem, currentSystemDe, ... }@ inputs: { imports = [ - ./nordvpn.nix + ./programs ]; + nixpkgs.config.allowUnfree = true; + environment.systemPackages = with pkgs; [ # CLI utils appimage-run @@ -97,26 +99,4 @@ gnome-tweaks ] else []); - programs.gamescope = { - enable = true; - capSysNice = true; - }; - programs.steam = if gamingSystem then { - enable = true; - # package = pkgs.steam-millennium; - remotePlay.openFirewall = true; - } else {}; - - programs.hyprland.enable = if currentSystemDe == "hyprland" then true else false; - - services.pcscd.enable = true; - programs.gnupg.agent = { - enable = true; - pinentryPackage = pkgs.pinentry-tty; - enableSSHSupport = true; - }; - - programs.nh = { - enable = true; - }; } diff --git a/modules/programs/default.nix b/modules/programs/default.nix new file mode 100644 index 0000000..0ab1ad8 --- /dev/null +++ b/modules/programs/default.nix @@ -0,0 +1,27 @@ +{ pkgs, gamingSystem, currentSystemDe, ... }: +{ + imports = [ + ./nordvpn.nix + ]; + + programs = { + gamescope = { + enable = true; + capSysNice = true; + }; + steam = if gamingSystem then { + enable = true; + # package = pkgs.steam-millennium; + remotePlay.openFirewall = true; + } else {}; + gnupg.agent = { + enable = true; + pinentryPackage = pkgs.pinentry-tty; + enableSSHSupport = true; + }; + nh = { + enable = true; + }; + hyprland.enable = if currentSystemDe == "hyprland" then true else false; + }; +} diff --git a/modules/nordvpn.nix b/modules/programs/nordvpn.nix similarity index 88% rename from modules/nordvpn.nix rename to modules/programs/nordvpn.nix index 9c82ed7..f5298c2 100644 --- a/modules/nordvpn.nix +++ b/modules/programs/nordvpn.nix @@ -10,6 +10,4 @@ nordvpn = pkgs.nur.repos.wingej0.nordvpn; }) ]; - services.nordvpn.enable = true; - }