diff options
author | aszlig <aszlig@redmoonstudios.org> | 2015-03-18 01:37:41 +0100 |
---|---|---|
committer | aszlig <aszlig@redmoonstudios.org> | 2015-03-18 01:42:55 +0100 |
commit | 2b8256b060f1c2fd635e92749d167d9a57268212 (patch) | |
tree | 211ae22d25aaa9cecc6a7d261737f53335cc1e7b /machines/aszlig/dnyarri.nix | |
parent | 174317d1489b72687df8559a9cc02ca068e2ba0c (diff) |
machines: Move own machines into machines/aszlig.
Introduces callMachine in machines/default.nix, which returns an attribute set containing the (input) configuration and also a build attribute containing the output configuration and thus also the builds. However, we still have references to ../../common-workstation.nix which we need to refactor very soon. Signed-off-by: aszlig <aszlig@redmoonstudios.org>
Diffstat (limited to 'machines/aszlig/dnyarri.nix')
-rw-r--r-- | machines/aszlig/dnyarri.nix | 145 |
1 files changed, 145 insertions, 0 deletions
diff --git a/machines/aszlig/dnyarri.nix b/machines/aszlig/dnyarri.nix new file mode 100644 index 00000000..0547059e --- /dev/null +++ b/machines/aszlig/dnyarri.nix @@ -0,0 +1,145 @@ +{ pkgs, ... }: + +with pkgs.lib; +with import ../../lib; + +{ + imports = singleton ../../common-workstation.nix; + + nix.maxJobs = 8; + + boot = let + patch51Name = "patch51.fw"; + kernelParams = [ "snd-hda-intel.patch=${patch51Name}" ]; + + patch51 = pkgs.writeText patch51Name '' + [codec] + 0x10ec0889 0x80860033 2 + + [pincfg] + 0x11 0x01442130 + 0x12 0x411111f0 + 0x14 0x01014410 + 0x15 0x0321403f + 0x16 0x40f000f0 + 0x17 0x40f000f0 + 0x18 0x03a19020 + 0x19 0x40f000f0 + 0x1a 0x01014412 + 0x1b 0x01014411 + 0x1c 0x411111f0 + 0x1d 0x411111f0 + 0x1e 0x01451140 + 0x1f 0x01c51170 + + [model] + auto + ''; + + radeonFW = [ + "radeon/R600_rlc.bin" + "radeon/R700_rlc.bin" + "radeon/RV710_uvd.bin" + "radeon/RV710_smc.bin" + "radeon/RV730_smc.bin" + ]; + + linuxVuizvui = pkgs.buildLinux { + inherit (pkgs.kernelSourceVuizvui) version src; + + kernelPatches = singleton pkgs.vuizvuiKernelPatches.bfqsched; + configfile = pkgs.substituteAll { + name = "vuizvui-with-firmware.kconf"; + src = generateKConf (import ./dnyarri-kconf.nix); + + extra_firmware = concatStringsSep " " (radeonFW ++ [ + "patch51.fw" + ]); + + builtin_firmware = pkgs.stdenv.mkDerivation { + name = "builtin-firmware"; + buildCommand = let + firmwareBasePath = "${pkgs.firmwareLinuxNonfree}/lib/firmware"; + in '' + mkdir -p "$out/radeon" + ${concatMapStrings (x: '' + cp -Lv -t "$out/radeon" "${firmwareBasePath}/${x}"; + '') radeonFW} + + cp "${patch51}" "$out/${patch51Name}" + ''; + }; + }; + allowImportFromDerivation = true; # XXX + }; + in rec { + kernelPackages = let + kpkgs = pkgs.recurseIntoAttrs + (pkgs.linuxPackagesFor linuxVuizvui kernelPackages); + virtualbox = kpkgs.virtualbox.override { + enableExtensionPack = true; + }; + in pkgs.recurseIntoAttrs (kpkgs // { inherit virtualbox; }); + inherit kernelParams; + + initrd = { + mdadmConf = '' + ARRAY /dev/md0 metadata=1.2 UUID=f5e9de04:89efc509:4e184fcc:166b0b67 + ARRAY /dev/md1 metadata=0.90 UUID=b85aa8be:cea0faf2:7abcbee8:eeae037b + ''; + luks.devices = [ + { name = "system_crypt"; + device = "/dev/md1"; + preLVM = true; + } + ]; + }; + + loader.grub.devices = [ + "/dev/disk/by-id/ata-ST31500541AS_5XW0AMNH" + "/dev/disk/by-id/ata-ST31500541AS_6XW0M217" + ]; + }; + + networking.hostName = "dnyarri"; + + fileSystems = { + "/boot" = { + label = "boot"; + fsType = "ext2"; + }; + "/" = { + device = "/dev/shofixti/root"; + fsType = "xfs"; + }; + }; + + powerManagement.powerUpCommands = '' + ${pkgs.hdparm}/sbin/hdparm -B 255 /dev/disk/by-id/ata-ST31500541AS_5XW0AMNH + ${pkgs.hdparm}/sbin/hdparm -B 255 /dev/disk/by-id/ata-ST31500541AS_6XW0M217 + ''; + + swapDevices = singleton { + device = "/dev/shofixti/swap"; + }; + + # TODO: Try to avoid this, but as there is only a single user using audio on + # this machine, it's okay for now. But remember that this will break heavily, + # should there be another user accessing the audio devices. + users.extraUsers.aszlig.extraGroups = [ "audio" "vboxusers" ]; + + services.synergy.client.enable = true; + services.synergy.client.serverAddress = "mmrnmhrm"; + + systemd.services."synergy-client".serviceConfig.CPUSchedulingPolicy = "rr"; + systemd.services."synergy-client".serviceConfig.CPUSchedulingPriority = 50; + + services.xserver.videoDrivers = [ "ati" ]; + services.xserver.xrandrHeads = [ "HDMI-0" "DVI-0" ]; + + vuizvui.i3.reverseHeads = true; + vuizvui.i3.workspaces."6" = { + label = "Chromium"; + assign = singleton { class = "^Chromium(?:-browser)?\$"; }; + }; +} |