Compare commits
	
		
			2 commits
		
	
	
		
			23635a9bda
			...
			742706fe0f
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 742706fe0f | |||
| 1defa37a73 | 
					 12 changed files with 723 additions and 69 deletions
				
			
		
							
								
								
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,2 +1,2 @@
 | 
			
		|||
# Jetbrains configuration directory
 | 
			
		||||
### Jetbrains
 | 
			
		||||
/.idea
 | 
			
		||||
							
								
								
									
										4
									
								
								.idea/nix-config.iml
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								.idea/nix-config.iml
									
										
									
										generated
									
									
									
								
							| 
						 | 
				
			
			@ -1,7 +1,9 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<module type="WEB_MODULE" version="4">
 | 
			
		||||
  <component name="NewModuleRootManager">
 | 
			
		||||
    <content url="file://$MODULE_DIR$" />
 | 
			
		||||
    <content url="file://$MODULE_DIR$">
 | 
			
		||||
      <excludeFolder url="file://$MODULE_DIR$/.idea/codeStyles" />
 | 
			
		||||
    </content>
 | 
			
		||||
    <orderEntry type="inheritedJdk" />
 | 
			
		||||
    <orderEntry type="sourceFolder" forTests="false" />
 | 
			
		||||
  </component>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										189
									
								
								flake.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										189
									
								
								flake.lock
									
										
									
										generated
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,189 @@
 | 
			
		|||
{
 | 
			
		||||
  "nodes": {
 | 
			
		||||
    "catppuccin": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1720472194,
 | 
			
		||||
        "narHash": "sha256-CYscFEts6tyvosc1T29nxhzIYJAj/1CCEkV3ZMzSN/c=",
 | 
			
		||||
        "owner": "catppuccin",
 | 
			
		||||
        "repo": "nix",
 | 
			
		||||
        "rev": "d75d5803852fb0833767dc969a4581ac13204e22",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "catppuccin",
 | 
			
		||||
        "repo": "nix",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "flake-compat": {
 | 
			
		||||
      "flake": false,
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1650374568,
 | 
			
		||||
        "narHash": "sha256-Z+s0J8/r907g149rllvwhb4pKi8Wam5ij0st8PwAh+E=",
 | 
			
		||||
        "owner": "edolstra",
 | 
			
		||||
        "repo": "flake-compat",
 | 
			
		||||
        "rev": "b4a34015c698c7793d592d66adbab377907a2be8",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "edolstra",
 | 
			
		||||
        "repo": "flake-compat",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "flake-utils": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "systems": "systems"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1694529238,
 | 
			
		||||
        "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "numtide",
 | 
			
		||||
        "repo": "flake-utils",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "flake-utils-plus": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "flake-utils": "flake-utils"
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1715533576,
 | 
			
		||||
        "narHash": "sha256-fT4ppWeCJ0uR300EH3i7kmgRZnAVxrH+XtK09jQWihk=",
 | 
			
		||||
        "owner": "gytis-ivaskevicius",
 | 
			
		||||
        "repo": "flake-utils-plus",
 | 
			
		||||
        "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "gytis-ivaskevicius",
 | 
			
		||||
        "repo": "flake-utils-plus",
 | 
			
		||||
        "rev": "3542fe9126dc492e53ddd252bb0260fe035f2c0f",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "hardware": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1721413321,
 | 
			
		||||
        "narHash": "sha256-0GdiQScDceUrVGbxYpV819LHesK3szHOhJ09e6sgES4=",
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "repo": "nixos-hardware",
 | 
			
		||||
        "rev": "ab165a8a6cd12781d76fe9cbccb9e975d0fb634f",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "NixOS",
 | 
			
		||||
        "ref": "master",
 | 
			
		||||
        "repo": "nixos-hardware",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "home-manager": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1721534365,
 | 
			
		||||
        "narHash": "sha256-XpZOkaSJKdOsz1wU6JfO59Rx2fqtcarQ0y6ndIOKNpI=",
 | 
			
		||||
        "owner": "nix-community",
 | 
			
		||||
        "repo": "home-manager",
 | 
			
		||||
        "rev": "635563f245309ef5320f80c7ebcb89b2398d2949",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "nix-community",
 | 
			
		||||
        "repo": "home-manager",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nix-flatpak": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1711997201,
 | 
			
		||||
        "narHash": "sha256-J71xzQlVYsjagA4AsVwRazhBh2rZrPpKvxTgs6UzL7c=",
 | 
			
		||||
        "owner": "gmodena",
 | 
			
		||||
        "repo": "nix-flatpak",
 | 
			
		||||
        "rev": "b76fa31346db7fc958a9898f3c594696ca71c4fd",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "gmodena",
 | 
			
		||||
        "ref": "v0.4.1",
 | 
			
		||||
        "repo": "nix-flatpak",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "nixpkgs": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1721562059,
 | 
			
		||||
        "narHash": "sha256-Tybxt65eyOARf285hMHIJ2uul8SULjFZbT9ZaEeUnP8=",
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "rev": "68c9ed8bbed9dfce253cc91560bf9043297ef2fe",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "nixos",
 | 
			
		||||
        "ref": "nixos-unstable",
 | 
			
		||||
        "repo": "nixpkgs",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "root": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "catppuccin": "catppuccin",
 | 
			
		||||
        "hardware": "hardware",
 | 
			
		||||
        "home-manager": "home-manager",
 | 
			
		||||
        "nix-flatpak": "nix-flatpak",
 | 
			
		||||
        "nixpkgs": "nixpkgs",
 | 
			
		||||
        "snowfall-lib": "snowfall-lib"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "snowfall-lib": {
 | 
			
		||||
      "inputs": {
 | 
			
		||||
        "flake-compat": "flake-compat",
 | 
			
		||||
        "flake-utils-plus": "flake-utils-plus",
 | 
			
		||||
        "nixpkgs": [
 | 
			
		||||
          "nixpkgs"
 | 
			
		||||
        ]
 | 
			
		||||
      },
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1719005984,
 | 
			
		||||
        "narHash": "sha256-mpFl3Jv4fKnn+5znYXG6SsBjfXHJdRG5FEqNSPx0GLA=",
 | 
			
		||||
        "owner": "snowfallorg",
 | 
			
		||||
        "repo": "lib",
 | 
			
		||||
        "rev": "c6238c83de101729c5de3a29586ba166a9a65622",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "snowfallorg",
 | 
			
		||||
        "repo": "lib",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    "systems": {
 | 
			
		||||
      "locked": {
 | 
			
		||||
        "lastModified": 1681028828,
 | 
			
		||||
        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
 | 
			
		||||
        "owner": "nix-systems",
 | 
			
		||||
        "repo": "default",
 | 
			
		||||
        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      },
 | 
			
		||||
      "original": {
 | 
			
		||||
        "owner": "nix-systems",
 | 
			
		||||
        "repo": "default",
 | 
			
		||||
        "type": "github"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  "root": "root",
 | 
			
		||||
  "version": 7
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										95
									
								
								flake.nix
									
										
									
									
									
								
							
							
						
						
									
										95
									
								
								flake.nix
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -2,87 +2,60 @@
 | 
			
		|||
  description = "Jo's NixOS configuration";
 | 
			
		||||
 | 
			
		||||
  inputs = {
 | 
			
		||||
    # Nixpkgs
 | 
			
		||||
    # Nixpkgs instance.
 | 
			
		||||
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
 | 
			
		||||
 | 
			
		||||
    # Home manager
 | 
			
		||||
    home-manager = {
 | 
			
		||||
      url = "github:nix-community/home-manager/master";
 | 
			
		||||
    # Snowfall lib imposes an opinionated file-structure, which makes things a little easier sometimes.
 | 
			
		||||
    snowfall-lib = {
 | 
			
		||||
      url = "github:snowfallorg/lib";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    # Home manager for managing the /home directory.
 | 
			
		||||
    home-manager = {
 | 
			
		||||
      url = "github:nix-community/home-manager";
 | 
			
		||||
      inputs.nixpkgs.follows = "nixpkgs";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    # Hardware specific tweaks and performance optimizations.
 | 
			
		||||
    hardware.url = "github:NixOS/nixos-hardware/master";
 | 
			
		||||
 | 
			
		||||
    # Catppuccin theme nix configuration.
 | 
			
		||||
    catppuccin.url = "github:catppuccin/nix";
 | 
			
		||||
 | 
			
		||||
    # Declarative management of Flatpak packages.
 | 
			
		||||
    nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  outputs = { self, nixpkgs, home-manager, hardware, catppuccin, nix-flatpak, ... } @inputs:
 | 
			
		||||
  let
 | 
			
		||||
    inherit (self) outputs;
 | 
			
		||||
  outputs = inputs:
 | 
			
		||||
    inputs.snowfall-lib.mkFlake {
 | 
			
		||||
      inherit inputs; # Providing flake inputs to Snowfall Lib.
 | 
			
		||||
      src = ./.; # "src" must point to the root of the flake.
 | 
			
		||||
 | 
			
		||||
    # Supported systems for this flake
 | 
			
		||||
    systems = [
 | 
			
		||||
      "x86_64-linux"
 | 
			
		||||
    ];
 | 
			
		||||
      snowfall = {
 | 
			
		||||
        # "root" can be used, to tell Snowfall Lib where to look for Nix files.
 | 
			
		||||
        # root = ./nix;
 | 
			
		||||
 | 
			
		||||
    # Function that generates an attribute by calling a function you pass to it
 | 
			
		||||
    # It takes each system as an argument
 | 
			
		||||
    forAllSystems = nixpkgs.lib.genAttrs systems;
 | 
			
		||||
  in {
 | 
			
		||||
    # My custom packagess
 | 
			
		||||
    packages = forAllSystems (system: import ./pkgs nixpkgs.legacyPackages.${system});
 | 
			
		||||
        # Namespace for this flake's packages, library and overlays.
 | 
			
		||||
        namespace = "puzzlevision";
 | 
			
		||||
 | 
			
		||||
    # External resources (wallpapers, icons, dotfiles)
 | 
			
		||||
    resources = import ./resources;
 | 
			
		||||
 | 
			
		||||
    # My reusable modules for nixos
 | 
			
		||||
    nixosModules = import ./modules/nixos;
 | 
			
		||||
 | 
			
		||||
    # My reusable modules for home-manager
 | 
			
		||||
    homeManagerModules = import ./modules/home-manager;
 | 
			
		||||
 | 
			
		||||
    # NixOS configuration entrypoint
 | 
			
		||||
    # Available through 'nixos-rebuild --flake .#your-hostname'
 | 
			
		||||
    nixosConfigurations = {
 | 
			
		||||
      puzzlevision = nixpkgs.lib.nixosSystem {
 | 
			
		||||
        specialArgs = {inherit inputs outputs;};
 | 
			
		||||
        modules = [
 | 
			
		||||
          home-manager.nixosModules.home-manager
 | 
			
		||||
          ./hosts/puzzlevision/configuration.nix
 | 
			
		||||
        ];
 | 
			
		||||
        meta = {
 | 
			
		||||
          name = "jos-nixos-configuration"; # Used in certain places, like documentations. No spaces.
 | 
			
		||||
          title = "Jo's NixOS configuration"; # Basically just for decorational purposes.
 | 
			
		||||
        };
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
    # Standalone home-manager configuration entrypoint
 | 
			
		||||
    # Available through 'home-manager --flake .#your-username@your-hostname'
 | 
			
		||||
    homeConfigurations = {
 | 
			
		||||
      "jo@puzzlevision" = home-manager.lib.homeManagerConfiguration {
 | 
			
		||||
        pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
 | 
			
		||||
        extraSpecialArgs = {inherit inputs outputs;};
 | 
			
		||||
        modules = [
 | 
			
		||||
          ./users/jo/home.nix
 | 
			
		||||
      channels-config = {
 | 
			
		||||
        allowUnfree = true; # Allow unfree packages.
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      # Apply some home-manager modules globally.
 | 
			
		||||
      homes.modules = with inputs; [
 | 
			
		||||
        nix-flatpak.homeManagerModules.nix-flatpak
 | 
			
		||||
      ];
 | 
			
		||||
 | 
			
		||||
      homes.users."jo@puzzlevision".modules = with inputs; [
 | 
			
		||||
        catppuccin.homeManagerModules.catppuccin
 | 
			
		||||
      ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
      "work@puzzlevision" = home-manager.lib.homeManagerConfiguration {
 | 
			
		||||
        pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
 | 
			
		||||
        extraSpecialArgs = {inherit inputs outputs;};
 | 
			
		||||
        modules = [
 | 
			
		||||
          ./users/work/home.nix
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
 | 
			
		||||
      "gaming@puzzlevision" = home-manager.lib.homeManagerConfiguration {
 | 
			
		||||
        pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance
 | 
			
		||||
        extraSpecialArgs = {inherit inputs outputs;};
 | 
			
		||||
        modules = [
 | 
			
		||||
          ./users/gaming/home.nix
 | 
			
		||||
        ];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										70
									
								
								homes/x86_64-linux/jo@puzzlevision/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								homes/x86_64-linux/jo@puzzlevision/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,70 @@
 | 
			
		|||
{
 | 
			
		||||
  # Snowfall Lib provides a customized `lib` instance with access to your flake's library
 | 
			
		||||
  # as well as the libraries available from your flake's inputs.
 | 
			
		||||
  lib,
 | 
			
		||||
  # Instance of `pkgs` with overlays and custom packages applied.
 | 
			
		||||
  pkgs,
 | 
			
		||||
  # All flake inputs.
 | 
			
		||||
  inputs,
 | 
			
		||||
 | 
			
		||||
  # Additional metadata, provided by Snowfall Lib.
 | 
			
		||||
  namespace, # The flake namespace, set in flake.nix. If not set, defaults to "internal".
 | 
			
		||||
  home, # The home architecture for this host (eg. `x86_64-linux`).
 | 
			
		||||
  target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
 | 
			
		||||
  format, # A normalized name for the home target (eg. `home`).
 | 
			
		||||
  virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
 | 
			
		||||
  host, # The host name for this home.
 | 
			
		||||
 | 
			
		||||
  # All other arguments come from the home home.
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
    inputs.homeModules.themes.catppuccin
 | 
			
		||||
    inputs.homeModules.themes.catppuccin.gnome
 | 
			
		||||
    inputs.homeModules.development.ssh
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  # Flatpak configuration.
 | 
			
		||||
  services.flatpak = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    update.auto.enable = true;
 | 
			
		||||
    uninstallUnmanaged = true;
 | 
			
		||||
 | 
			
		||||
    packages = [
 | 
			
		||||
      "com.jeffser.Alpaca"
 | 
			
		||||
    ];
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Declare user packages.
 | 
			
		||||
  home.packages = with pkgs; [
 | 
			
		||||
    ### General
 | 
			
		||||
    qflipper
 | 
			
		||||
    wineWowPackages.waylandFull
 | 
			
		||||
    vesktop
 | 
			
		||||
    lunar-client
 | 
			
		||||
    steam
 | 
			
		||||
    g4music
 | 
			
		||||
 | 
			
		||||
    ### Development
 | 
			
		||||
    avra
 | 
			
		||||
    avrdude
 | 
			
		||||
    jetbrains.phpstorm
 | 
			
		||||
    git
 | 
			
		||||
    nodejs_22
 | 
			
		||||
    bun
 | 
			
		||||
    kitty
 | 
			
		||||
    forge-sparks
 | 
			
		||||
    devenv
 | 
			
		||||
 | 
			
		||||
    ### Work
 | 
			
		||||
    teams-for-linux
 | 
			
		||||
    enpass
 | 
			
		||||
 | 
			
		||||
    ### Notes & Organisation
 | 
			
		||||
    obsidian
 | 
			
		||||
 | 
			
		||||
    ### Backups & Synchronization
 | 
			
		||||
    celeste
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										48
									
								
								modules/home/development/ssh/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								modules/home/development/ssh/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,48 @@
 | 
			
		|||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
 | 
			
		||||
  namespace, # The flake namespace, set in flake.nix. If not set, defaults to "internal".
 | 
			
		||||
  home, # The home architecture for this host (eg. `x86_64-linux`).
 | 
			
		||||
  target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
 | 
			
		||||
  format, # A normalized name for the home target (eg. `home`).
 | 
			
		||||
  virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
 | 
			
		||||
  host, # The host name for this home.
 | 
			
		||||
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}: let
 | 
			
		||||
  sshDir = "${config.home.homeDirectory}/.ssh";
 | 
			
		||||
in {
 | 
			
		||||
  home.packages = with pkgs; [
 | 
			
		||||
    openssh
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  programs.ssh = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    extraConfig = ''
 | 
			
		||||
      AddKeysToAgent yes
 | 
			
		||||
    '';
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  matchBlocks = {
 | 
			
		||||
    "github.com" = {
 | 
			
		||||
      identityFile = "${sshDir}/id_ed25519";
 | 
			
		||||
      identitiesOnly = true;
 | 
			
		||||
      user = "git";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    "gitlab.com" = {
 | 
			
		||||
      identityFile = "${sshDir}/id_ed25519";
 | 
			
		||||
      identitiesOnly = true;
 | 
			
		||||
      user = "git";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    "bitbucket.org" = {
 | 
			
		||||
      identityFile = "${sshDir}/id_ed25519";
 | 
			
		||||
      identitiesOnly = true;
 | 
			
		||||
      user = "git";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										25
									
								
								modules/home/themes/catppuccin/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								modules/home/themes/catppuccin/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,25 @@
 | 
			
		|||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
 | 
			
		||||
  namespace, # The flake namespace, set in flake.nix. If not set, defaults to "internal".
 | 
			
		||||
  home, # The home architecture for this host (eg. `x86_64-linux`).
 | 
			
		||||
  target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
 | 
			
		||||
  format, # A normalized name for the home target (eg. `home`).
 | 
			
		||||
  virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
 | 
			
		||||
  host, # The host name for this home.
 | 
			
		||||
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  catppuccin = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    accent = "blue";
 | 
			
		||||
    flavor = "frappe";
 | 
			
		||||
 | 
			
		||||
    pointerCursor.enable = true;
 | 
			
		||||
    pointerCursor.accent = "blue";
 | 
			
		||||
    pointerCursor.flavor = "frappe";
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										54
									
								
								modules/home/themes/catppuccin/gnome/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								modules/home/themes/catppuccin/gnome/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,54 @@
 | 
			
		|||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
 | 
			
		||||
  namespace, # The flake namespace, set in flake.nix. If not set, defaults to "internal".
 | 
			
		||||
  home, # The home architecture for this host (eg. `x86_64-linux`).
 | 
			
		||||
  target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
 | 
			
		||||
  format, # A normalized name for the home target (eg. `home`).
 | 
			
		||||
  virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
 | 
			
		||||
  host, # The host name for this home.
 | 
			
		||||
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  gtk = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
 | 
			
		||||
    font = {
 | 
			
		||||
      name = "Cantarell";
 | 
			
		||||
      size = 12;
 | 
			
		||||
      package = pkgs.cantarell-fonts;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    catppuccin = {
 | 
			
		||||
      icon = {
 | 
			
		||||
        enable = true;
 | 
			
		||||
        accent = "blue";
 | 
			
		||||
        flavor = "frappe";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    theme = {
 | 
			
		||||
      name = "Colloid-Dark-Catppuccin";
 | 
			
		||||
      package = pkgs.colloid-gtk-theme.override {
 | 
			
		||||
        themeVariants = ["default"];
 | 
			
		||||
        colorVariants = ["dark"];
 | 
			
		||||
        sizeVariants = ["standard"];
 | 
			
		||||
        tweaks = ["catppuccin"];
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  dconf.settings = {
 | 
			
		||||
    "org/gnome/desktop/background" = {
 | 
			
		||||
      picture-uri = lib.snowfall.fs.get-file "resources/wallpapers/pond_sidewalk_dusk.jpg";
 | 
			
		||||
      picture-uri-dark = lib.snowfall.fs.get-file "resources/wallpapers/pond_sidewalk_dusk.jpg";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    "org/gnome/shell/extensions/user-theme" = {
 | 
			
		||||
      name = "Colloid-Dark-Catppuccin";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										48
									
								
								modules/nixos/common/gnome/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								modules/nixos/common/gnome/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,48 @@
 | 
			
		|||
{
 | 
			
		||||
  lib,
 | 
			
		||||
  pkgs,
 | 
			
		||||
  inputs,
 | 
			
		||||
 | 
			
		||||
  namespace, # The flake namespace, set in flake.nix. If not set, defaults to "internal".
 | 
			
		||||
  system, # The system architecture for this host (eg. `x86_64-linux`).
 | 
			
		||||
  target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
 | 
			
		||||
  format, # A normalized name for the system target (eg. `iso`).
 | 
			
		||||
  virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
 | 
			
		||||
  systems, # An attribute map of your defined hosts.
 | 
			
		||||
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  # Enable GNOME and GDM.
 | 
			
		||||
  services.xserver.displayManager.gdm.enable = true;
 | 
			
		||||
  services.xserver.desktopManager.gnome.enable = true;
 | 
			
		||||
 | 
			
		||||
  environment.gnome.excludePackages =  (with pkgs; [
 | 
			
		||||
    gnome-tour
 | 
			
		||||
    gedit
 | 
			
		||||
    cheese
 | 
			
		||||
    geary
 | 
			
		||||
  ]) ++ (with pkgs.gnome; [
 | 
			
		||||
    gnome-music
 | 
			
		||||
    epiphany # Gnome web
 | 
			
		||||
    tali # Poker game
 | 
			
		||||
    iagno # Go game
 | 
			
		||||
    hitori # Sudoku game
 | 
			
		||||
    yelp # Help view
 | 
			
		||||
    gnome-contacts
 | 
			
		||||
    gnome-initial-setup
 | 
			
		||||
  ]);
 | 
			
		||||
 | 
			
		||||
  programs.dconf.enable = true;
 | 
			
		||||
 | 
			
		||||
  services.gnome.gnome-keyring.enable = true;
 | 
			
		||||
 | 
			
		||||
  programs.kdeconnect = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    package = pkgs.gnomeExtensions.gsconnect;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    gnome.gnome-tweaks
 | 
			
		||||
  ];
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								resources/wallpapers/pond_sidewalk_dusk.jpg
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								resources/wallpapers/pond_sidewalk_dusk.jpg
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.1 MiB  | 
							
								
								
									
										177
									
								
								systems/x86_64-linux/puzzlevision/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										177
									
								
								systems/x86_64-linux/puzzlevision/default.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,177 @@
 | 
			
		|||
{
 | 
			
		||||
  # Snowfall Lib provides a customized `lib` instance with access to your flake's library
 | 
			
		||||
  # as well as the libraries available from your flake's inputs.
 | 
			
		||||
  lib,
 | 
			
		||||
  # Instance of `pkgs` with overlays and custom packages applied.
 | 
			
		||||
  pkgs,
 | 
			
		||||
  # All flake inputs.
 | 
			
		||||
  inputs,
 | 
			
		||||
 | 
			
		||||
  # Additional metadata, provided by Snowfall Lib.
 | 
			
		||||
  namespace, # The flake namespace, set in flake.nix. If not set, defaults to "internal".
 | 
			
		||||
  system, # The system architecture for this host (eg. `x86_64-linux`).
 | 
			
		||||
  target, # The Snowfall Lib target for this system (eg. `x86_64-iso`).
 | 
			
		||||
  format, # A normalized name for the system target (eg. `iso`).
 | 
			
		||||
  virtual, # A boolean to determine whether this system is a virtual target using nixos-generators.
 | 
			
		||||
  systems, # An attribute map of your defined hosts.
 | 
			
		||||
 | 
			
		||||
  # All other arguments come from the system system.
 | 
			
		||||
  config,
 | 
			
		||||
  ...
 | 
			
		||||
}: {
 | 
			
		||||
  imports = [
 | 
			
		||||
    ./hardware-configuration.nix
 | 
			
		||||
    inputs.hardware.nixosModules.common-pc-laptop
 | 
			
		||||
    inputs.hardware.nixosModules.common-cpu-intel
 | 
			
		||||
    inputs.hardware.nixosModules.common-pc-laptop-ssd
 | 
			
		||||
    # FIXME(@jo): Remember to take a look at how module imports work in Snowfall Lib.
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  nix = {
 | 
			
		||||
    # Add flake inputs as registries.
 | 
			
		||||
    # Keeps nix3 commands consistent with flake.
 | 
			
		||||
    registry = lib.mapAttrs (_: value: {flake = value;});
 | 
			
		||||
 | 
			
		||||
    # Add inputs to system's legacy channels.
 | 
			
		||||
    # Makes legacy nix commands consistent with flake as well.
 | 
			
		||||
    nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
 | 
			
		||||
 | 
			
		||||
    settings = {
 | 
			
		||||
      auto-optimise-store = true;
 | 
			
		||||
      builders-use-substitutes = true;
 | 
			
		||||
      experimental-features = [ "nix-command" "flakes" "repl-flake" ];
 | 
			
		||||
      keep-derivations = true;
 | 
			
		||||
      keep-outputs = true;
 | 
			
		||||
      max-jobs = "auto";
 | 
			
		||||
      warn-dirty = false;
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    # Garbage collection configuration.
 | 
			
		||||
    gc = {
 | 
			
		||||
      automatic = true;
 | 
			
		||||
      dates = "daily";
 | 
			
		||||
      options = "--delete-older-than 3d";
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Set hostname
 | 
			
		||||
  networking.hostName = "puzzlevision";
 | 
			
		||||
 | 
			
		||||
  # Enable networking through networkmanager (required for most desktop environments).
 | 
			
		||||
  networking.networkmanager.enable = true;
 | 
			
		||||
 | 
			
		||||
  boot = {
 | 
			
		||||
    # Always run the latest kernel.
 | 
			
		||||
    kernelPackages = pkgs.linuxPackages_latest;
 | 
			
		||||
 | 
			
		||||
    # Configure additional kernel modules.
 | 
			
		||||
    extraModulePackages = [
 | 
			
		||||
      pkgs.linuxPackages_latest.rtl8821ce # Use custom network-card driver.
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    blacklistedKernelModules = [
 | 
			
		||||
      "rtw88_8821ce" # Block the default network-card driver.
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    # Grub configuration.
 | 
			
		||||
    loader.grub = {
 | 
			
		||||
      enable = true;
 | 
			
		||||
      devices = [ "nodev" ];
 | 
			
		||||
      efiInstallAsRemovable = true;
 | 
			
		||||
      efiSupport = true;
 | 
			
		||||
 | 
			
		||||
      extraEntries = ''
 | 
			
		||||
        menuentry "Reboot" {
 | 
			
		||||
          reboot
 | 
			
		||||
        }
 | 
			
		||||
        menuentry "Poweroff" {
 | 
			
		||||
          halt
 | 
			
		||||
        }
 | 
			
		||||
      '';
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Set timezone.
 | 
			
		||||
  time.timeZone = "Europe/Berlin";
 | 
			
		||||
 | 
			
		||||
  # Internationalisation properties.
 | 
			
		||||
  i18n.defaultLocale = "en_US.UTF-8";
 | 
			
		||||
  i18n.extraLocaleSettings = {
 | 
			
		||||
    LC_ADDRESS = "de_DE.UTF-8";
 | 
			
		||||
    LC_IDENTIFICATION = "de_DE.UTF-8";
 | 
			
		||||
    LC_MEASUREMENT = "de_DE.UTF-8";
 | 
			
		||||
    LC_MONETARY = "de_DE.UTF-8";
 | 
			
		||||
    LC_NAME = "de_DE.UTF-8";
 | 
			
		||||
    LC_NUMERIC = "de_DE.UTF-8";
 | 
			
		||||
    LC_PAPER = "de_DE.UTF-8";
 | 
			
		||||
    LC_TELEPHONE = "de_DE.UTF-8";
 | 
			
		||||
    LC_TIME = "de_DE.UTF-8";
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Set console keymap.
 | 
			
		||||
  console.keyMap = "de";
 | 
			
		||||
 | 
			
		||||
  # Enable the power-profiles-daemon service for improved battery management.
 | 
			
		||||
  services.power-profiles-daemon.enable = true;
 | 
			
		||||
 | 
			
		||||
  # Enable printing.
 | 
			
		||||
  services.printing.enable = true;
 | 
			
		||||
 | 
			
		||||
  # Sound configuration based on pipewire.
 | 
			
		||||
  hardware.pulseaudio.enable = false;
 | 
			
		||||
  security.rtkit.enable = true;
 | 
			
		||||
  services.pipewire = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    alsa.enable = true;
 | 
			
		||||
    alsa.support32Bit = true;
 | 
			
		||||
    pulse.enable = true;
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Bluetooth configuration.
 | 
			
		||||
  hardware.bluetooth = {
 | 
			
		||||
    enable = true;
 | 
			
		||||
    powerOnBoot = true;
 | 
			
		||||
    package = pkgs.bluez;
 | 
			
		||||
 | 
			
		||||
    settings = {
 | 
			
		||||
      General = {
 | 
			
		||||
        ControllerMode = "dual";
 | 
			
		||||
        FastConnectable = "true";
 | 
			
		||||
        Experimental = "true";
 | 
			
		||||
        KernelExperimental = "true";
 | 
			
		||||
      };
 | 
			
		||||
    };
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
  # Enable flatpak support.
 | 
			
		||||
  services.flatpak.enable = true;
 | 
			
		||||
 | 
			
		||||
  # Enable iio-sensor for automatic screen rotation and similar features.
 | 
			
		||||
  hardware.sensor.iio.enable = true;
 | 
			
		||||
 | 
			
		||||
  # Configure system-wide default shell.
 | 
			
		||||
  environment.shells = with pkgs; [ zsh ];
 | 
			
		||||
  users.defaultUserShell = pkgs.zsh;
 | 
			
		||||
  programs.zsh.enable = true;
 | 
			
		||||
 | 
			
		||||
  # Configure users.
 | 
			
		||||
  snowfallorg.users.jo.admin = true;
 | 
			
		||||
 | 
			
		||||
  # Provide users with some sane default packages.
 | 
			
		||||
  environment.systemPackages = with pkgs; [
 | 
			
		||||
    ### General
 | 
			
		||||
    nano
 | 
			
		||||
    firefox
 | 
			
		||||
    vlc
 | 
			
		||||
    spotify
 | 
			
		||||
 | 
			
		||||
    ### Bluetooth
 | 
			
		||||
    bluez
 | 
			
		||||
 | 
			
		||||
    ### Fonts
 | 
			
		||||
    noto-fonts
 | 
			
		||||
    noto-fonts-color-emoji
 | 
			
		||||
  ];
 | 
			
		||||
 | 
			
		||||
  system.stateVersion = "24.05";
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										68
									
								
								systems/x86_64-linux/puzzlevision/hardware-configuration.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								systems/x86_64-linux/puzzlevision/hardware-configuration.nix
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,68 @@
 | 
			
		|||
# 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.
 | 
			
		||||
{ config, lib, pkgs, modulesPath, ... }:
 | 
			
		||||
 | 
			
		||||
{
 | 
			
		||||
  imports =
 | 
			
		||||
    [ (modulesPath + "/installer/scan/not-detected.nix")
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
  boot.initrd.availableKernelModules = [ "xhci_pci" "vmd" "nvme" "usbhid" "rtsx_pci_sdmmc" ];
 | 
			
		||||
  boot.initrd.kernelModules = [ ];
 | 
			
		||||
  boot.kernelModules = [ "kvm-intel" ];
 | 
			
		||||
  boot.extraModulePackages = [ ];
 | 
			
		||||
 | 
			
		||||
  fileSystems."/" =
 | 
			
		||||
    { device = "/dev/disk/by-uuid/864b1287-89fd-4cc0-98a5-40a3caf804c6";
 | 
			
		||||
      fsType = "btrfs";
 | 
			
		||||
      options = [ "subvol=@" ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  boot.initrd.luks.devices."luks-5fd4fc76-d5c5-46c3-b952-1a7a7ff3a1fc".device = "/dev/disk/by-uuid/5fd4fc76-d5c5-46c3-b952-1a7a7ff3a1fc";
 | 
			
		||||
 | 
			
		||||
  fileSystems."/var/lib/docker/btrfs" =
 | 
			
		||||
    { device = "/@/@/var/lib/docker/btrfs";
 | 
			
		||||
      fsType = "none";
 | 
			
		||||
      options = [ "bind" ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/boot" =
 | 
			
		||||
    { device = "/dev/disk/by-uuid/2429-4141";
 | 
			
		||||
      fsType = "vfat";
 | 
			
		||||
      options = [ "fmask=0022" "dmask=0022" ];
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/var/lib/docker/overlay2/eec00b6d746d533d213790aa0c8e5cca329148c50c0ab1b035020d27e218ed16/merged" =
 | 
			
		||||
    { device = "overlay";
 | 
			
		||||
      fsType = "overlay";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  fileSystems."/var/lib/docker/overlay2/bc060caf80f8891cd68f21563b8ece131b24b28772c2971a703bac1f5b54e8d1/merged" =
 | 
			
		||||
    { device = "overlay";
 | 
			
		||||
      fsType = "overlay";
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
  swapDevices = [ ];
 | 
			
		||||
 | 
			
		||||
  # 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
 | 
			
		||||
  # still possible to use this option, but it's recommended to use it in conjunction
 | 
			
		||||
  # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
 | 
			
		||||
  networking.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.br-01571e4eda2f.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.br-20785fae249b.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.br-64a49a5722c1.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.br-71e5fc5962fc.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.br-7df9905783da.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.br-9b746f4e7e2f.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.br-e2f470a56dfe.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.docker0.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.enp0s13f0u4u4.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.veth4e96b46.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.veth96a5ccd.useDHCP = lib.mkDefault true;
 | 
			
		||||
  # networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
 | 
			
		||||
 | 
			
		||||
  nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
 | 
			
		||||
  hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue